2011-02-22 16 views
3

我有一个应用程序,它是一个使用.NET 2.0编写的asmx Web服务,其中包含一些业务逻辑和一个存储库。临时使用WCF服务的asm​​x Web服务

该计划是,该Web服务将作为希望保存和检索数据的应用程序的API。

长期来看,我知道当.NET 2.0代码库被重构并成为.NET 4代码库时,Web服务很可能会被W​​CF服务替代。

为了减少API对消费者的影响,我正在考虑将一个WCF服务作为一个门面放在asmx服务上是否是一个好主意。这将保留在.NET 2.0代码重构的地方。当没有.NET 2.0代码时,asmx服务将消失,WCF服务将以没有asmx服务的方式与业务逻辑进行通信。

我的问题是

这会导致什么样的性能开销?

是否有更好的解决方案来解决这个问题?

回答

1

我看了你的问题,因为

此链接“可我从.NET 4 WCF服务引用的.Net 2.0组件” confirms

.NET Framework 4的是应用程序的向后兼容是使用.NET Framework 1.1,2.0,3.0和3.5版本构建,换句话说,使用.NET Framework早期版本构建的应用程序和组件可以在.NET Framework 4上工作。

+0

非常好 - 所以我可以直接跳过编写Web服务并编写一个使用.NET 2组件的WCF服务。谢谢。 – Fenton

2

您将为附加服务层支付双重序列化/反序列化惩罚。如果你的信息很小,这将不会那么明显。

您可能想要使用BasicHttpBinding部署相同服务的WCF版本。这样,你得到两全其美的:

  • 该服务被部署在使用WCF一个地方(并且仍然可以到旧版客户端)
  • 可以使用不同的绑定暴露额外的端点,如果你想为新的代码。

编辑:当然,你可以只挂钩你的新代码使用基于WCF代理的旧代码。只要你保持命名相同,你以后的服务重构不应该太痛苦。

+0

感谢您的回答。 ..如果没有它下面的Web服务,我会很高兴实现一个WCF服务WCF服务可能在它下面的.NET 2代码中生存(有一段时间)。这是你使用基于WCF的代理的意思吗?如果是这样,你可以扩展,因为我宁愿不加倍序列化成本。 – Fenton

+0

是的,基本上我说的一个选择就是将旧服务完全保留原样,但只是为它们创建WCF客户端。在Visual Studio中,您有两个选项 - 创建新的WCF客户端(又名服务引用)或旧的“Web引用”。从理论上讲,如果您保持webMethods和类的相同,那么当您最终重写WCF中的服务时,您的代码不会有机会。 – RQDQ