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