2013-09-01 154 views
18

SOAP over HTTP是XML over HTTP的一個子集,因爲我認爲SOAP也是一個xml,它可以確認模式(SOAP模式)嗎?我假設XML over HTTP服務可以使用GET或POST方法訪問。 SOAP over HTTP總是使用POST方法嗎?對於基於HTTP的XML,我認爲缺點是模式文件必須與所有使用者共享,而在SOAP over HTTP的情況下,它將是單個WSDL文件。是否有可能幫助讓我知道這兩者之間的差異和優勢?XML over HTTP與SOAP over HTTP之間的區別

回答

21

SOAP是XML的一個專門化語言,因爲它有一個模式,比如http://www.xmlsoap.org/soap/envelope/,而XML更通用。

對於使用GET,你可以通過閱讀這些討論:http://www.coderanch.com/t/463869/Web-Services/java/SOAP-request-HTTP,但基本上SOAP是通過POST做,雖然Axis2的似乎對獲得支持,作爲一種在世界SOAP工作,其中REST似乎排除。

而且,根據這篇IBM文章(http://www.ibm.com/developerworks/xml/library/x-tipgetr/index.html),SOAP 1.2引入了GET。如你所提到的,SOAP是一個標準,所以有一些工具可以很容易地使用它,包括動態客戶端生成,如這個問題所示,dynamic proxy soap web service client in java?,客戶端生成連接時需要的存根。

如果通過http使用XML,根據需要,它可能會更好,作爲傳輸數據的一種方式,但在使用情況中,我認爲使用JSON和REST似乎更好,但是,如果你想傳輸XML或發送XML,那麼你可以看看使用REST。

雖然GET具有大小限制(maximum length of HTTP GET request?),但POST會是更好的選擇,這可能是爲什麼SOAP幾乎總是POST。

WSDL不一定是WCF中的單個文件,如果我記得,有很多xml文件需要放在一起才能完成WSDL。

好處取決於你的用例是什麼,但我發現使用REST並允許用戶選擇類型是有用的,因爲它可以在JSON和XML之間切換,例如,並且是更好的選擇適用於HTTP over XML。

SOAP與舊技術集成時最好,因爲這可能是他們可以輕鬆使用的一切。例如,當我爲SAP集成創建Web服務時,根據ABAP程序員的能力,讓它不使用SOAP可能會更多工作。

您可能會發現使用這樣一個問題:

How SOAP and REST work with XML/JSON response?

以及有關JSON的web服務的討論和XML,你可能會有所幫助:

http://digitalbazaar.com/2010/11/22/json-vs-xml/

我忘了這個鏈接,因爲他們做了簡短的比較,但最終您可以輕鬆支持這兩者。在WCF中,我有一個擁有業務邏輯的控制器,必須有.aspx文件,一個用於SOAP,另一個用於REST,並且一些Web服務支持兩者,因爲這只是處理請求和響應差異的問題。所以,如果你想提供對這兩者的支持,並且有一個商業案例顯示它是有意義的,那麼選擇一個可以很容易做到的框架。

http://digitalbazaar.com/2010/11/22/json-vs-xml/

基本上,我們的目標是通過網絡向客戶提供服務。什麼客戶要連接?客戶如何找到最容易接觸的方式?請求中傳遞了多少數據?

這些類型的問題將導致您的需求的最佳解決方案。

+0

非常感謝。非常有用和詳細的解釋,清除了我的困惑:) –

+0

請我想知道如何通過HTTP POST發送SOAP請求。 是否整個信封張貼到請求正文中,例如可以通過以下方法調用完全讀入字符串? 'String entireSoapReequest = IOUtils.toString(request.getInputStream());' –

+1

@SayoOladeji - 有一些肥皂工具可以幫助,但如果我記得它全部在請求的主體中,但要知道你可能想問一下這是一個新問題 –