1 概述
面向服務的體系架構(Service Oriented Architecture, SOA)就是在分布式的環境中,將各種功能都以服務的形式提供給最終用戶或者其他服務。如今,企業級應用的開發都采用面向服務的體系架構來滿足靈活多變,可重用性高的需求。IBM Rational Software Architect(RSA)是一套設計與開發工具,它構建在開放的、可擴展的Eclipse3.0平臺之上,實現了多項行業最新標準,提供了靈活的插件擴展機制。借助UML2.0技術,它實現了模型驅動的軟件開發模式,可以幫助開發團隊創建更加強壯的軟件結構。
本文作為SOA&RSA系列文章的第一篇,從總體上介紹了SOA實現的相關技術,以及RSA中對這些技術的支持與擴展。在后面的系列文章中,我們將對一些主要技術和工具做有針對性的具體介紹。
![]() |
|
2 面向服務的體系架構 - SOA
在經典軟件工程理論中,不管是瀑布方法還是原型方法,都是從需求分析做起,一步一步構建起形形色色的軟件系統。但是,需求變更像一個揮之不去的陰影,時刻伴隨著系統左右。每一個實際應用系統的開發者都飽嘗了在系統進入開發階段、測試階段,甚至上線階段遭遇應接不暇的需求變更的極端痛苦。如何解決這一問題?能否來一場軟件開發和架構的革命?SOA的提出,就是被人看成這樣的一場革命。其實質就是要將系統模型與系統實現分割開來。
2.1 什么是SOA
2.1.1 定義
SOA并不是一個新概念,有人就將CORBA和DCOM等組件模型看成SOA架構的前身。早在1996年,Gartner Group就已經提出了SOA的預言,不過那個時候僅僅是一個"預言",當時的軟件發展水平和信息化程度還不足以支撐這樣的概念走進實質性應用階段。到了近一兩年,SOA的技術實現手段漸漸成熟了,在BEA、IBM等軟件巨頭的極力推動下,才得以慢慢風行起來。
關于SOA,目前尚未有一個統一的、業界廣泛接受的定義。一般認為:SOA,面向服務的架構是一個組件模型,它將應用程序的不同功能單元----服務(service),通過服務間定義良好的接口和契約(contract)聯系起來。接口采用中立的方式定義,獨立于具體實現服務的硬件平臺、操作系統和編程語言,使得構建在這樣的系統中的服務可以使用統一和標準的方式進行通信。這種具有中立的接口定義(沒有強制綁定到特定的實現上)的特征稱為服務之間的松耦合。
2.1.2 SOA中的特征
從SOA的定義中,我們看到兩點:
基于上面討論,我們給出SOA的下面一些特征:
2.2 SOA不等于web 服務
由于Web服務與SOA有著很多相同的技術特點,如:基于XML語言,符合SOAP、WSDL和UDDI標準等,很多人都認為下一代Web服務就是SOA。 Web服務可以用來實現SOA,但是如果沒有Web服務,企業照樣也可以很好地實現SOA。反之,即便是利用Web服務技術,也不一定能保證SOA的效果就更好。
Web服務與SOA關系如圖1所示。
Web服務是一套技術體系,可以用來建立應用解決方案,解決特定的消息通信和應用集成問題。隨著時間的推移,我們發現,這些技術在不斷發展、不斷成熟,也會更好地幫助你實現SOA。SOA是一種軟件架構,而不局限于某個技術的組合(例如Web服務),它超越了技術范疇。在一個商業環境中,純粹的SOA是一種應用軟件架構,其中所有的功能都是相互獨立的服務模塊,通過完備定義的接口相互聯系起來。只要按照一定的順序來請求這些功能模塊所提供的服務,就可以形成完整的業務流程。正如IBM SOA技術和策略總監Mark Colan先生強調的那樣:"Web服務的確是實現SOA一條最好的路,但不等同于SOA。"
SOA的靈活性將給企業帶來巨大的好處。如果把企業的IT架構抽象出來,將其功能以粗粒度的服務形式表示出來,每種服務都清晰地表示其業務價值,那么,這些服務的顧客(可能在公司內部,也可能是公司的某個業務伙伴)就可以得到這些服務,而不必考慮其后臺實現的具體技術。更進一步,如果顧客能夠發現并綁定可用的服務,那么在這些服務背后的IT系統能夠提供更大的靈活性。
但是,要得到這種靈活性,需要有一系列實現架構的新方法,這是一項艱巨的任務。企業架構設計師必須要變成"面向服務的架構設計師",不僅要理解SOA,還要理解SOA的實踐。在架構實踐和最后得到的架構結果之間的區別非常微妙,也非常關鍵。那么目前SOA的實現技術究竟有哪些呢?
![]() |
|
3 SOA的實現技術
3.1 實現SOA的核心技術 - web 服務
正如我們前面所講的,服務是整個SOA實現的核心,web服務相關技術自然成為實現SOA的首選。
3.2 SOA 基礎架構的關鍵組件 -企業服務總線(Enterprise Service Bus,ESB)
企業服務總線ESB(Enterprise Service Bus)是SOA架構的一個支柱技術。 作為一種消息代理架構它提供消息隊列系統,使用諸如SOAP或JMS (Java Message Service)等標準技術來實現。 有人把ESB描述成一種開放的、基于標準的消息機制,通過簡單的標準適配器和接口,來完成粗粒度應用(比如服務)和其他組件之間的互操作。
ESB的主要功能有:通信和消息處理、服務交互和安全性控制、服務質量和服務級別管理、建模、管理和自治、基礎架構智能等。ESB由中間件技術實現并作為支持 SOA 的一組基礎架構,支持異構環境中的服務、消息,以及基于事件的交互,并且具有適當的服務級別和可管理性。
SOA的原則可以描述如下:
為了實現 SOA,應用程序和基礎架構都必須支持 SOA 原則。啟用 SOA 應用程序涉及到創建服務接口,服務接口可以直接也可以間接地通過使用適配器用于現有的或新的功能。從最基本的級別來看,啟用該基礎架構涉及到規劃功能來將服務請求路由和傳遞給正確的服務提供者。然而,基礎架構支持在不影響服務的客戶端的情況下由另一個服務實現替代原有的服務實現也是至關重要的。這不僅需要根據 SOA 原則指定服務接口,而且需要基礎架構允許客戶端代碼以獨立于所涉及的服務位置和通信協議的方式來調用服務。這樣的服務路由和替代是 ESB 的許多功能中的一部分。
ESB 支持這些服務交互功能,并提供集成的通信、消息傳遞以及事件基礎架構來支持這些功能。因此,它將當今正在使用的主要企業集成模式組合成一個實體。ESB 為 SOA 提供與企業需要保持一致的基礎架構,從而提供合適的服務級別和可管理性、以及異構環境中的操作。圖2顯示了ESB為SOA提供的基礎架構:
ESB 需要某種形式的服務路由目錄(service routing directory)來路由服務請求。然而,SOA 可能還有單獨的業務服務目錄(business service directory),其最基本的形式可能是設計時服務目錄,用于在組織的整個開發活動中實現服務的重用。Web 服務遠景在業務服務目錄和服務路由目錄的角色中都放置了一個 UDDI 目錄,因而使得可以動態發現和調用服務。這樣的目錄可以視為 ESB 的一部分;然而,在這樣的解決方案變得普遍之前,業務服務目錄可能與 ESB 是分離的。
Business Service Choreographer 的作用是通過若干業務服務來組合業務流程;因此,它將通過 ESB 調用服務,然后再次通過 ESB 將業務流程公開為客戶端可用的其他服務。然而,Business Service Choreographer 在編排業務流程和服務中所扮演的角色確定了這種業務工作流技術是一種與基礎架構技術 ESB 分離的技術。
最后,B2B Gateway 組件的作用是使兩個或多個組織的服務在受控且安全的方式下對彼此可用。這有助于查看這些連接到 ESB 的組件,但它們并不是 ESB 的一部分。雖然有一些網關技術可以提供適合于實現 B2B Gateway 組件和 ESB 的功能,但是 B2B Gateway 組件的用途是將其與 ESB 分離。事實上,這種用途可能需要附加的功能(如合作伙伴關系管理),這些功能不是 ESB 的一部分,并且不一定受到 ESB 技術的支持。
3.3 實現SOA的方法學 - 模型驅動的開發
SOA強調松散耦合,強調跨平臺集成,這與模型驅動的架構和開發不謀而合。模型驅動的架構和開發(Model Driven Architecture, MDA以及Model Driven Development, MDD)并沒有把業務模型和平臺無關模型分開來,而是把平臺無關模型做為起點。
MDA由提出CORBA的OMG模型提出。MDA認為架構設計師首先要對待創建的系統有一個形式化的UML的模型。MDA首先給出一個平臺無關的模型來表示系統的功能需求和use cases,根據系統搭建的平臺,架構設計師可以由這個平臺無關的模型得到平臺相關的模型,這些平臺相關模型足夠詳細,以至于可以用來直接生成需要的代碼。
基于MDA的思想,利用MDD方式,我們可以對SOA進行建模,在此基礎上,實現各種形式的模型轉換或擴展實現SOA.
![]() |
|
4 RSA對SOA實現技術的支持
IBM 軟件開發平臺提供了對SOA 應用程序開發的最好支持。IBM 軟件開發平臺包含 Rational 產品家族、向導、模板、及構建應用程序的指南,Rational 開發工具是基于成功的并且非常受歡迎的 Eclipse 平臺,它不僅易用、靈活,而且在每一個開發進程中都可以使用外部開發環境。圖3顯示了基于 Eclipse 的 IBM Rational 產品體系。
Rational Software Modeler 提供了使用設計標準(比如統一建模語言,UML )構建模型的能力。通過 Rational Software Modeler,可以將這些模型轉變為類和源代碼。關于Web 服務的開發,Rational Web Developer for WebSphere Software Version 6.0 提供了一種端對端的環境。利用它,不僅可以完成開發和測試,還可以通過 WebSphere Application Server 產品完成 Web 服務的部署。
Rational Software Architect, RSA涵蓋了RAD以及RSM的全部功能,提供了對基于模型的開發以及web應用開發的最好的支持。
4.1 對web服務開發的支持
RSA中包含了構建 Web 服務的專門工具,可以通過自頂向下,自底向上,為web服務建模等不同角度進行web服務的開發,提供了代碼編寫和完成應用程序的開發環境。還可以使用一些額外的工具(比如 IBM Rational Functional Tester),對應用程序進行測試,然后把它部署到 WebSphere 服務器平臺中。
首先,RSA提供了XML的編輯器,可以對XML進行圖形化的顯示和編輯,圖4顯示了對XML的圖形編輯界面及其對應的源代碼。
另外,在RSA中可以創建web service及其相關的多種資源,如圖5所示
當我們想將現有的資源,如Java Bean或者EJB作為web服務進行發布時,RSA中提供相應的支持,如圖6所示:
相反,如果我們想生成已有的WSDL對應的web服務實現代碼,也可以使用RSA中相應的工具,如圖7所示:
RSA中提供了Web服務瀏覽器,使得發現web服務變得更容易,同時,RSA提供了圖形界面對web服務的WSDL進行顯示和編輯。見圖8:
由于RSA提供了對UML2.0的支持,我們同樣可以根據對web服務建模,通過模型轉換來生成相應的web服務WSDL。如圖9所示:
RSA貫穿整個應用程序開發的生命周期,使得應用程序的設計更加輕松,更一致地將 SOA 應用程序的組件捆綁在一起。
RSA內嵌了WebSphere Application Server 6.0的運行環境,WAS 6.0中的SI-BUS實現了ESB,因此我們可以用RSA進行SOA、ESB的部署和測試。如圖10所示,可以在RSA上創建WAS 6.0的服務實例,并在此服務上部署ESB。
4.2 基于模型的開發與軟件資產重用
除了對web服務開發的支持,RSA還提供對UML2.0規范以及可重用資產規范(Reusable Asset Specification, RAS )的支持。這就使得基于模型的開發(Model Based Development, MDA) 和基于資產的開發(Asset Based Development, ABD)成為RSA最有優勢的兩大特征。這里我們只作簡單介紹,在本文的后續文章中,我們將對這些開發作詳細介紹。
4.2.1 支持UML2.0的MDA平臺
UML是實現MDA技術的一把鑰匙,它使得用MDA技術創建的所有應用程序都基于標準化的、平臺獨立的UML模型。通過將這一通用的、被普遍接受的建模標準作為杠桿,MDA使得開發人員可以創建能被輕便地訪問、天生具有良好的互操作性的應用程序。我們在前面提到,利用RSA可以對web服務建模,通過模型轉換生成web服務。
基于Eclipse平臺的RSA,提供各種模式(Pattern),模板(Template)插件的開發,通過這些高可重用度的模式及模板,用戶只需要簡單的參數配置,就可以得到相應的模型,代碼及其他資源。圖11顯示了應用RSA模式生成新的模型,再基于新模型生成可部署的項目及代碼。
4.2.2 Recipe - 基于資產的開發(Asset Based Development)
RSA中的解決方案指導(Solution Guide)插件基于可重用資產規范對資產的創建,打包,發布,到重用提供了全方位的支持??梢詫⒏鞣N模式,模型及其他可重用資源作為資產導出,存入本地或遠程資產庫以便重用及共享,資產在資產庫中按照一定的方法進行分類,在RSA中使用資產庫瀏覽器對資產進行查找時一目了然。圖12是在可重用資產視圖中,瀏覽資產庫。
![]() |
|
5 總結
在本文中,我們討論了面向服務體系架構的基本概念以及實現技術,并列出了IBM Rational產品RSA對實現SOA的技術的支持,在后續的文章中,我們將對本文中涉及的各項具體技術實現細節作詳細介紹。