2012-01-09 30 views
8

我们希望有一个设置,在将我们的Web服务部署到暂存服务器时,如果通过将WSDL合同与我们的生产站点的WSDL进行比较,我们会得到通知。如何检测WSDL合同中的重大更改?

是否有任何工具或服务可以帮助您做到这一点?

尝试Membrane WSDL comparer但尝试它的时候了:)

+0

你认为什么是非破坏性改变?对现有WSDL结构的任何更改都可能会对使用它的任何程序产生影响。因此,一个不间断的变化是增加了一个新的功能,和/或改变现有的结构,而不是在系统中使用任何程序(是否可以提供用于回答问题的代码部分)? – 2012-01-09 09:15:21

+0

也许破坏性更改的定义并不清楚,因为它取决于客户机如何使用该服务。不过,我期望例如添加新操作不会破坏任何客户端,但重命名操作/类型/参数正在发生重大变化。理想情况下,一个工具可以列出合同的变更,然后我们可以决定这些变更是否可以接受。总体目标是避免释放对合同的意外更改,例如,如果有人重新命名类型而不知道它是通过Web服务公开的。 – 2012-01-09 10:05:34

+0

@Ira我也问过[这个问题](http://stackoverflow.com/questions/8786935/what-are-considered-non-breaking-or-backwards-compatible-changes-to-a-wsdl-contr)following你的评论。 – 2012-01-09 10:51:20

回答

3

首先这个扔java.lang.StackOverflowError;我不知道有任何这样的工具。

我也回答了“其他”的问题。看看那里发布的指导方针,我会说它应该有可能推出自己的(可能的,不容易的:)。

我在过去做过类似的工作;尽管不适用于WSDL,但适用于另一种方言。我的方法是;

  1. 解析WSDL/Schema作为常规XML(他们都是XML方言本身后)(模式可能会非常棘手虽然)
  2. 建立一个内存模型
  3. 定义规则,并将它们应用

由于构造的数量有限,WSDL部分更容易;架构会很棘手,但我猜还是可行的。