【问题标题】:how to keep DRY when moving from ASMX Web Services to WCF从 ASMX Web 服务迁移到 WCF 时如何保持 DRY
【发布时间】:2012-03-14 11:41:16
【问题描述】:

使用 .NET Framework 3.5 C#,我正在从基于 SOAP 的 Web 服务转移到基于 JSON 的 WCF 服务。我所有的 Web 服务都派生自一个通用 ServiceBase 类,它具有会话验证、客户端身份验证、数据库连接、日志记录等通用功能共同任务

base.InitCallThread()

Q1:为了避免编写数百行重复代码,在 WCF 中做相同或相似的最佳方法是什么?

Q2:如果我要同时支持基于 SOAP 的 Web 服务和基于 JSON 的 WCF 服务的相同接口,那么共享相同通用功能的最佳方式是什么?我想这两者可以共享 http 会话吗?

【问题讨论】:

    标签: wcf web-services dry


    【解决方案1】:

    您应该将基类代码重构为一个单独的类。在你的 ASMX 服务中从基类中调用那个单独的类;在 WCF 服务中,从每个单独的服务调用它,或使用其中一种 WCF 扩展机制来集中调用它。

    WCF 允许在具有不同绑定的多个端点上公开相同的服务。您可以使用 basicHttpBinding 为 SOAP 公开相同的 WCF 服务,同时为 JSON 公开 webHttpBinding

    【讨论】:

      【解决方案2】:

      Q1:您可以从具有与以前一样的通用功能的同一个 ServiceBase 类派生。 WCF 在这件事上并不限制你。它只需要实现一些接口

      Q2:您可以通过 web.config(或编程)配置定义多个绑定。

      【讨论】:

      • 对不起,我应该提到这一点,但我不能从同一个 ServiceBase 类派生,因为我的 ServiceBase 类派生自 System.Web.Services.WebService,除非我找到一个可以共享的公共基类 b /w WS 和 WCF。
      • 如果您不想更改现有代码,则派生的替代方法是组合。
      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      相关资源
      最近更新 更多