??? SOA在Java領(lǐng)域有兩套標(biāo)準(zhǔn):一個(gè)是SUN推出的JBI,另一個(gè)是:IBM和BEA等公司推出的SCA和SDO標(biāo)準(zhǔn)。
??? JBI之關(guān)注Java組件只處理Java組件的集成。
??? SCA實(shí)現(xiàn)了業(yè)務(wù)組件和傳輸協(xié)議的分離,可以處理各種平臺(tái)組件的集成。
??? SDO可以的自由讀取各種不同數(shù)據(jù)源的數(shù)據(jù)。
?
一、JBI編程模型
??? JBI是由容器和插件(Plug-in)組成的可插入式架構(gòu)。這個(gè)容器托管使用消息路由進(jìn)行通信的插件組件。架構(gòu)上,組件通過(guò)一個(gè)抽象的服務(wù)模型(一個(gè)消息傳遞模型,位于任何特殊協(xié)議或消息編碼之上的抽象層中)進(jìn)行交互。
??? 在基于JBI的實(shí)現(xiàn)中,服務(wù)之間并不直接交互。取而代之的是,采用類似EAI實(shí)現(xiàn)中廣泛應(yīng)用的消息代理架構(gòu),JBI容器扮演在服務(wù)之間路由消息的通用中介,(見(jiàn)圖1)。
圖1 通過(guò)JBI協(xié)調(diào)消息交換
?
??? 分離交換的參與者(JBI架構(gòu)的基礎(chǔ)9)在服務(wù)提供者和消費(fèi)者之間提供了解耦,以及一個(gè)用于協(xié)調(diào)(mediating)服務(wù)通信量(或插入所有額外需要的功能)的明確位置。
??? 此時(shí),協(xié)調(diào)器(Mediation)可以支持廣泛的功能,從消息傳送和安全加強(qiáng),到基于內(nèi)容的路由和服務(wù)標(biāo)本標(biāo)定。
JBI容器托管了2類不同的插件組件:
- 服務(wù)引擎(Service Engine,SE)。SE本質(zhì)上是用來(lái)托管JBI環(huán)境內(nèi)部服務(wù)提供者和消費(fèi)者的標(biāo)準(zhǔn)容器f。例如,在JBI環(huán)境中經(jīng)常出現(xiàn)的SE包括數(shù)據(jù)轉(zhuǎn)換器、業(yè)務(wù)規(guī)則容器和BPEL引擎。
- 綁定組件(Binding Component,BC)。BC為JBI環(huán)境外部的服務(wù)消費(fèi)者和提供者提供互聯(lián)性。BC允許集成不提供Java API的組件/應(yīng)用程序,并使用遠(yuǎn)程存取技術(shù)訪問(wèn)它們。
??? 組件間的交互利用了基于WSDL 2.0的標(biāo)準(zhǔn)化服務(wù)定義。WSDL 2.0定義在服務(wù)消費(fèi)者和提供者之間提供了共享的協(xié)議,并作為JBI實(shí)現(xiàn)互操作能力的基礎(chǔ)。
??? 除了標(biāo)準(zhǔn)化的服務(wù)定義,JBI使用“通用化(normalized)”消息的概念支持全局組件互操作能力。消息通用化將協(xié)議與業(yè)務(wù)特定的上下文映射成一個(gè)通用的、可傳輸風(fēng)格,這與EAI實(shí)現(xiàn)中經(jīng)常使用的“規(guī)范(canonical)”消息表示概念非常類似。
??? 每個(gè)JBI容器存在于一個(gè)單獨(dú)的虛擬機(jī)中,并容納所有的BC和SE,容器提供了一組服務(wù),為SE和BC實(shí)現(xiàn)提供操作性支持。
??? JBI也定義了基于JMX的標(biāo)準(zhǔn)控制集合,允許外部管理工具執(zhí)行不同的系統(tǒng)管理任務(wù),也可以管理組件本身。管理支持為以下情形提供了標(biāo)準(zhǔn)機(jī)制:
- 安裝plug-in組件。
- 管理plug-in組件的生命周期(啟動(dòng)/停止等。)。
- 部署服務(wù)器件給組件。
二、服務(wù)組件架構(gòu)(Service component Architecture,SCA)
??? 盡管服務(wù)組件架構(gòu)(SCA)被作為規(guī)范定義(該規(guī)范定義了使用面向服務(wù)架構(gòu)構(gòu)建系統(tǒng)的模型),但它是一個(gè)有效的模型(該模型用來(lái)將組件組合成服務(wù)),并為服務(wù)組合成解決方案提供了額外支持。
??? SCA基于2個(gè)主要的元模型:
- 類型元模型。
- 組合元模型。
類型元模型
??? 這個(gè)元模型(見(jiàn)圖2)描述組件類型、接口和數(shù)據(jù)結(jié)構(gòu)。
圖2 描述組件、接口和它們依賴的元模型
?
??? 一個(gè)組件實(shí)現(xiàn)由以下的4組規(guī)范定義:
- 被提供的接口——組件定義的接口集。這些接口通常定義為WSDL端口類型或語(yǔ)言接口,如Java或C++。一個(gè)組件可以暴露0或多個(gè)接口。每個(gè)接口包含幾個(gè)方法。
- 被要求的規(guī)范(引用)——組件實(shí)現(xiàn)使用的接口集。這些接口通常定義為WSDL端口類型或語(yǔ)言接口,如Java或C++。一個(gè)組件可以有0或多個(gè)接口。
- 用來(lái)裁剪或自定義組件行為的屬性。每個(gè)屬性定義為一個(gè)屬性元素。一個(gè)組件可以包含0或多個(gè)屬性元素。
- 定義組件實(shí)現(xiàn)的實(shí)現(xiàn)元件。SCA允許很多不同的實(shí)現(xiàn)技術(shù),如Java、BPEL、C++、SQL等。SCA為引入新的實(shí)現(xiàn)類型定義了擴(kuò)展機(jī)制。
組合元模型
??? 這個(gè)元模型(見(jiàn)圖3)定義了組件實(shí)例,以及它們是如何連接的。
?
圖3 組件實(shí)例和它們?cè)诮M合元模型中的連接
?
??? 這個(gè)元模型中實(shí)例的概念有別于在OO中使用的實(shí)例概念。此處的組件實(shí)例是指一個(gè)帶有被完整解析的屬性集,為解決特殊問(wèn)題而修改組件行為的組件實(shí)現(xiàn)。
??? 一個(gè)組合定義了很多組件實(shí)例,它們彼此交互,這里的交互使用連線(wire)來(lái)定義。
??? 在SCA中,連線使得絕大多數(shù)的底層代碼被抽出(與Indigo中的信道類似)。如,連線可以被定義同步的或異步的,支持組件調(diào)用的事務(wù)行為等。SCA在幕后處理這些底層細(xì)節(jié)。連線同樣可以在任意方向上連接2個(gè)不同的接口語(yǔ)言(如Java接口和WSDL 端口類型/接口),只要這2個(gè)接口定義的操作是等價(jià)的就行了。
??? 除了連線,SCA也支持通過(guò)特殊的組件類型,如導(dǎo)入(imports)和導(dǎo)出(exports),進(jìn)行模塊間通信。連線、導(dǎo)入和導(dǎo)出組件的結(jié)合使得組件可以引用外部服務(wù)。
??? 組合元模型定義的組件組合,與服務(wù)組合既類似又不同,盡管兩者都定義了使組件/服務(wù)一起工作的方式。通過(guò)被組合本身引入的功能,服務(wù)組合增強(qiáng)了參與服務(wù)的功能;而這個(gè)元模型只定義組件(更接近于服務(wù)實(shí)現(xiàn))間的連接。
??? SCA實(shí)現(xiàn)依賴于服務(wù)數(shù)據(jù)對(duì)象(Service Data Objects,SDO),它提供了表示數(shù)據(jù)的通用模型的技術(shù)。SDO是組件的數(shù)據(jù)交換基礎(chǔ)。SDO架構(gòu)中的基本概念是數(shù)據(jù)對(duì)象——包含基本類型數(shù)據(jù)和(或)其它數(shù)據(jù)對(duì)象的容器。元數(shù)據(jù)提供了被包含數(shù)據(jù)的信息,它被數(shù)據(jù)對(duì)象顯式引用。在SDO中數(shù)據(jù)對(duì)象的組合由數(shù)據(jù)圖表示。除了對(duì)象本身,圖中還包含變更概要,用來(lái)記錄圖中數(shù)據(jù)對(duì)象和屬性在處理過(guò)程中變化的信息(類似微軟環(huán)境中的ADO)。除了SDO,SCA還引入了服務(wù)消息對(duì)象(Service message objects,SMO),它提供了服務(wù)間處理和交換消息的抽象層(類似JBI中的標(biāo)準(zhǔn)化消息)。
??? 如果GUI支持,SCA實(shí)現(xiàn)會(huì)非常強(qiáng)大,可以在面板上實(shí)現(xiàn)圖形化組件的連接。
?
三、SCA與JBI的主要異同
?
??? 1、相同點(diǎn)
- 目的是一樣的:都是為了集成。
- 大致方向一樣:都是為了將服務(wù)和傳輸協(xié)議解耦。
??? 2、不同點(diǎn)
- JBI是以請(qǐng)求消息和相應(yīng)消息作為切入點(diǎn),在集成時(shí)將消息和傳輸協(xié)議解耦,形成一種與傳輸協(xié)議無(wú)關(guān)的標(biāo)準(zhǔn)消息,這樣形成一種全新的區(qū)別于現(xiàn)有應(yīng)用服務(wù)器的集成容器,是從容器的角度出發(fā),一種全新的容器模型。
- SCA以接口作為切入點(diǎn),從組件接口層將傳輸協(xié)議和接口實(shí)現(xiàn)解耦,是從編程的角度出發(fā),一種全新的編程模型。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
