1. 程式人生 > >Web Service (SOAP)和HTTP介面的區別

Web Service (SOAP)和HTTP介面的區別

什麼是web service?

soap請求 (SimpleObject Access Protocol,簡單物件訪問協議) 是HTTP POST的一個專用版本,遵循一種特殊的xml訊息格式Content-type設定為: text/xml任何資料都可以xml化。

SOAP:簡單物件訪問協議,簡單物件訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的資訊。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文字傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支援從訊息系統到遠端過程呼叫(RPC)等大量的應用程式。

SOAP是一個基於XML的協議交換訊息,可以使用HTTP來傳輸這些資訊。事實上HTTP是SOAP訊息的最常見的傳輸工具。soap將資訊進行XML的序列化後,再用http協議的方式再打包進行傳送,傳送的方式還是tcp或者udp。做個比喻就好理解了。tcp 和 udp 都是公路,暫且把tcp認為是一般公路,udp高速公路,soap和http就都是汽車,那麼soap和http都可以在tcp和udp上跑。說soap可以通過http來傳送,實際就是說soap是小轎車,http是裝轎車的卡車,把soap的資訊裝到http裡面,然後再運輸,當然走的道路還是tcp或udp。說soap可以通過http協議來傳輸,這句話不太準確,比較準確第說法是:soap資訊可以通過http協議包裝後通過tcp或udp傳輸。

SOAP 包括四個部分:

SOAP

它定義了一個框架 , 該框架描述了訊息中的內容是什麼,誰應當處理它以及它是可選的還是必須的。

SOAP 編碼規則:它定義了一種序列化的機制,用於交換應用程式所定義的資料型別的例項。

SOAP RPC 表示:它定義了用於表示遠端過程呼叫和應答的協定。

SOAP 繫結:定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定。

SOAP 訊息基本上是從傳送端到接收端的單向傳輸,但它們常常結合起來執行類似於請求 / 應答的模式。所有的 SOAP 訊息都使用 XML 編碼。一條 SOAP 訊息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文件。

把 SOAP 繫結到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特徵庫的優點。在HTTP上傳送 SOAP 並不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的對映到 HTTP 語義。在使用 HTTP 作為協議繫結的場合中, RPC 請求對映到 HTTP 請求上,而 RPC 應答對映到 HTTP 應答。然而,在 RPC 上使用 SOAP 並不僅限於 HTTP 協議繫結。

SOAP也可以繫結到TCP和UDP協議上。

為什麼要學習web service?

大多數對外介面會實現web service方法而不是http方法,如果你不會,那就沒有辦法對接。

web service相對http (post/get)有好處嗎?

1.介面中實現的方法和要求引數一目瞭然

2.不用擔心大小寫問題

3.不用擔心中文urlencode問題

4.程式碼中不用多次宣告認證(賬號,密碼)引數

5.傳遞引數可以為陣列,物件等…

web service相對http(post/get)快嗎?

由於要進行xml解析,速度可能會有所降低。

web service 可以被http(post/get)替代嗎?

完全可以,而且現在的開放平臺都是用的HTTP(post/get)實現的。

有的說法

httpservice通過post和get得到你想要的東西webservice就是使用soap協議得到你想要的東西,相比httpservice能處理些更加複雜的資料型別當你要呼叫一個你本服務的內容的時候,不涉及到跨域的問題,你可以使用HttpService的方式。如果,你需要在後臺呼叫一個其它應用的服務,這個時候,你必須要用webService的方式來呼叫。