SOA的參考架構及技術標準的應用研究

isoa發表於2008-07-08

  SOA從概念到實用,僅僅短短几年時間,發展十分迅速。等隨著SOA發展的深入,各種SOA相關技術標準也隨之發展和完善。SOA的優點和特點,已經為大多數廠家和使用者所熟知,如鬆耦合、業務敏捷性、基於開放式標準等,那麼如何構建企業或組織的SOA應用呢?構建SOA架構的企業應用或電子政務,需要基於開放式的SOA相關技術標準,不然,基於非標準技術的應用,也僅僅是傳統的應用,而不是所謂的SOA,更談不上獲取SOA所帶來的好處了。那麼,面對龐大而複雜的SOA相關技術標準,我們如何來有選擇的使用它們呢?業務離不開技術的支援,而技術需要為業務服務,因此,離開業務談技術標準,猶如紙上談兵。下面,我們將從業務和技術兩個角度,淺談一下SOA技術標準的應用。

  1.SOA參考架構

  談到SOA技術標準的應用,需要從業務角度瞭解一下SOA參考架構。不同廠商及組織定義的SOA參考架構,基本上大同小異,本文以長風開放標準平臺軟體聯盟所推薦的為例,來作簡單介紹。長風聯盟的SOA-RA-TF(SOA參考架構工作組)參照相關的國際標準,充分考慮國內的實際業務需求,提出了一個SOA參考架構,如圖1所示。長風聯盟SOA參考架構本身,體現了鬆散耦合特性,它結合了傳統技術和Web服務技術,考慮了各種應用場景,可靈活地分拆組合使用。

  SOA參考架構及相關技術,主要應用在企業應用整合領域,它能夠以服務的方式共享和複用企業現有應用資產,保護使用者IT投資,並能夠以服務的方式構建新的業務流程,對組織中的業務流程進行靈活的重構和優化,增強業務的敏捷性。下面從業務的角度,簡要介紹一下SOA參考架構各個部分的作用與定位。

  1)通過底層的介面卡服務,將組織現有應用系統進行封裝,形成可複用的服務,來複用組織中的現有應用資產。所以,介面卡服務是應用整合的基礎;

  2)服務匯流排,作為服務之間的協調中介,可將組織中的所有服務如介面卡服務、資訊服務、安全服務、業務服務、流程服務等,集中管理起來,暴露服務介面,並提供增值的服務註冊、路由查詢、服務質量保障等功能,它在SOA參考架構中起著核心中樞的作用;

  3)流程服務,用來將組織中的服務,進行編排組合,以滿足業務流程的需要,同時,也能夠形成更大粒度的服務,形成新的業務服務。能不能體現業務敏捷性及滿足使用者複雜的業務流程需要,流程服務起著關鍵的作用;

  4)頂層的互動服務,是直接面向使用者的一層,能夠為使用者提供友好的互動介面及門戶整合的功能;SOA實施的效果,往往通過互動服務這張臉面來體現;

  5)當然,要開發和管理SOA所需要的執行服務,還離不開整合開發環境、執行管理系統及服務資源的管理。SOA是否易於被使用者接受、開發是否快捷高效、管理和維護是否方便,這幾種輔助工具非常關鍵。

  2.SOA相關技術標準及應用

  根據SOA參考架構所對應的業務及構建SOA涉及的技術要求,需要對應的技術標準來統一不同廠家和使用者的認識,構建開放的協作契約。根據技術標準在 SOA 中的角色功能,我們將其分為三大類:服務層次上的資訊互動規範、基礎通訊標準規範、後設資料標準規範。根據各種標準規範在SOA 體系中的角色功能,可以將 SOA 協議棧分為 7 層。從底向上,包括傳輸層、訊息層、描述層、管理層、服務組合層、表示層,以及服務資源註冊和發現層,其中除了ebXML和電子商務相關的技術標準(如資源註冊的ebRS、訊息表示ebMS、外部服務資源編排的WS-CDL等)外,大多數在國內已經得到了相當的應用。下面簡單介紹一下相關的技術標準及其應用場合。

  2.1.傳輸層

  傳輸層作為傳統的傳輸協議,在SOA技術實現中,依然發揮著重要的作用。基於SOA的傳輸協議,仍然利用原有的傳輸協議,如HTTP、RMI/IIOP(分別用於Java的遠端物件呼叫和CORBA的遠端通訊)、SMTP、TCP/IP等。當然,在使用基於Web的服務時,常常使用HTTP協議,以便於網際網路上穿越防火牆。

  2.2.訊息層

  SOAP協議也基於XML描述,格式簡單,語言獨立,便於解析和擴充套件,因此,訊息層SOAP已經是Web服務消費的訊息傳輸載體的首選。Web服務協議棧中的許多規範,都是基於SOAP進行擴充套件的,如WS-Security、WS-Reliability、WS-Policy等。在有特殊要求的電子商務領域,訊息傳輸還可以採用ebXML中的ebMS標準,而基於J2EE技術的應用中,還可以選擇JMS作為傳輸協議。當然,我們還可以使用自定義或是某些廠商定義的傳輸協議,但那不是SOA理想的選擇。

  2.3.描述層

  要消費、發現和識別服務資源,需要對服務的語義進行描述。雖然SOA中的服務並不一定是Web服務,但由於Web服務的語言獨立性、協議的簡單性及眾多廠商的支援,Web服務已經是最常用的服務表現形式,而多數SOA的技術標準也大多是基於Web服務的。

  WSDL,即Web Service Description Language的縮寫,是由W3C組織提出的,它從句法層面對Web服務的功能進行描述,包括4個不同的粒度:資料型別(Data type)、訊息(Message)、方法(Operation)和訪問埠(PortType)。鑑於此協議比較簡單,與傳統的物件和方法呼叫等概念較一致,而且語言獨立,得到了絕大多數廠商的支援,如IBM、BEA及國內中介軟體廠商東方通等公司的產品,都提供了對Web服務及其標準的支援,而WSDL和SOAP已經成為Web服務最基礎的標準。

  另外,在表示Web服務的限制條件和能力方面,基於SOAP協議擴充套件出WS-Policy協議,目前也逐漸得到部分廠商的支援和應用。

  由於WSDL在Web服務語義方面的描述還不完善,DARPA組織發展了OWL-S協議,它是語義Web服務標記語言的標準,它比WSDL更能向使用者提供可理解的服務資源的描述形式,提高服務選取與推薦的準確性。語義Web服務的主要方法是利用Ontology來描述Web服務,然後通過這些帶有語義資訊的描述實現Web服務來實現服務的自動發現,呼叫和組合。雖然此協議相對完整和嚴謹,但是也相對複雜,目前它主要在學術界進行研究和發展,實際應用還比較少。

  2.4.管理層

  與傳統的IT技術相比,鬆耦合的分散式的SOA軟體系統,處理服務質量方面的管理問題,更加棘手,難以處理。例如安全性問題,對於跨網路的多個服務訪問,如何驗證合法身份、防止飽和性攻擊、訊息內容如何防止篡改和竊取、多個信任域如何一次性驗證身份等;另外,如果一筆完整的交易或業務,需要訪問跨網路的多個服務,中途呼叫失敗,如何保證事務的完整性?一個業務要多次非同步訪問同一個服務,而且有呼叫順序的要求,如何保證訊息傳送的可靠性?以上這些問題,如果使用傳統的多種非標準技術或不同廠家來實現這些要訪問的服務,要解決這些問題簡直是場噩夢。這種情況下,統一使用標準的協議,才是解決的最佳方案。為此,一些標準化組織如OASIS等發展出了系列的標準。如WS-Security標準系列、WS-Trust、SAML等,結合傳統的安全標準,如KPI、加密演算法等,可以用來解決Web服務的安全性問題;WS-Reliability、WS-ReliableMessaging標準,可以用來解決訊息傳輸的可靠性問題;WS-Transaction系列協議,用來解決傳統的多個Web服務消費的事務完整性問題。上述協議,對於開發服務容器、業務服務及企業服務匯流排等產品,可以考慮使用這些協議。目前上述部分標準已經在某些商用產品中使用,如應用伺服器(服務容器中實現)、企業服務匯流排產品等。

  另外,對於Web服務及資源的分散式管理,還可以參考Web服務分散式管理WSDM標準及Web服務資源框架WSRF協議,不過這些協議推出時間比較晚,目前還鮮有使用者使用和廠家支援。

  2.5.服務組合層

  服務組合層的標準規範,主要用來構建基礎服務及將服務進行組合編排,來形成滿足使用者需要的業務服務。

  WS4BPEL,即Web Service Business Process Execution Language的簡寫,Web服務業務流程執行語言,它是一種可執行語言,能夠與各種促使業務流程自動化的軟體系統相相容。Web服務編制,通過說明性的方式(而不是程式設計的方式)表達了進行Web服務合成的需求。此標準主要用於組織內部的業務流程管理及服務編排,目前越來越多的BPM產品基於此規範實現,大有代替傳統工作流技術的趨勢。

  WS-CDL,即Web Services Choreography Definition Language,Web服務編排定義語言,它定義為在多個交易夥伴之間建立形式化關係,它不要求所有被整合的端點(endpoints)都有Web服務基礎設施。此規範更多地用於組織之外的服務與流程編排,目前在國內還不常用。

  SCA(Service Component Architecture),即服務元件架構,提供了一種程式設計模型,可以支援基於SOA的應用程式實現。SCA是一種模型,可以支援實現服務元件的各種技術,連線服務元件的各種存取方法。服務資料物件(SDO)的設計初衷是為了統一和簡化應用程式處理資料的方式,使用SDO,應用程式設計人員可以用一致的方法操作異構資料來源,包括關係型資料庫,XML資料來源,Web services和企業資訊系統。理想上,可以使用多種技術開發元件,然後使用SCA標準來組裝元件及更大粒度的服務組裝,而SDO可以作為服務及元件之間傳輸的標準資料格式。雖然SCA已經成為正式的標準,而且有少量的開源和商用實現,但由於其比較年輕(2007年推出第一個1.0版本),國內實際使用的還比較少,而SDO由於發展較早,國內已經有部分使用者和廠商在使用。

  JBI是Java業務整合(Java Business Integration)的簡稱,它定義了一個標準的體系結構允許第三方的元件插入到標準的基礎設施上,並且即使這些元件是有不同提供商提供的,它們也可以以一種可預見的和可靠的方式互操作。JBI標準可用來實現企業服務匯流排及企業應用整合產品,但由於JBI限於Java技術,目前商用的產品支援還比較少,倒是一些開源實現比較多。

  2.6.表示層

  表示層的標準如JSR168和WSRP,主要應用在Portal軟體的開發。JSR168是java 規範要求,它為建立portlet建立標準的api,它是為實現porltet、基於java的門戶伺服器和其他web應用程式之間的互操作性而設計的。在開發基於Java技術的門戶產品和Web頁面整合時,可以考慮使用JSR168規範。而且,大多數的基於Java技術的Portal產品,都支援此規範。

  WSRP,即Web Services for Remote Portlets的縮寫,它定義瞭如何利用基於 SOAP 的 Web 服務在門戶應用程式中生成標記片斷的規範。通過定義一組公共介面,WSRP 允許門戶在它們的頁面中顯示遠端執行的 portlet,而不需要門戶開發人員進行任何程式設計。WSRP是由OASIS組織制定,目前已得到多數廠商的支援,鑑於它基於Web服務標準,而且技術相對獨立,因此隨著此標準的逐漸完善,相信越來越多的Portal產品會支援此標準。

  2.7.服務資源的註冊與發現

  在服務資源的註冊與發現機制上,主要有兩種標準規範可用,UDDI和ebXML中的ebRS標準。UDDI註冊內容包括Web服務的技術模型和業務模型,本身可擴充套件,但目前其註冊的內容和描述還不夠豐富和完整,因此它主要用於Web服務的註冊和查詢,而Web服務相關其他資源、語義方面的內容,則不能滿足要求。在商用的Web服務註冊器的實現上,多有基於UDDI的產品,而其他相關資源的註冊和查詢,則用其他技術實現。

  ebXML中的ebRS標準,其序號產生器制要比UDDI豐富和完善的多。它的序號產生器制用途廣泛,可以表示範圍廣泛的資料物件,包括 xml 模式、業務流程描述、ebXML Core Component、UML模型、一般貿易合作伙伴資訊及軟體元件。但正是由於其完善而複雜,因此它主要用於電子商務領域。

  3.總結

  本文不是SOA寶典,不可能覆蓋所有的SOA相關技術標準和應用,如基於J2EE的或基於CORBA的SOA相關技術標準、Web服務完整協議棧、Web服務互操作協議等。因此,有興趣的讀者,可以借鑑本文提供的思路和線索,進一步深入研究SOA相關技術標準和應用,以滿足自身或企業的SOA實施和開發需要。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14780828/viewspace-374588/,如需轉載,請註明出處,否則將追究法律責任。

相關文章