在ASP.NET 中,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中的以復雜數據類型為參數的方法。
。你可以調用XML Web Service中返回值為復雜數據類型的方法,但是響應將僅包括復雜數據類型中各個區域中的名字/值,并且返回的值并沒有結構可言。你必須手動的將數據解壓縮到WSDL文件。
。在HTTP中,你不能使用reference進行參數的傳輸。
。使用HTTP與XML Web Service進行交流,不是一個agreed-to工業標準技術。雖然HTTP會在ASP.NET Web Application中與XML Web Service正常工作,但不保證它在其它的環境下正常工作。
這是我對XML Web Service的初步認識,難免有些錯誤。如果不對,還請大家指正。
posted on 2009-06-25 16:30
胖胖泡泡 閱讀(404)
評論(0) 編輯 收藏