Webservice 中涉及的幾個概念


開發webservice有一段時間了。但是對其中的協議及實現一直存在疑惑。這里搜集相關概念。用以更好的理解它。

一、什么是Webservice

WebService是一種跨編程語言和跨操作系統平台的遠程調用技術。

也就是說,不管你是java,還是.net 只要按照規范就可以進行通信。實現數據交互等。

這里說的"規范",WebService平台必須提供一套標准的類型系統,用於溝通不同平台、編程語言和組件模型中的不同類型系統。Webservice平台必須提供一種標准來描述Web service,讓客戶可以得到足夠的信息來調用這個Web service。最后,我們還必須有一種方法來對這個Web service進行遠程調用,這種方法實際是一種遠程過程調用協議(RPC)。Webservice 就是一種部署在網絡上的API。

  RPC:即 Remote Procedure Call(遠程過程調用),說得通俗一點就是:調用遠程計算機上的服務,就像調用本地服務一樣。RPC 可基於 HTTP 或 TCP 協議,Web Service 就是基於 HTTP 協議的 RPC,它具有良好的跨平台性,但其性能卻不如基於 TCP 協議的 RPC。會兩方面會直接影響 RPC 的性能,一是傳輸方式,二是序列化。

就是一種實現RPC的協議有很多,比如最早的CORBA,Java RMI,Web Service的RPC風格,Hessian,Thrift,甚至Rest API。

WebService可以理解為實現RPC的一種方式,傳輸數據格式為XML,采用SOAP協議,RPC的實現方式為SOAP RPC。

 

二、Webservice 的實現

XML+XSD,SOAP和WSDL就是構成WebService平台的三大技術。

XML+XSDXML Schema(XSD)定義了一套標准的數據類型,並給出了一種語言來擴展這套數據類型。WebService平台就是用XSD來作為其數據類型系統的。當你用某種語言(如VB.NET或C#)來構造一個Web service時,為了符合WebService標准,所有你使用的數據類型都必須被轉換為XSD類型。你用的工具可能已經自動幫你完成了這個轉換,但你很可能會根據你的需要修改一下轉換過程。

SOAP

   WebService通過HTTP協議發送請求和接收結果時,發送的請求內容和結果內容都采用XML格式封裝,並增加了一些特定的HTTP消息頭,以說明HTTP消息的內容格式,這些特定的HTTP消息頭和XML內容格式就是SOAP協議。SOAP提供了標准的RPC方法來調用Web Service。

  SOAP協議 = HTTP協議 + XML數據格式

  SOAP協議定義了SOAP消息的格式,SOAP協議是基於HTTP協議的,SOAP也是基於XML和XSD的,XML是SOAP的數據編碼方式。打個比喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防護欄,SOAP就是普通公路經過加隔離帶和防護欄改造過的高速公路。

 

  一條 SOAP 消息就是一個普通的 XML 文檔,包含下列元素:
  • 必需的 Envelope 元素,可把此 XML 文檔標識為一條 SOAP 消息
  • 可選的 Header 元素,包含頭部信息
  • 必需的 Body 元素,包含所有的調用和響應信息
  • 可選的 Fault 元素,提供有關在處理此消息所發生錯誤的信息
<?xml
 version="1.0"?>
<soap:Envelope
 xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
 soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
 
<soap:Header>

</soap:Header>
 
<soap:Body>

<soap:Fault>

</soap:Fault>
</soap:Body>
</soap:Envelope>

 

WSDL

    描述服務是什么,(服務中有哪些方法,方法接受的參數是什么,返回值是什么),服務的網絡地址用哪個url地址表示,服務通過什么方式來調用。

   WSDL(Web Services Description Language)就是這樣一個基於XML的語言,用於描述Web Service及其函數、參數和返回值。它是WebService客戶端和服務器端都能理解的標准格式。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的Web service生成WSDL文檔,又能導入WSDL文檔,生成調用相應WebService的代理類代碼。

  WSDL文件保存在Web服務器上,通過一個url地址就可以訪問到它。客戶端要調用一個WebService服務之前,要知道該服務的WSDL文件的地址。WebService服務提供商可以通過兩種方式來暴露它的WSDL文件地址:1.注冊到UDDI服務器,以便被人查找(這個應該意味着要有個服務中心)?;2.直接告訴給客戶端調用者。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM