2012-01-09 33 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部分更容易;架構會很棘手,但我猜還是可行的。