2015-06-02 82 views
0

我最近在SOAP Web服務上工作很多,在這方面有一個問題困擾我。什麼會更好?本地WSDL vs從服務器遠程下載?

A.獲取WSDL和本地存儲它的客戶端,然後只撥打電話到服務

  • 如果服務器保持向後兼容的客戶端將仍然使用舊WSDL工作,即使服務器端提供了新的版本(服務和WSDL)。
  • 您無法從WSDL獲取端點URL,因此如果服務端點位置已更改(但不是WSDL),則需要重新配置客戶端。
  • 與服務器的任何附加的呼叫
遠程資源(HTTP)和下載WSDL每次創建客戶端實例

B.使用WSDL位置?

有什麼優點和缺點?

+1

請注意,許多環境在任何情況下都無法使用動態更改的WSDL。我碰巧認爲這是件好事。如果服務接口發生變化,那麼客戶端不僅需要新的WSDL,還需要對服務進行修改。自動更新客戶端可能會導致無法進行測試的錯覺。 –

+0

@JohnSaunders:好點! – Bogdan

回答

2

哪個更好取決於你的設置和你的需要,但我個人更喜歡具有WSDL本地,客戶端內這些原因:

  • 沒有額外的調用服務器,以獲得WSDL(如你提到過);
  • 如果服務器保持向後兼容性,本地WSDL仍然可以正常使用(如您所述);
  • 如果服務WSDL以不兼容的方式進行更改,並且客戶端突然開始出現故障,那麼您仍然在本地使用舊的WSDL,並且可以將其與新的WSDL進行比較,以查看不同之處。

下點通常不是問題:

你是不是能夠從WSDL獲得端點URL,所以如果服務端點的位置已經改變(但WSDL沒有),你需要重新配置客戶端。

The endpoint URL in the WSDL is not always correct即使它是,通常必須在相同的URL服務僅通過貼敷?wsdl參數,它所以如果位置改變之後,你不會找到該服務,但你不會找到訪問的WSDL WSDL也是。無論如何,服務端點URL需要在客戶端進行配置。

+0

案例很少但是有效:)我原型化了服務發現的使用,並且wsdls存儲在那裏,並且位置指向了正確的一個。主要目標是 - 客戶不關心服務在哪裏,只在ServiceDiscovery的地方。但是由於其他問題(主要是不同的服務認證方法),這個想法被放棄了。 –

相關問題