業(yè)界正在廣泛尋求解決 B2B 以及 EAI (企業(yè)應(yīng)用集成)所存在問題的方案。這些方案不同于基于 JMS 手段的面向消息中間件技術(shù)和 Web 服務(wù)技術(shù)。本文簡短地闡述了即將到來的與 SOA (面向服務(wù)體系)規(guī)范及 ESB (企業(yè)服務(wù)總線)基礎(chǔ)架構(gòu)有關(guān)的 JBI ( Java 業(yè)務(wù)集成)標(biāo)準(zhǔn)。
面向服務(wù)體系
SOA (面向服務(wù)體系)是近期推動應(yīng)用和業(yè)務(wù)集成領(lǐng)域產(chǎn)生巨大飛躍的新技術(shù)之一。 SOA 定義了一系列詳盡的體系規(guī)范、范例和實(shí)現(xiàn)應(yīng)用程序間進(jìn)行松散耦合交互的最佳準(zhǔn)則。
SOA 基于定義明確的接口,促進(jìn)多個應(yīng)用程序間的松散耦合交互。服務(wù)的實(shí)現(xiàn)是獨(dú)立的,且不依賴上下文信息以及其他服務(wù)的狀態(tài)。服務(wù)間數(shù)據(jù)交換主要基于文本類型的格式,使用基于標(biāo)準(zhǔn)的消息模型。服務(wù)自身并不知道服務(wù)提供者和服務(wù)消費(fèi)者之間傳輸級的通訊交互。
盡管不是強(qiáng)制要求,當(dāng)今大部分流行的基于
SOA
的系統(tǒng)都利用了
Web
服務(wù)以及近似技術(shù)為服務(wù)間交互提供必要的管道管理。
WSDL
(
Web
服務(wù)定義語言)扮演了主要的通訊模型角色;
SOAP
扮演了消息承載協(xié)議、
HTTP
扮演了網(wǎng)絡(luò)傳輸協(xié)議。當(dāng)然,這并不意味著你必須利用上述技術(shù)實(shí)現(xiàn)基于
SOA
的系統(tǒng)。另外,有些術(shù)語之前就已經(jīng)存在了,所以很多企業(yè)已利用類似的體系實(shí)現(xiàn)了系統(tǒng)的松散耦合交互。不管怎樣,主要的不同點(diǎn)在于我們現(xiàn)在已經(jīng)有標(biāo)準(zhǔn)協(xié)議、工具集和軟件了,使面向服務(wù)體系更健全。
SOA 原則與面向?qū)ο蠓妒?、原則有著顯著不同。主要不同在于服務(wù)間交互的接口被定義了更多面向數(shù)據(jù)的行為。一個孤立的服務(wù)也許會采用面向?qū)ο笤瓌t和技術(shù),但是,服務(wù)之間的交互很少采用這些手段。相反,這些接口更適合于基于文檔的交換。面向?qū)ο蟮男袨槭墙壎〝?shù)據(jù),而面向服務(wù)從行為中分離數(shù)據(jù)。
企業(yè)服務(wù)總線
ESB (企業(yè)服務(wù)總線)為面向服務(wù)體系提供了基礎(chǔ)架構(gòu)。通過設(shè)計(jì)工具定義服務(wù)間交互和規(guī)則, ESB 為部署和發(fā)現(xiàn)服務(wù)提供了運(yùn)行時環(huán)境。
?
??? 在
ESB
的世界中,服務(wù)不會直接彼此交互?!?/span>
ESB
運(yùn)行時”作為一個仲裁者在服務(wù)間松散的耦合它們?!?/span>
ESB
運(yùn)行時”將實(shí)現(xiàn)協(xié)議綁定、消息傳輸、消息處理,等等。
一個服務(wù)總線將包括下列關(guān)鍵項(xiàng):
??? 為服務(wù)提供傳輸綁定
??? 定義和發(fā)現(xiàn)已部署服務(wù)
??? 在服務(wù)間基于規(guī)則的路由和編排消息
??? 包括文檔傳遞在內(nèi)的增值服務(wù)等
大部分的 ESB 提供商基于自己的 SOA 提議來開放標(biāo)準(zhǔn)和技術(shù),包括多種 Web 服務(wù)標(biāo)準(zhǔn)和協(xié)議。他們提供多種調(diào)用服務(wù)的傳輸綁定,包括 HTTP 、 FTP 以及 JMS 等等。大部分 ESB 用戶利用 WS-BPEL ( Web 服務(wù)的業(yè)務(wù)流程執(zhí)行語言)來了解已部署服務(wù)之間是如何實(shí)現(xiàn)業(yè)務(wù)流程的。 ESB 提供商同時也提供服務(wù)質(zhì)量特性,包括容錯、故障轉(zhuǎn)移、負(fù)載平衡、消息緩沖等等。
Java
業(yè)務(wù)集成
???
JBI ( Java 業(yè)務(wù)集成)的提出是基于面向服務(wù)體系提倡的方法和原則,為了解決 EAI 和 B2B 若干問題的 Java 標(biāo)準(zhǔn)。當(dāng)前版本( 1.0 )是 2005 年 8 月通過的 JSR ( Java 規(guī)范需求) 208 定案。商業(yè)和開源界都?xì)g迎 JBI 成為他們 ESB 產(chǎn)品的集成標(biāo)準(zhǔn)。
基于仲裁者體系
JBI 定義了基于插件方式的架構(gòu),以便服務(wù)能融入“ JBI 運(yùn)行時”環(huán)境。 JBI 提供了詳細(xì)的接口,使服務(wù)能與“ JBI 運(yùn)行時”環(huán)境交互。這些服務(wù)要為“ JBI 運(yùn)行時”環(huán)境暴露接口,以便“ JBI 運(yùn)行時”環(huán)境為服務(wù)路由消息。“ JBI 運(yùn)行時”環(huán)境在部署在 SOA 環(huán)境中的服務(wù)間扮演仲裁者的角色。
在同一
JVM
中,“
JBI
運(yùn)行時”核心主要包括如下組件:
??? 組件框架:組件框架把不同類型的組件部署到“ JBI 運(yùn)行時”。
?? ? 歸一化消息路由器:歸一化消息路由器利用標(biāo)準(zhǔn)機(jī)制實(shí)現(xiàn)服務(wù)間消息交換。
??
?
管理框架:管理框架基于
JMX
進(jìn)行部署、管理以及監(jiān)控“
JBI
運(yùn)行時”中的組件。
組件模型
??? JBI 在“ JBI 運(yùn)行時”環(huán)境中定義了兩種組件:
??? 服務(wù)引擎組件:該組件負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯和其他服務(wù)。服務(wù)引擎組件在其內(nèi)部可使用多種技術(shù)和設(shè)計(jì)模式。服務(wù)引擎組件可提供數(shù)據(jù)傳輸和轉(zhuǎn)換這種簡單的基礎(chǔ)服務(wù),也可實(shí)現(xiàn)像 WS-BPEL 實(shí)例一樣復(fù)雜的業(yè)務(wù)處理。
??? 綁定組件:綁定組件主要為已部署服務(wù)提供傳輸級綁定。綁定組件有多種類型:
??????? 利用標(biāo)準(zhǔn)傳輸協(xié)議與外部系統(tǒng)進(jìn)行遠(yuǎn)程通訊。
??????? 使已部署服務(wù)能在同一個 JVM 內(nèi)部相互調(diào)用。
??????? 服務(wù)間可使用標(biāo)準(zhǔn)的 WS-I ( Web 服務(wù)協(xié)同工作組織)規(guī)范通訊。
??? JBI 的關(guān)鍵是分離服務(wù)引擎和綁定組件,以便業(yè)務(wù)邏輯不被下面的具體細(xì)節(jié)所干擾。這種方式促進(jìn)了體系的靈活性和可擴(kuò)展性。綁定組件和服務(wù)引擎組件在 JBI 內(nèi)部都可以是服務(wù)提供者和 / 或服務(wù)消費(fèi)者。
???
??? 綁定組件和服務(wù)引擎組件為“ JBI 運(yùn)行時”提供接口以便從“ JBI 運(yùn)行時”接收消息。同樣的,它們也利用 JBI 提供的接口來和“ JBI 運(yùn)行時”通訊。
消息傳輸模型
JBI 利用消息傳輸模型分離服務(wù)提供者和服務(wù)消費(fèi)者之間的耦合。消息傳輸模型利用了 WSDL 。 WSDL 用于描述暴露的服務(wù)引擎組件和綁定組件的業(yè)務(wù)處理。另外, WSDL 也用于定義抽象服務(wù)處理的傳輸級綁定。
JBI 架構(gòu)中一個關(guān)鍵組件是 NMR (歸一化消息路由器,也譯作“正規(guī)消息路由器”)。 NMR 基于 WSDL 提供了主要的消息傳輸中樞, NMR 為部署在“ JBI 運(yùn)行時”中的服務(wù)引擎組件和綁定組件間的消息傳遞提供松散耦合。服務(wù)需要有聚合業(yè)務(wù)處理的接口,每個業(yè)務(wù)處理由零個或多個消息組成。而一個接口有一個或多個傳輸級綁定。
“ JBI 運(yùn)行時”利用歸一化格式描述消息。一個歸一化消息由以下部分組成:
??? 消息屬性
??? 消息有效載荷
消息附件
???
利用 NMR , JBI 規(guī)范為服務(wù)提供者和消費(fèi)者的消息交換提供標(biāo)準(zhǔn)接口。 NMR 支持服務(wù)生產(chǎn)者和消費(fèi)者之間單向模式和服務(wù)響應(yīng)模式的調(diào)用。
管理
JBI 利用 JMX 實(shí)現(xiàn)運(yùn)行時的服務(wù)安裝、配置和監(jiān)控。服務(wù)必須實(shí)現(xiàn) JBI 接口集,以便這些服務(wù)在 JBI 環(huán)境中是可管理的。 JBI 環(huán)境必須提供一套 JMX MBeans 實(shí)現(xiàn)“ JBI 運(yùn)行時”的管理。
“ JBI 運(yùn)行時”環(huán)境允許服務(wù)引擎組件和綁定組件的相關(guān)操作如下:
??? 安裝組件:使組件接口可使用歸一化消息路由器。
??? 安裝 artefact 組件:這將允許已部署的 artefacts 組件獲得與已安裝組件同樣的機(jī)能。例如,可以部署一個“連接服務(wù)”來提供具體的數(shù)據(jù)庫連接。
??? 啟動、停止服務(wù)以及進(jìn)行相關(guān)服務(wù)分組。
JBI 為組件及 artefact 組件定義了標(biāo)準(zhǔn)的部署描述符以及打包模型。
角色
JBI 為基于 JBI 的端到端 EAI 解決方案定義了如下角色:
? ?? 引擎開發(fā)者:引擎開發(fā)者提供遵循 NMR 和管理約束的服務(wù)引擎組件。
??? 綁定開發(fā)者:綁定開發(fā)者提供遵循 NMR 和管理約束的綁定組件。
JBI 環(huán)境提供者: JBI 環(huán)境提供者為“ JBI 運(yùn)行時”使用 J2EE 1.4 或 J2SE 1.4 或更新的平臺提供支持。
J2EE 平臺提供者: J2EE 平臺提供者把“ JBI 運(yùn)行時”作為提供應(yīng)用程序服務(wù)的一部分。
JBI 應(yīng)用程序開發(fā)者: JBI 應(yīng)用程序開發(fā)者利用服務(wù)引擎組件、綁定組件以及 JBI 環(huán)境構(gòu)建 JBI 應(yīng)用程序。
結(jié)論
???
???
當(dāng)今業(yè)界走向越來越開放的標(biāo)準(zhǔn)和規(guī)范,
JBI
在使
Java
技術(shù)利用面向服務(wù)體系和
ESB
基礎(chǔ)架構(gòu)實(shí)現(xiàn)業(yè)務(wù)集成方面產(chǎn)生了巨大飛躍。像
Oracle
這樣的商用產(chǎn)品提供商和
ServiceMix
這樣的開源軟件都把
JBI
作為了他們
ESB
方案的一部分。
關(guān)于作者
??? Meeraj Kinnumpurath
是位在
VOCA
有限公司(原來叫
BACS
)就職的
Java
架構(gòu)師,這家公司是英國最大的票據(jù)交換所。他有
8
年的
Java
開發(fā)經(jīng)驗(yàn),主要從事企業(yè)應(yīng)用程序開發(fā)。他已出版了一些
Java
、
J2EE
以及
Web
服務(wù)方面的書籍。
請注意!引用、轉(zhuǎn)貼本文應(yīng)注明原譯者:Rosen Jiang 以及出處:
http://www.aygfsteel.com/rosen