2008-08-08 62 views
18

我的直覺是基於文檔的Web服務在實踐中是首選 - 這是其他人的體驗嗎?他們是否更容易支持? (我注意到SharePoint在其WSDL界面中使用Any作爲「文檔類型」,我猜這使得它成爲基於文檔)。基於文檔或RPC的Web服務

此外 - 人們現在提供WSDL和Rest類型的服務是否具有相同的功能? WSDL在代碼生成中很流行,但對於像PHP和Rails這樣的前端,他們似乎更喜歡休息。

回答

30

如果您使用的SOAP Web服務需要服務描述(WSDL),則文檔與RPC只是一個問題。 REST風格的Web服務不會使用WSDL,因爲服務無法用它來描述,並且感覺REST更簡單,更易於理解。有人提議用WADL作爲描述REST服務的一種方式。

Python,Ruby和PHP等語言使得使用REST更容易。 WSDL用於生成可以從靜態語言輕鬆調用的C#代碼(Web服務代理)。當您在Visual Studio中添加服務參考Web參考時會發生這種情況。

您是否提供SOAP或REST服務取決於您的用戶羣。服務是通過互聯網使用,還是隻在組織內部使用,都會影響您的選擇。 SOAP可能具有一些適用於B2B或內部使用的功能(WS- *標準),但吸引互聯網服務。

在此IBM DevelopWorks article上描述了文檔/字面值與SOAP服務的RPC值。文檔/文字通常被認爲是互操作性方面最好的使用(Java到.NET等)。至於是否容易支持,這取決於你的情況。我個人的觀點是,人們傾向於使這件事情比需要的更復雜,而REST更簡單的方法則更爲優越。

+3

鏈接描述了所有內容,我的所有疑慮在閱讀完後都會失望。 http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ – 2014-08-30 10:08:17

1

BiranLy的回答非常好。我只想補充說,document-vs-RPC也可以歸結爲實現問題。我們發現微軟是基於文檔的,而我們的基於Java的庫是基於RPC的。無論你選擇什麼,確保你知道其他潛在客戶也會承擔什麼。

4

如前所述,只要有可能,最好選擇RPC編碼的文檔文字。 的確,舊的java庫(Axis1,Glue和其他史前版本)只支持RPC編碼,但是在當今最現代化的Java SOAP庫中並不支持它(e.x.AXIS2,XFire,CXF)。 因此,只有當您知道您需要處理無法做得更好的消費者時,才嘗試公開RPC編碼服務。但是,也可能只是XML RPC可以爲這些遺留實現提供幫助。