【问题标题】:Temporarily Facading asmx Web Service With WCF Service使用 WCF 服务临时外观 asmx Web 服务
【发布时间】:2011-02-22 15:36:01
【问题描述】:

我有一个应用程序,它是一个用 .NET 2.0 编写的 asmx Web 服务,其中包含一些业务逻辑和位于其下方的存储库。

计划是,此 Web 服务将用作需要其保存和检索数据的应用程序的 API。

从长远来看,我知道当 .NET 2.0 代码库被重构并成为 .NET 4 代码库时,Web 服务很可能会被 WCF 服务取代。

为了减少对 API 使用者的影响,我正在考虑放弃 WCF 服务作为 asmx 服务的外观是否是一个好主意。在重构 .NET 2.0 代码时,这将保持不变。当没有 .NET 2.0 代码时,asmx 服务将消失,WCF 服务将在没有 asmx 服务的情况下与业务逻辑对话。

我的问题是

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

这个问题有更好的解决方案吗?

【问题讨论】:

    标签: .net wcf web-services refactoring


    【解决方案1】:

    您将为额外的服务层支付双倍的序列化/反序列化费用。如果您的消息很小,则不会那么明显。

    您可能希望使用 BasicHttpBinding 部署同一服务的 WCF 版本。这样你就可以两全其美:

    • 该服务正在使用 WCF 部署在一个地方(并且仍然可供旧版客户端使用)
    • 如果需要更新的代码,您可以使用不同的绑定公开其他端点。

    编辑:当然,您可以使用基于 WCF 的代理将新代码连接到旧代码。只要保持名称相同,以后对服务的重构应该不会太痛苦。

    【讨论】:

    • 感谢您的回答...如果 WCF 服务可以与它下面的 .NET 2 代码一起使用,我将非常乐意在没有 Web 服务的情况下实现 WCF 服务(一阵子)。这就是您所说的使用基于 WCF 的代理的意思吗?如果是这样,您能否对此进行扩展,因为我不想将序列化成本加倍。
    • 是的,基本上我的意思是让旧服务保持原样,但只需为它们创建 WCF 客户端。在 Visual Studio 中,您有两个选择 - 创建新的 WCF 客户端(也称为服务参考)或旧的“Web 参考”。从理论上讲,如果您保持 webMethods 和类相同,那么当您最终在 WCF 中重写服务时,您的代码就不必冒险。
    【解决方案2】:

    我将您的问题解读为“我可以从 .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 上运行。

    【讨论】:

    • 非常好 - 所以我可以完全跳过编写 Web 服务并编写使用 .NET 2 组件的 WCF 服务。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2012-04-17
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多