摘要:首先給出了SOA概念,然后分析了Web服務體系結構,最后討論了Web服務的開發方式。
關鍵詞:SOA;Web服務
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)23-958-02
Research about Web Service Based on SOA
PENG Bo1,2
(1.School of Computer and Information,Hefei University of Technology, Hefei 230009, China; 2.Anhui Medical University,Hefei230032, China)
Abstract:First gives the concept of SOA as a whole. Then analyses the architecture of WebService,
at last discuss the development methods of WebService.
Key words: SOA; WebService
1 SOA概述
1.1 SOA的基本概念
SOA(Service Oriented Architecture)是包含運行環境、編程模型、架構風格和相關方法論等在內的一整套新的分布式軟件系統構造方法和環境,涵蓋服務的整個生命周期:建模-開發-整合-部署-運行-管理。SOA是分布式軟件系統構造方法和環境的新發展階段。
其基本要素是:
1)松散耦合:包括服務之間的松散耦合、接口和實現之間的松散耦合、業務組件和傳輸協議之間的松散耦合。
2)粗粒度:SOA服務接口應比面向對象編程的API要大一些,更接近用戶的實際操作。
3)位置和傳輸協議透明:位置透明是指不論服務組件的實際位置URL如何變化,客戶的調用程序的URL都不需改變。傳輸協議的透明,就是指不管服務組件的傳輸協議如何變化,客戶端的調用程序的傳輸協議都不需要改變。
SOA的基本思想是面向服務,服務的本質是業務和技術的分離,它超越于一切具體的技術,又包含一切具體的技術。SOA三個基本要素能消除目前IT系統集成的障礙,從而達到SOA的目標:敏捷的,不受限制的業務集成。
1.2 SOA 和 Web Service 的根本區別
SOA是在 WebService 的基礎上發展起來的;而 WebServices 實現了松散耦合的服務和粗粒度的服務。雖然兩者都提供服務、服務接口都是基于開發的、接口與服務的具體實現都是分離的,但 Web Service 服務接口需要綁定具體實現服務的服務組件來實現服務,它對具體的服務實現完成了封裝,如圖1所示,實現了服務的透明化,客戶端不需知道服務是如何實現的,但客戶端調用 Web Service 組件時,還需要知道Web Service 的具體位置和傳輸協議,這將造成一定的不靈活性,因此它只是實現了一定程度上的抽象。
而SOA架構平臺只和服務接口進行綁定,對服務接口實現了封裝,如圖2所示,實現了服務接口的透明化,服務位置的透明化,傳輸協議的透明化。SOA 本身也不知道服務具體是如何實現的。當客戶端通過SOA調用服務時,不需要知道真正的服務提供者是誰,具體的服務位置在哪里和具體的傳輸協議是什么。因此SOA實現了最高程度的抽象化,為實現具有最高靈活性的服務建立了架構基礎。
2Web Service體系結構
Web 服務是一種部署在 Web 上的對象或組件,Web 服務是基于 Web 服務提供者、Web 服務請求者、Web 服務中介者三個角色和發布、發現、綁定三個動作構建的。
服務提供者就是 Web 服務的擁有者,它向其他服務和用戶提供自己已有的功能;服務請求者就是Web服務功能的使用者,它利用 SOAP 消息向 Web 服務提供者發送請求以獲得服務;Web 服務中介者的作用是把一個 Web 服務請求者與合適的服務者聯系在一起,充當管理者角色,一般是 UDDI。在這些角色之間使用了三種操作:發布、發現、綁定。
1)服務提供者(ServiceProvider)可以發布自己的服務,并對請求使用服務進行響應;
2)服務注冊中心(Service Registry)用于注冊已經發布的ServiceProvider,對其進行分類,并提供搜索服務;
3)服務請求者(ServiceRequester)利用服務注冊中心查找所需服務,然后使用該服務。
所謂的WebService就是定義了一套標準的調用過程:
1)服務器端首先用一套標準的方法向外界描述它所提供的服務內容,這屬于 WSDL;
2)客戶端需要以一種標準的協議來調用此服務,這屬于 SOAP (這也是WebService不同與其他組件如EJB的根本之處)
3)服務提供者將服務內容放在一個公共的網址讓大家查詢,這屬于 UDDI。
3Web Service 三個組成部分
1)WSDL(WebServiceDescriptionLanguage)是一種基于XML格式的關于Web服務的描述語言,其主要目的在于提供者將自已的Web服務相關內容,如服務傳輸方式、服務方法接口、接口參數、服務路徑等,生成相應的文檔,發布給使用者。使用者通過這個WSDL文檔,創建相應的 SOAP 請求,通過 HTTP 傳遞給提供者;Web 服務在完成服務請求后,將 SOAP 返回(response)消息傳回請求者,服務請求者再根據 WSDL 文檔將 SOAP 返回消息解析成自已能理解的內容。
WSDL 的目的就是告訴外界我有什么樣的服務,這類似Java的Interface。
2)SOAP(SimpleObjectApplicationPropotol)是WebService的標準通信協議,是一種標準化的傳輸消息的XML消息格式,以便大家都用同一種格式來講話,大家可以相互完全理解。SOAP請求(request)消息將客戶端的服務請求發給服務器,例如:需要調用什么樣的服務接口,以及接口參數值等。SOAP答復(respone)消息是從服務器返回給客戶端的消息,如服務接口實現后的結果返回值或調用服務時的錯誤信息等。
3)UDDI(Universal Description Discovery and Integeration)是一種創建注冊表服務的規范,以便大家將自已的 WebService 進行注冊發布供使用者查找。當服務提供者想將自己的 WebService 注冊到相應的UDDI商用注冊網站時,如IBM的http://uddi.ibm.com/。服務提供者可以 SOAP 消息格式將自已的服務發布到這些網站。由于WSDL文件已給定了WebService 的地址URL,外部可直接通過WSDL 提供的 URL 進行相應的 WebService 調用。所以 UDDI 并不是一個必需的WebService 組件,服務方完全可以不進行 UDDI 注冊。
4Web服務的開發方式
完整的Web服務開發包括3個階段:開發、部署、發布。
1)開發階段:此階段包括邏輯模塊(Java Bean或EJB)的開發與部署,WSDL 定義文件的設計或生成。
2)部署階段:指定 Web 服務的傳輸協議(綁定),明確服務的終端地址,創建 Web 的附屬文件,以平臺可識別的方式將 Web 服務注冊到相應服務描述部署文件。
3)發布階段:將 Web 服務的接口和調用地址公開給客戶端調用,常用的發布方式為提供WDSL鏈接,也可選擇 UDDI。
在開發階段,有兩種可以實施的方案:自上而下(top-down)方式,即先設計WSDL,即服務接口定義,然后生成服務邏輯代碼。自底向上(bottom-up)方式,即先完成業務邏輯代碼的開發或使用已經存在的邏輯代碼,再根據代碼暴露出服務的接口WSDL,包裝Web服務。這兩種方式都可以實施,現階段,自底向上的模式更常見,大多數的SOA應用都是基于當前的應用創建Web服務。
參考文獻:
[1] IBM Co.Service-oriented modeling and architecture[EB/OL].[2008-04-16].http://www.ibm.com/developerworks/webservices/library/ws-soa-design1/.
[2] Christensen E,Curbera F, Meredith G,et al. Web Services Description Language[EB/OL].[2008-04-12].http://www.w3.org/TR/wsdl.
[3] 毛新生,金戈. 以服務為中心的企業整合[EB/OL].[2008-04-12].http://www.ibm.com/developerworks/cnwebservice/ws-soil/.