【发布时间】:2011-04-21 08:03:38
【问题描述】:
我们正在就 WCF 的使用以及服务和客户支持的创建进行一些讨论。
目前,我们通过提供我们的服务库客户端的 silverlight 版本来支持 silverlight 客户端,以便我们可以保持使用接口定义的服务合同的强类型。
这没问题,但是使用接口定义服务会使其他客户端感到尴尬,因为 WSDL 有很多方法返回 ArrayOfAnyType 并且一切都只是客户端的对象(可以转换为正确的类型,但是正如我所说,这很尴尬)。
我们可以重写我们的服务以使用显式 DTO 进行消息传输,并使用类似的客户端库重新创建我们的业务对象,这将使我们的服务更具互操作性。
虽然这样做似乎会阻止我们的一些选择,例如使用 EntityFramework 和它提供的自我跟踪实体,因为它们需要在客户端和服务器上共享相同的库并且不能互操作(如果我'搞错了)
似乎在可互操作性和开箱即用的更多功能之间进行权衡,以便更快地开发解决方案。
所以我的问题是,通过决定不可互操作并且仅支持 .net 和 silverlight 客户端(如果支持 silverlight 客户端可以被视为不可互操作),我们可以获得什么优势?我们通过决定互操作来阻止自己使用哪些有用的 .net 功能?
是否有允许这两种解决方案共存的标准技术,因此您可以使用您可用的全部功能支持 .net 客户端,但仍能很好地支持其他非 .net 客户端?
【问题讨论】:
标签: wcf architecture wcf-interoperability