今天我們一起來學習WebService。它到底是干啥用的?
Web service是一個平台獨立的,低耦合的,自包含的、基於可編程的web的應用程序,可使用開放的XML(標准通用標記語言下的一個子集)標准來描述、發布、發現、協調和配置這些應用程序,用於開發分布式的互操作的應用程序。
一:Web Service基本概念
Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟件服務,使用WSDL文件進行說明,並通過UDDI進行注冊。
XML:(Extensible Markup Language)擴展型可標記語言。面向短期的臨時數據處理、面向萬維網絡,是Soap的基礎。
Soap:(Simple Object Access Protocol)簡單對象存取協議。
是XML Web Service 的通信協議。當用戶通過UDDI找到你的WSDL描述文檔後,他通過可以SOAP調用你建立的Web服務中的一個或多個操作。SOAP是XML文檔形式的調用方法的規范,它可以支持不同的底層接口,像HTTP(S)或者SMTP。
說到Web Services你就很難把它與SOAP分開,SOAP是用於交換XML編碼信息的輕量級協議。它有三個主要方面: XML-envelope為描述信息內容和如何處理內容定義了框架;WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 消息以及如何交換這些消息。大多數情況下由軟件自動生成和使用。
WSDL 是一種XML Application,他將Web服務描述定義為一組服務訪問點,客戶端可以通過這些服務訪問點對包含面向文檔信息或面向過程調用的服務進行訪問(類似遠程過程調用)。WSDL首先對訪問的操作和訪問時使用的請求/響應消息進行抽象描述,然後將其綁定到具體的傳輸協議和消息格式上以最終定義具體部署的服務訪問點。相關的具體部署的服務訪問點通過組合就成為抽象的Web服務。
在具體使用中,我們可以對 WSDL 進行擴展(類似SOAP的可擴展性),這樣無論通信時使用何種消息格式或網絡協議,都可以對服務訪問點及其使用的消息格式進行描述。在WSDL的框架中,可以使用任意的消息格式和網絡協議,如同SOAP中可以使用任意的網絡協議一樣。在WSDL規范中,定義了如何使用SOAP消息格式、HTTP GET/POST消息格式以及MIME格式來完成Web服務交互的規范。
WSDL 文檔在Web服務的定義中使用下列元素:
service 使用一個特殊的 binding,binding是 portType 的一個實現。portType 定義操作,而操作由 messages 組成。消息中包含由 types 部分中定義的 XML 組成。
1.Types - 定義Web服務裡用到的,XML Schema定義的數據類型以外的自定義數據類型,對於我們自定義的類(Book),會對應到一個<complexType>,其中用<element>元素指定每個參數的類型。
2.JAX-RPC規范中規定了Java語言的數據類型到XML Schema數據類型的映射,例如int<->xsd:int、java.lang.String<->xsd:string等等,還有數組的映射方式。
3.Message - 具體定義了在通信中使用的消息的數據結構,Message元素包含了一組Part元素,每個Part元素都是最終消息的一個組成部分,每個Part都會引用一個DataType來表示它的結構。例如addBook()方法有一個Book類型的參數,則在WSDL中會有<part name="book" type="tns1:Book"/>的描述。
4.Operation - 對服務中所支持的操作的抽象描述,一般單個Operation描述了一個訪問入口的請求/響應消息對。
5.PortType - PortType具體定義了一種服務訪問入口的類型,何謂訪問入口的類型呢?就是傳入/傳出消息的模式及其格式。一個PortType可以包含若干個Operation,而一個Operation則是指訪問入口支持的一種類型的調用。在WSDL裡面支持四種訪問入口調用的模式: