将版本添加到WSDL

时间:2013-01-14 22:38:18

标签: wsdl

这个问题看起来很简单,但我找不到在WSDL文档中为其定义设置版本的适当位置。

目标是能够轻松查看它何时变得过时,以及将来我更新它。

我要把它设置为1.0。如果将来我添加一个新操作,我将其设置为1.1。然后,如果有人拥有1.0版本,很容易看到它缺少该操作定义并请求更新它。

1 个答案:

答案 0 :(得分:3)

首先要意识到的是,新版本的服务可以被视为一项新服务。相似但不同。然后问题变为“如果服务类似,如何最小化重复”。

对于版本控制,您可以在用于请求/的类型的根节点上使用命名空间声明(例如targetNamespace="mynamespace/1.0")或<version>1.0</version>标记(或version="1.0"属性)回复消息)。

使用命名空间最有可能意味着一个实现只能提供一个版本的服务。如果您希望某个实现服务,比如版本1.0-1.3和另一个1.3+,那么您可能会使用<version/>方法(或@version),因为在这种情况下只有一个命名空间。根据{{​​1}}的值,实现可以在内部决定是否处理或拒绝。

在更混合的服务环境中,您可以使用<version/>方法创建一个代理实现,该实现将中继到使用<version/>方法的服务。如果你有一个可供使用的话,最好还是使用UDDI。

请考虑您的更改的向后兼容性。如您所知,添加操作完全向后兼容。如果您的版本1.0上有客户端X,并向您的服务器添加操作(现在为1.1),则X仍然可以调用服务器,因为X知道的所有操作仍然可用。 (如果您没有更改名称空间以反映版本(使用targetNamespace)。接口的(缺少)向后兼容性通常反映在更改的主要版本号中(例如1.1 - > 2.0) ,这可能会让您意识到您可以使用<version/>标记对名称空间和次要名称进行重大更改。

玩得开心,这是有趣的事情!