WCF / WSDL服务版本

时间:2011-06-15 14:05:25

标签: wcf wsdl

我正在寻找一种版本服务的方式。

到目前为止,我们已经建立了松散版本化原则。对于次要版本,我们保持向后兼容性。为了打破变革,我们强制推出一个新的主要版本。

对于主要版本,我们不介意更改服务的名称(我们可以更改命名空间,但我们确定了名称)。

对于次要版本,我们不希望更改名称或命名空间,因为这会破坏依赖旧版次要版本的客户端。

我的问题是:我们怎样才能发现如何实现版本发现呢?在WSDL中似乎没有一个地方可以放置不会违反合同的“信息”。我想要的是一种方法是告诉,对于给定的环境(比如升级与生产),当前部署的服务版本是什么。

WSDL似乎很自然,因为它可以通过HTTP-GET(REST)访问,并且不需要引入非业务SOAP服务操作(例如int GetCurrentVersion())。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

WSDL确实能够包含用于添加文档的“wsdl:document”标记,但是对于程序化访问,您可能需要自定义soap标头。此blog post显示了如何使用自定义标头。 WCF Extras code有一些简洁的行为可以同时执行自定义soap标头和wsdl文档标记。 @marc_s回答this question是另一种方法。

答案 1 :(得分:0)

WSDL没有任何此类功能,但您可以创建自定义行为,例如添加描述合同版本的wsdl:documentation。添加影响WSDL的自定义行为的说明位于my other answer。操纵wsdl:documentation的完整示例位于MSDN