歡迎您光臨本站 註冊首頁

· Web Service雜誌閱讀

併發程式設計網,當客戶端和Web Service伺服器進行通訊

admin @ 2020-04-18 reply:0

當客戶端和Web Service伺服器進行通訊時,他們交換訊息。客戶端傳送請求訊息到Web Service伺服器。 Web Service伺服器響應並返回訊息。這就像普通的HTTP,瀏覽器傳送一個HTTP請求到Web伺服器, Web伺服器會提供一個HTTP響應。

最初唯一可用的Web Service訊息格式是SOAP,後來出現了REST式的Web Service,它採用純XML和HTTP。隨著REST的興起,出現了很多人使用JSON(JavaScript物件符號)作為訊息格式。另外一個很簡單的遠端協議被稱為XML-RPC(XML遠端過程呼叫)。 對最常見的是SOAP協議我不會在這裡詳述訊息格式細節,因為在後續的教程中會提到。在這裡,我只是簡單提一下。

客戶端傳送請求到web服務,並且接收web服務的響應


SOAP

SOAP(簡單物件訪問協議)是基於XML的訊息格式。下面是一個簡單的SOAP訊息:

<soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">    <soap:Header>    Header>    <soap:Body>        ... message data ...        <soap:Fault>        Fault>    Body>Envelope>

正如你可以看到一個SOAP訊息包括:

  • Envelope

  • Header

  • Body

    • Message Data

    • Fault (optional)

相同的SOAP訊息結構用於客戶端和Web Service伺服器之間的請求和響應。

Body內的Fault元素是可選的。只有Web服務中發生內部錯誤裡才返回。否則,返回正常資訊資料。

SOAP不指定一個訊息從客戶端如何獲取到Web Service,但最常見的情況是通過HTTP。

REST + XML

REST(具象狀態傳輸)Web服務與SOAP Web服務有一點不同。一個REST請求就像一個普通的瀏覽器傳送一個簡單的HTTP請求到Web伺服器。一般情況不傳送XML請求。一個REST響應通常在一個普通的HTTP響應中發送回一個XML文件,就像瀏覽器請求一樣。

在REST中,你不用太多關注「服務」方面,而是在「資源」。一個資源有一個給定的URL,就像在一個網站的HTML頁面。比如社交應用中一個使用者的基本資訊資源,可能是下面的網址:

http://social.jenkov.com/profiles/jakobjenkov

這個URL可能會返回一個XML文件(資源)描述了我。 返回的XML檔案會是下面這樣:

   Jakob   Jenkov   

       The Road 123       12345       Copenhagen   


REST也自然地支援資源的集合。舉例來說,這個URL可能代表所有的公共使用者配置檔案的列表:

http://social.jenkov.com/profiles/ 下面是這樣的XML配置檔案列表的一個例子:   ...   ...   ...

上面這兩個網址只能讀取一個資源或資源集合。如果您需要修改REST中的資源,您需要傳送不同的HTTP請求到伺服器。當你讀一個資源要傳送HTTP GET請求。如果你需要寫一個資源,就需要傳送一個HTTP PUT來代替。如果你需要刪除一個資源,需要傳送一個HTTP DELETE等。

REST + JSON

REST+ JSON跟REST + XML基本上是一樣的,只不過傳輸的資料是JSON(JavaScript物件符號)格式的。JSON的基於XML的優點是Web瀏覽器能夠自然地解析JSON結構並且轉換成JavaScript物件,不需要自己在瀏覽器中轉換。這使得許多使用AJAX的應用程式變得簡單。

下面是一個json的例子:

{    firstName : "Jakob",    lastName  : "Jenkov",    address   : {       street : "The Road 123",       zip    : "12345",       city   : "Copenhagen"    } }

 

XML RPC

相比REST,XML RPC更類似於SOAP,XML RPC的請求和響應都是一樣的格式,相比SOAP ,XML RPC是一種較為簡單的協議,它很接近標準過程呼叫的建模。有些人聲稱,XML RPC現在已死或過時。

下面是一個XML RPC的請求示例:

POST /RPC2 HTTP/1.0 User-Agent: My XML-RPC API/1.0.0 (Win7) Host: jenkov.com Content-Type: text/xml Content-length: 200    getProfile                     Jakob Jenkov          

標註:這個HTTP請求的Content-Length頭沒有正確設定,它應該是XML請求的位元組數。

下面是一個XML RPC響應示例:

HTTP/1.1 200 OK Connection: close Content-Length: 213 Content-Type: text/xml Date: Wed, 03 Feb 2010 20:00:00 GMT+1 Server: xxx.com                                                            firstName                   Jakob                                                 lastName                   Jenkov                                                 address                                          ...                                                       


[admin via ] 併發程式設計網,當客戶端和Web Service伺服器進行通訊已經有473次圍觀

http://coctec.com/magazine/show-post-item-38.html