【问题标题】:Advantages of having non interoperable services in WCF?在 WCF 中具有不可互操作的服务的优势?
【发布时间】:2011-04-21 08:03:38
【问题描述】:

我们正在就 WCF 的使用以及服务和客户支持的创建进行一些讨论。

目前,我们通过提供我们的服务库客户端的 silverlight 版本来支持 silverlight 客户端,以便我们可以保持使用接口定义的服务合同的强类型。

这没问题,但是使用接口定义服务会使其他客户端感到尴尬,因为 WSDL 有很多方法返回 ArrayOfAnyType 并且一切都只是客户端的对象(可以转换为正确的类型,但是正如我所说,这很尴尬)。

我们可以重写我们的服务以使用显式 DTO 进行消息传输,并使用类似的客户端库重新创建我们的业务对象,这将使我们的服务更具互操作性。

虽然这样做似乎会阻止我们的一些选择,例如使用 EntityFramework 和它提供的自我跟踪实体,因为它们需要在客户端和服务器上共享相同的库并且不能互操作(如果我'搞错了)

似乎在可互操作性和开箱即用的更多功能之间进行权衡,以便更快地开发解决方案。

所以我的问题是,通过决定不可互操作并且仅支持 .net 和 silverlight 客户端(如果支持 silverlight 客户端可以被视为不可互操作),我们可以获得什么优势?我们通过决定互操作来阻止自己使用哪些有用的 .net 功能?

是否有允许这两种解决方案共存的标准技术,因此您可以使用您可用的全部功能支持 .net 客户端,但仍能很好地支持其他非 .net 客户端?

【问题讨论】:

    标签: wcf architecture wcf-interoperability


    【解决方案1】:

    您可以为此使用外观模式。

    将您当前的逻辑移动到业务层,不要通过 WCF 公开它。

    现在为您希望支持的每个合同创建 2 个 WCF 服务。该层将业务层对象映射到合约对象并调用业务层中的功能。

    然后,您可以为每个客户端的所有逻辑和自定义服务提供一个中心位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 2012-04-12
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多