【发布时间】:2010-08-19 05:38:19
【问题描述】:
我有三个 WCF 服务 (.svc),它们为 SOAP 消息生成 .wsdl 引用。
假设命名空间的一部分需要针对所有 ServiceContract、OperationContract、DataContract 属性进行更改,例如
[DataContract(Namespace = "http://old.com.au/types/")]
到
[DataContract(Namespace = "http://new.com.au/types/")]
为什么我仍然可以支持具有旧服务引用的客户(无需他们更新,因为他们可能没有时间立即更新)并允许客户获取新服务引用以获取新服务引用命名空间? 没有任何服务在改变,只是命名空间。
到目前为止,我已经阅读了很多内容,但以下文章建议可以从 ServiceHostFactory 更改服务类型:http://blog.ranamauro.com/2008/07/hosting-wcf-service-on-iis-site-with_25.html
这意味着创建每个合约中的两个(将尽可能多的实现放在一个地方),并在运行时确定要使用的服务类型。这会在我的场景中造成一些混乱。
问。是否有替代的好方法来完成此操作,或者是否期望不应执行此类操作,并且客户端会更新到新的命名空间。
(如果客户端的命名空间不匹配,我会收到错误消息:由于 ContractFilter 不匹配,接收方无法处理带有操作“...”的消息)
【问题讨论】:
标签: wcf versioning xml-namespaces