官术网_书友最值得收藏!

2.2 面向服務的軟件架構

HTTP在網絡中的廣泛應用,使得采用SOAP和HTTP的Web Services實現互連成為可能,而且Web Services可以輕松地穿越絕大多數的防火墻,與XML結合使其具有數據交換的能力。以XML、Web Services為核心的面向服務架構(Service Oriented Architecture,SOA),是實現跨領域信息交換的一種理想軟件架構[8]

2.2.1 面向服務架構特點

面向服務架構(SOA)通過建立一種規范、統一的架構,實現系統的快速開發、集成和重用。集成的對象是Web服務或者被封裝成Web服務的業務流程。Web服務基于廣泛接受的、開放的技術標準,以面向對象技術為基礎,對數據和業務流程進行封裝,支持服務實現和服務接口描述的分離、服務的自動查找和動態綁定,以及服務的組合。

SOA不僅可以實現資源的重復使用和整合,而且能夠跨越各種硬件平臺和軟件平臺,實現不同資源和應用的互聯、互通和互操作。SOA是一種粗粒度、松耦合的服務架構,服務之間通過簡單、精確定義的接口進行通信,不涉及底層編程接口和通信模型,其主要特點如下。

1.基于開放的標準

SOA采用開放式XML、XML Schema、SOAP、WSDL等標準,因此可以利用XML、XML Schema定義數據規范,使用WSDL、WADL等標準定義各種數據訪問服務接口,實現分布數據源的統一管理。無論底層數據源有多復雜,通過將數據訪問變為Web服務,所有上層應用都可以使用統一的方式進行數據訪問,實現對底層大量異構的孤立數據源的數據訪問服務。通過統一的數據訪問,可以解決信息訪問不標準、不規范的問題。

2.松散的系統耦合

SOA將各種信息資源和應用資源按一定的標準封裝為服務,服務使用者和服務提供者之間是一種松耦合關系。這樣,可以把遺留系統的數據和業務封裝為服務加以復用,實現了對現有信息資源的保護,充分挖掘了現有資源的應用潛力,避免了信息系統信息資源利用率低、重復建設等問題。

3.快速的業務需求響應

信息共享需求,在不同的階段和條件下,會不斷發生變化。為了使信息共享快速滿足新的業務需要,需要讓應用和數據具備一種敏捷的適應變化能力,從而迅速實現關鍵業務服務,并滿足變化的需求。通過SOA平臺可以靈活地控制以Web服務為核心的業務邏輯,實現高效的業務組合和數據格式轉換,在最短的時間內滿足各種數據共享需求。

面向服務架構的主要技術是Web Services。Web Services是基于一系列開放的、標準協議的分布式計算模式,提供基于網絡的、與開發環境無關的軟件服務。Web Services的實現方式主要有SOAP Web Services和Restful Web Services。這兩種方式各具特點,在實施跨領域信息交換時可根據具體應用需求選擇。

2.2.2 SOAP Web Services

SOAP Web Services主要基于服務使用者、服務注冊中心、服務提供者3種角色進行交互。這3種角色通過發布/撤消發布、查找、綁定3種動作實現交互,如圖2-30所示。

img

圖2-30 Web服務體系結構

服務提供者(Service Provider),是Web服務的所有者,也是提供服務的平臺,為其他服務和用戶提供自己已有的功能。服務提供者可以發布自己的服務,并對使用自己服務的請求進行響應。

服務使用者(Service Requester),是Web服務功能的使用者,利用SOAP消息尋找并調用服務,或啟動與服務交互的應用程序。服務使用者利用服務注冊中心查找所需的服務,然后請求使用該服務。

服務注冊中心(Service Registry),作用是把一個服務使用者與合適的服務提供者聯系在一起,充當管理者或代理的角色,通常也稱為服務代理,用于注冊已經發布的服務并對其進行分類管理,提供搜索服務。在靜態綁定開發或動態綁定執行期間,服務使用者查找服務并獲得服務的綁定信息(在服務描述中)。服務注冊中心一般是可搜索的服務描述注冊中心(如UDDI),服務提供者在此發布他們的服務描述,服務使用者查找服務并獲得服務的綁定信息。對于靜態綁定的服務使用者,服務注冊中心是體系結構中的可選角色,因為服務提供者可以把描述直接發送給服務使用者。同樣,服務使用者可以從服務注冊中心以外的其他來源得到服務描述,如本地文件、FTP站點、Web站點、廣告等。

服務提供者、服務使用者和服務注冊中心的主要操作如下。

(1)發布(Publish)/撤消發布(Delete)操作。該操作是指將服務發布至服務注冊中心或從服務注冊中心撤消。服務提供者通過服務注冊中心來發布或撤消某個服務。

(2)查找(Find)操作。該操作由服務使用者和服務注冊中心共同完成,服務使用者可以通過服務注冊中心查找特定種類的服務,服務使用者描述他們正在尋找的服務類型,服務注冊中心反饋和請求最匹配的結果。

(3)綁定(Bind)操作。該操作發生在服務使用者和服務提供者之間,雙方經過適當的商討之后,服務使用者就可以訪問和調用服務提供者所提供的服務。

SOAP Web Services采用XML、簡單對象訪問協議(Simple Object Access Protocol,SOAP)、Web服務描述語言(Web Services Description Language,WSDL)、統一描述發現和整合(Universal Description,Discovery and Integration,UDDI)等協議,實現跨平臺、跨系統的分布式應用集成。

SOAP是消息傳遞的協議,它規定了Web Services之間是怎樣傳遞信息的。SOAP繼承了XML規范的開放性和描述的可擴展性,與現有的HTTP、SMTP等網絡通信協議能很好地兼容。SOAP的主要目標是消除組件平臺和編程語言的差異,完成分布式環境下端與端之間信息的通信與交互,提高互操作性。SOAP是一種簡單且輕量級的、不包含任何應用語義或傳輸語義的消息框架,因此其非常利于擴展。

WSDL是一種基于XML規范的關于Web服務的描述語言,Web Services的提供者將自己Web服務的所有相關內容,如所提供服務的傳輸方式、服務方法接口、接口參數、服務路徑等,生成相應的文檔,發布給服務使用者。WSDL由3個部分組成:What、How和Where。What部分描述了Web Services的具體內容;How部分將Web Services的服務內容和通信協議進行綁定;Where部分指定Web Services的URI。

UDDI是一種創建注冊服務的規范。簡單來說,UDDI用于集中存放和查找WSDL描述文件,起到目錄服務器的作用,以便服務提供者將自己的Web Services進行注冊發布,供服務使用者查找。

2.2.3 Restful Web Services

傳統的Web應用大多采用B/S架構,這種架構的特點是部署方便,但許多HTTP自身的特性沒有得到利用。為了能夠充分利用HTTP更多良好的特性,Roy Thomas Fielding博士提出了REST方法。REST的全稱是Representation State Transfer,它描述了一種設計Web應用的架構風格,可以降低開發的復雜性。

Restful Web Services 是符合REST架構風格的一種輕量級的Web Services。它采用HTTP作為應用協議和傳輸協議,使用統一資源標識符(Uniform Resource Identifier,URI)來表示唯一對應的資源,使用HTTP提供的GET、POST、PUT、DELETE共4種基本方法,對資源進行查詢、創建、修改和刪除操作,利用緩存來提高響應速度,其性能、效率和易用性都優于SOAP Web Services。Restful Web Services的優勢主要表現為:①可以利用緩存來提高響應速度;②通信本身的無狀態性可以讓不同的服務器處理一系列請求中的不同請求,進而提高服務器的擴展性;③瀏覽器可作為客戶端,簡化軟件開發的需求;④相對于其他疊加在HTTP協議之上的機制,Restful Web Services的軟件依賴性更小;⑤不需要額外的資源發現機制;⑥在軟件技術的演進中,兼容性更好。

Restful Web Services相關的概念主要有資源、統一資源標識符、表示、統一接口服務[8]

(1)資源。

資源是存放在計算機或網絡上的文檔、記錄及運行某程序所獲得的結果等。Restful Web Services將整個Web看作資源的集合。例如,信息使用者想獲得信息提供者的船舶位置信息,則“船舶位置信息”就可以看作一個資源。

(2)統一資源標識符。

Restful Web Services是面向資源的,因此資源必須是唯一的。這就需要使用一種一致的命名規則去標識資源。資源用URI(Uniform Resource Identifier)命名。URI中不僅包含資源的地址,還包含對資源的操作指令,服務器端則根據URI中的指令確定客戶請求的處理方式。因此,這里的URI不是單純的URL(Uniform Resource Locator)網址。

例如,資源使用者要與資源提供者進行一次交互,資源使用者會發出形如這樣的請求:http://hello.hello.org/hello.txt。資源使用者對該請求的理解是:①連接到資源提供者所在服務器hello.hello.org;②向其發送GET方法及指定相關資源的詳細路徑/hello.txt。

(3)表示。

表示(Representation)是一種序列化的數據結構。在Restful Web Services中,表示是一種超媒體,它不僅包含數據,還包含指向其他資源的鏈接。表示可以在資源使用者和資源提供者之間進行雙向的信息傳遞。除此之外,客戶端可以將對一個新資源的表示傳送到服務器,在服務器上創建該資源;也可以將對一個現有資源的新表示傳送到服務器,使服務器對已有資源進行更新操作。表示的超媒體格式有多種,如XHTML+XML、ATOM+XML和JSON。

(4)統一接口服務。

REST是基于HTTP協議的,任何對資源的操作行為都是通過HTTP協議提供的方法來實現的。HTTP把對一個資源的操作限制在4種方法以內:GET、POST、PUT和DELETE。若要在服務器上創建資源,使用POST方法;若要檢索某個資源,使用GET方法;若要更改資源狀態或對其進行更新,使用PUT方法;若要刪除某個資源,使用DELETE方法。

2.2.4 企業服務總線

企業服務總線(Enterprise Service Bus,ESB)是傳統消息中間件技術與Web Services、XML技術的結合,可以在一個異構的環境中保證信息穩定,實現信息可靠傳輸,屏蔽了硬件層、操作系統層、網絡層等相對復雜、煩瑣的接口,為應用提供了一個統一、標準的信息通道,確保應用和這些底層平臺無關,從而實現不同操作系統、不同數據庫、不同平臺和基于這些平臺之上開發的應用軟件的數據交換、數據共享與應用集成,為信息系統的數據交換與共享提供信息傳輸手段。

不同廠家實現的ESB,其組成可能不同,但基本的構成包括通信組件、服務組件和適配器組件,如圖2-31所示。

img

圖2-31 企業服務總線框架

通信組件主要實現基于消息中間件的傳輸。

服務組件主要實現服務編排、消息格式轉換服務、消息路由、擴展引擎等功能,包括:①服務編排組件,可以將多個不同功能的Web服務編排成一個具有新業務功能的服務;②XSLT消息格式轉換服務,支持使用XSLT將輸入XML格式的消息轉換成目標XML格式;③路由規則引擎,能夠實現基于規則庫的消息路由和智能化的服務調用;④擴展引擎開發API,為開發者提供二次開發服務,擴展總線功能。

適配器組件主要實現各種協議的接入,包括:①通過SOAP適配器,能夠連接Web Services端點;②通過E-mail適配器,可以連接POP3(SMTP)電子郵件服務器,監聽收到的電子郵件并自動處理;③通過FTP適配器,可以連接FTP服務器,監聽收到的文件并自動處理;④通過數據庫適配器,可以連接各種關系數據庫;⑤通過專用系統定制適配器,可以連接遺留系統信息。

ESB能實現多種通信協議的接入、不同通信協議之間的轉換、不同數據格式的加工和處理、基于數據內容的智能路由。ESB的核心功能如下。

(1)協議適配。ESB可以方便地與HTTP、FTP、POP3/SMTP和文件系統等通信協議或傳輸方式對接。

(2)可靠的消息傳輸。ESB采用消息中間件實現可靠的消息傳輸和異步通信,如MQ、JMS等標準消息中間件。

(3)基于XML的消息傳遞。XML獨立于操作平臺和編程語言,具有很好的互操作性、可讀性、可擴展性。基于XML的消息便于ESB進行轉換和路由。

(4)智能路由和分發。ESB可以方便地解析XML消息,并根據其內容進行路由、聚合、加工和驗證等操作。

(5)消息轉換。ESB支持XML與XML、文本文件與XML、數據庫與XML等之間的轉換,并提供多種轉換函數。

(6)內置豐富引擎組件和可擴展的API。ESB內置包括BPEL、XSLT、Rules、Script、SCA等組件,實現服務編排、規則編輯、腳本語言和二次開發。

(7)監控和管理。ESB監控和管理應用程序運行的狀態和使用的資源,平衡處理負載,減少對網絡帶寬的利用,并監控服務之間消息的轉發、服務的調用、業務流程的執行。此外,ESB還具有良好的日志功能。

目前,商業ESB產品主要有IBM WebSphere ESB、Microsoft ESB、JBOSS SOA Platform、普元ESB、金蝶ESB等,開源的ESB產品主要有OpenESB、Mule、Apache ServiceMix等。

主站蜘蛛池模板: 禹城市| 嘉荫县| 孟村| 上思县| 屏东县| 福贡县| 东丰县| 余江县| 德州市| 罗山县| 鹤庆县| 阳春市| 余庆县| 广汉市| 团风县| 乐东| 军事| 安徽省| 枣庄市| 桂东县| 饶阳县| 西城区| 梁山县| 定远县| 台南市| 苍溪县| 五台县| 徐汇区| 镇沅| 临洮县| 五家渠市| 通山县| 宜君县| 清水河县| 佛学| 枣强县| 南宁市| 密云县| 章丘市| 新竹县| 高安市|