天天看點

XML Web Service:HTTP-GET, HTTP-POST and SOAP的比較

XML Web Service支援三種協定來與使用者交流資料。這三種協定分别是:

1. SOAP:Simple Object Access Protocol

2.  HTTP-GET

3.   HTTP-POST

1.首先我們先來了解一下這三者的大概定義。

在這三種協定中,SOAP是XML Web Service最常用到的連接配接協定。與HTTP相比,SOAP顯的更為複雜,但卻擁有更強的接受能力。SOAP是一種以XML為基礎的協定,它提供一種将資料打包(Packaging)和 編碼(Encoding)的方法,以用于網絡的資料傳輸。任意一個使用者都可以使用SOAP協定與任何一個XML Web Service進行通信,甚至于說這個XML Web Service不是建立在.NET 平台上的,比如說Java的,我們都可以利用SOAP來進行資料傳輸。是以可見,SOAP也是Language Independent.(語言獨立性)

HTTP(Hypertext Transfer Protocol) 已經是衆所周知的協定了,它是XML Web Service資料傳輸的标準,這包括了在使用SOAP傳輸資料的時候。HTTP将SOAP 消息壓縮,然後以它的形式進行網絡傳輸。然而當我們談及在XML Web Service下使用HTTP-GET和HTTP-POST的時候,我們實事上在談有關單獨使用HTTP調用XML Web Service中的方法的能力,這裡我說的單獨使用,指的是不使用SOAP。

在HTTP中,GET 和 POST并不是一種協定,它們是可以用來與Web Service互動的幾種方法中的其中二種。然而,這二種方法的傳送參數和資料的能力使它們變成了一種簡單的,非常适合用來調用XML Web Service的工具。

2.HTTP-GET 和 HTTP-POST 的比較

這二者最大的差別在于資料是如何與要求的消息捆綁在一起的。

HTTP-GET的處理特征如下:

。将資料添加到URL

。利用一個問号(”?”)代表URL位址的結尾與資料的開端。

。每一個資料的元素以 名稱/值 (name/value) 的形式出現。

。利用一個分号(“;”)來區分多個資料元素。

HTTP-POST的處理特征如下:

。将資料包括在HTTP主體中。

。同樣的,資料的元素以 名稱/值 (name/value) 的形式出現。

。但是每一個資料元素分别占用主體的一行。

從這二者不同的處理特征,可以看出它們的不同之處,而大家也可以利用IE打開一個Web Service檔案,在頁面中,IE會顯示出二種的資料的不同之處。

3.HTTP和SOAP的比較

HTTP-GET 和 HTTP-POST 提供了一個簡單的與XML Web Service互動的工具,與SOAP相比,它有以下幾點好處:

。 能夠非常容易的建立正确的HTTP-GET 和 HTTP-POST消息,當面向的客戶是不能使用SOAP的客戶時,HTTP-GET 和 HTTP-POST是最好的選擇。

。響應HTTP-GET 和 HTTP-POST的消息,并不需要複雜的XML處理。響應之中包括了XML,但它有一個簡單的架構并能夠輕易的利用一般的技術處理響應。這些特點使HTTP-GET 和 HTTP-POST對于不支援XML的平台來說,變的異常的有用。

。HTTP-GET 和 HTTP-POST消息比起SOAP消息來說,更為簡單。這有利于提高整體的性能。

然而,有得必有失,有好必有壞,它們也存在不可忽略的缺點:

。不能夠利用HTML調用XML Web Service中的以複雜資料類型為參數的方法。