Web Service學習與初步認識

概況:       

      Web Service 是一種跨變成語言和跨操作系統平臺的運程調用規範,它不是框架,更不是一種技術。

       所謂跨編程語言和跨操作平臺,就是說服務端程序採用java編寫,客戶端程序則可以採用其他編程語言編寫,反之亦然!跨操作系統平臺則是指服務端程序和客戶端程序可以在不同的操作系統上運行。

       所謂遠程調用,就是一臺計算機a上的一個程序可以調用到另外一臺計算機b上的一個對象的方法,譬如,銀聯提供給商場的pos刷卡系統,商場的POS機轉賬調用的轉賬方法的代碼其實是跑在銀行服務器上。再比如,amazon,天氣預報系統,淘寶網,校內網,百度等把自己的系統服務以webservice服務的形式暴露出來,讓第三方網站和程序可以調用這些服務功能,這樣擴展了自己系統的市場佔有率,往大的概念上吹,就是所謂的SOA應用。

       其實可以從多個角度來理解WebService,從表面上看,WebService就是一個應用程序向外界暴露出一個能通過Web進行調用的API,也就是說能用編程的方法通過Web來調用這個應用程序。我們把調用這個WebService的應用程序叫做客戶端,而把提供這個WebService的應用程序叫做服務端。從深層次看,WebService是建立可互操作的分佈式應用程序的新平臺,是一個平臺,是一套標準。它定義了應用程序如何在Web上實現互操作性,你可以用任何你喜歡的語言,在任何你喜歡的平臺上寫Web service ,只要我們可以通過Web service標準對這些服務進行查詢和訪問。 

        WebService平臺需要一套協議來實現分佈式應用程序的創建。任何平臺都有它的數據表示方法和類型系統。要實現互操作性,WebService平臺必須提供一套標準的類型系統,用於溝通不同平臺、編程語言和組件模型中的不同類型系統。Web service平臺必須提供一種標準來描述Web service,讓客戶可以得到足夠的信息來調用這個Web service。最後,我們還必須有一種方法來對這個Web service進行遠程調用,這種方法實際是一種遠程過程調用協議(RPC)。爲了達到互操作性,這種RPC協議還必須與平臺和編程語言無關。

       綜述:它集中解決的問題是,遠程調用,跨平臺調用,跨語言調用。

WebService平臺技術支持


        Web Service平臺需要一套協議來實現分佈式應用程序的創建。任何平臺都有它的數據表示方法和類型系統。要實現互操作性,Web Service平臺必須提供一套標準的類型系統,用於溝通不同平臺、編程語言和組件模型中的不同類型系統。目前這些協議有:XML和XSD,SOAP,WSDL,UDDI,調用RPC與消息傳遞。

 WSDL

        今天我們簡單介紹下wsdl。

  WSDL (Web Services Description Language,Web服務描述語言)是一種XML Application,他將Web服務描述定義爲一組服務訪問點,客戶端可以通過這些服務訪問點對包含面向文檔信息或面向過程調用的服務進行訪問(類似遠程過程調用)。WSDL首先對訪問的操作和訪問時使用的請求/響應消息進行抽象描述,然後將其綁定到具體的傳輸協議和消息格式上以最終定義具體部署的服務訪問點。相關的具體部署的服務訪問點通過組合就成爲抽象的Web服務。 本文將詳細講解WSDL文檔的結構,並分析每個元素的作用。

一:WSDL定義

    WSDL是一個用於精確描述Web服務的文檔,WSDL文檔是一個遵循WSDL XML模式的XML文檔。WSDL 文檔將Web服務定義爲服務訪問點或端口的集合。在 WSDL 中,由於服務訪問點和消息的抽象定義已從具體的服務部署或數據格式綁定中分離出來,因此可以對抽象定義進行再次使用:消息,指對交換數據的抽象描述;而端口類型,指操作的抽象集合。用於特定端口類型的具體協議和數據格式規範構成了可以再次使用的綁定。將Web訪問地址與可再次使用的綁定相關聯,可以定義一個端口,而端口的集合則定義爲服務。

   一個WSDL文檔通常包含7個重要的元素,即types、import、message、portType、operation、binding、 service元素。這些元素嵌套在definitions元素中,definitions是WSDL文檔的根元素。文章的下一部分將會詳細介紹WSDL 的基本結構。

二:WSDL的基本結構--概述

如第一部分最後描述的那樣,一個基本的WSDL文檔包含7個重要的元素。下面將分別介紹這幾個元素以及他們的作用。

WSDL 文檔在Web服務的定義中使用下列元素:

·   Types - 數據類型定義的容器,它使用某種類型系統(一般地使用XML Schema中的類型系統)。

·   Message - 通信消息的數據結構的抽象類型化定義。使用Types所定義的類型來定義整個消息的數據結構。

·   Operation - 對服務中所支持的操作的抽象描述,一般單個Operation描述了一個訪問入口的請求/響應消息對。

·   PortType - 對於某個訪問入口點類型所支持的操作的抽象集合,這些操作可以由一個或多個服務訪問點來支持。

·    Binding - 特定端口類型的具體協議和數據格式規範的綁定。

·    Port - 定義爲協議/數據格式綁定與具體Web訪問地址組合的單個服務訪問點。

·    Service- 相關服務訪問點的集合。

WSDL的xml schema可以參照如下網址:http://schemas.xmlsoap.org/wsdl/

調用一次Web Servie的本質

1、客戶端把調用方法參數,轉換成XML文檔片段(SOAP消息,input消息)-(該文檔片段必須符合WSDL定義的格式)。

2、通過網絡,把XML文檔片段傳給服務器。

3、服務器接收到xml文檔片段。

4、服務器解析xml文檔片段,提取其中的數據。

5、服務器執行方法。

6、把執行方法得到的返回值,再次轉換成xml文檔片段

7、通過網絡,吧xml文檔片段傳給客戶端。

8、客戶端接收到xml文檔片段。

9、客戶端解析xml文檔片段,提取其中的數據。並把數據轉換調用web service的返回值。

所以,要一種語言支持web service唯一的要求是:該語言支持xml文檔解析,生成,支持網絡傳輸。

實現webService的開源框架-CXF

 Apache CXF 是一個開源的 Services 框架,CXF 幫助您利用 Frontend 編程 API 來構建和開發 Services ,像 JAX-WS 。這些 Services 可以支持多種協議,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,並且可以在多種傳輸協議上運行,比如:HTTP、JMS 或者 JBI,CXF 大大簡化了 Services 的創建,同時它繼承了 XFire 傳統,一樣可以天然地和 Spring 進行無縫集成。
  限於篇幅,點到爲止,詳細可以參考
http://www.ibm.com/developerworks/cn/education/java/j-cxf/index.html
主要介紹瞭如何配置CXF開發的環境以及如何利用CXF開發web service的服務端和客戶端。


發佈了144 篇原創文章 · 獲贊 116 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章