webservice簡介

youSeeAgain發表於2024-07-07

1、 簡介

webservice 即web服務,它是一種跨程式語言和跨作業系統平臺的遠端呼叫技術。

實現不同系統,程序間,任何地點的資料交換,webservice是跨語言技術。webservice是基於HTTP與XML的技術。

採用標準SOAP(Simple Object Access Protocol)協議傳輸,soap屬於W3C標準。Soap協議是基於http的應用層協 議,傳輸是xml資料。

採用wsdl作為描述語言即webservice使用說明書,wsdl屬於w3c標準。

Web Service所使用的是Internet上統一、開放的標準,如HTTP、XML、SOAP(簡單物件訪問協議)、WSDL等,所以Web Service可以在任何支援這些標準的環境(Windows,Linux)中使用。
這有助於大量異構程式和平臺之間的互操作性,從而使存在的應用程式能夠被廣泛的使用者訪問。

如圖:

img

(2) JAVA 中共有三種WebService 規範,分別是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。

(3) webService三要素:soap、wsdl、uddi

2、術語

2.1、 webservice開發規範

JAVA 中共有三種WebService規範,分別是JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS。

下面來分別簡要的介紹一下這三個規範。

(1.)JAX-WS:

JAX-WS(Java API For XML-WebService),JDK1.6 自帶的版本為JAX-WS2.1,其底層支援為JAXB。JAX-WS(JSR 224)規範的API 位於javax.xml.ws.*包,其中大部分都是註解,
提供API 操作Web 服務(通常在客戶端使用的較多,由於客戶端可以藉助SDK 生成,因此這個包中的API 我們較少會直接使用)。

(2.)JAXM&SAAJ:

JAXM(JAVA API For XML Message)主要定義了包含了傳送和接收訊息所需的API,相當於Web 服務的伺服器端,其API 位於javax.messaging.*包,它是JAVA EE 的可選包,因此你需要單獨下載。

SAAJ(SOAP With Attachment API For Java,JSR 67)是與JAXM 搭配使用的API,為構建SOAP 包和解析SOAP 包提供了重要的支援,支援附件傳輸,它在伺服器端、客戶端都需要使用。這裡還要提到的是SAAJ 規範,其API 位於javax.xml.soap.*包。

JAXM&SAAJ 與JAX-WS 都是基於SOAP 的Web 服務,相比之下JAXM&SAAJ暴漏了SOAP更多的底層細節,編碼比較麻煩,而JAX-WS 更加抽象,隱藏了更多的細節,更加物件導向,實現起來你基本上不需要關心SOAP 的任何細節。那麼如果你想控制SOAP 訊息的更多細節,可以使用JAXM&SAAJ,目前版本為1.3。

(3.)JAX-RS:

JAX-RS 是JAVA 針對REST(RepresentationState Transfer)風格制定的一套Web 服務規範,由於推出的較晚,該規範(JSR 311,目前JAX-RS 的版本為1.0)並未隨JDK1.6 一起發行,你需要到JCP 上單獨下載JAX-RS 規範的介面,其API 位於javax.ws.rs.*包。

這裡的JAX-WS 和JAX-RS 規範我們採用Apache CXF 作為實現,CXF 是Objectweb Celtix和Codehaus XFire 合併而成。CXF 的核心是org.apache.cxf.Bus(匯流排),類似於Spring 的ApplicationContext,Bus 由BusFactory 建立,預設是SpringBusFactory 類,可見預設CXF是依賴於Spring 的,Bus 都有一個ID,預設的BUS 的ID 是cxf。你要注意的是Apache CXF2.2 的發行包中的jar 你如果直接全部放到lib 目錄,那麼你必須使用JDK1.6,否則會報

JAX-WS 版本不一致的問題。對於JAXM&SAAJ 規範我們採用JDK 中自帶的預設實現。

2.2、 SOAP 協議

(1) SOAP即簡單物件訪問協議(Simple Object Access Protocol),它是用於交換XML(標準通用標記語言下的一個子集)編碼資訊的輕量級協議。它有三個主要方面:XML-envelope為描述資訊內容和如何處理內容定義了框架,將程式物件編碼成為XML物件的規則,執行遠端過程呼叫(RPC)的約定。SOAP可以執行在任何其他傳輸協議上。

(2) SOAP作為一個基於XML語言的協議用於有網上傳輸資料。

(3) SOAP = 在HTTP的基礎上+XML資料。

(4) SOAP是基於HTTP的。

(5) SOAP的組成如下

a) Envelope – 必須的部分。以XML的根元素出現。

b) Headers – 可選的。

c) Body – 必須的。在body部分,包含要執行的伺服器的方法。和傳送到伺服器的資料。

soap是一種基於xml格式訪問網路服務的協議,透過http來進行資訊交換。 一次WebService的呼叫,不是方法的呼叫,而是soap訊息之間的輸入和輸出

2.3.3 客戶端呼叫步驟

2.3.3 wsdl說明書

Web Service描述語言WSDL(SebService Definition Language)就是用機器能閱讀的方式提供的一個正式描述文件而基於XML(標準通用標記語言下的一個子集)的語言,用於描述Web Service及其函式、引數和返回值。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的。

wsdl說明書

                1) 透過wsdl說明書,就可以描述webservice服務端對外發布的服務;
 
       		2) wsdl說明書是一個基於xml檔案,透過xml語言描述整個服務;
 
                3) 在wsdl說明中,描述了:
 
			對外發布的服務名稱(類)
 
			介面方法名稱(方法)
 
			介面引數(方法引數)
 
			服務返回的資料型別(方法返回值)
 

2.3.4 UDDI

Web 服務提供商又如何將自己開發的 Web 服務公佈到因特網上,

這就需要使用到 UDDI 了,UDDI的話,是一個跨產業,跨平臺的開放性架構,可以幫助 Web 服務提供商在網際網路上釋出 Web 服務的資訊。

UDDI 是一種目錄服務,企業可以透過 UDDI 來註冊和搜尋 Web 服務。

簡單來時候話,UDDI 就是一個目錄,只不過在這個目錄中存放的是一些關於 Web 服務的資訊而已。

並且 UDDI 透過SOAP 進行通訊,構建於 . Net 之上。

UDDI 即 Universal Description,Discovery andIntegration,也就是通用的描述,發現以及整合。

UDDI 的目的是為電子商務建立標準;UDDI是一套基於Web的、分散式的、為WebService提供的、資訊註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業能夠發現的訪問協議的實現標準。