1
、
JBI
?????? JBI
(
Java
?
Business Integration
)是一種企業(yè)服務(wù)總線
(Enterprise Service Bus,ESB)
,用于形成一種關(guān)鍵基礎(chǔ)設(shè)施片段,使我們能夠用
Java
實現(xiàn)面向服務(wù)的架構(gòu),主要目的是提供一個基于服務(wù)的平臺作為對現(xiàn)有
Java/J2EE
平臺功能的擴展。
當前的
J2EE
部署都運行在一個基礎(chǔ)上,那就是應(yīng)用服務(wù)器。應(yīng)用服務(wù)器本身由兩個獨立的部分組成
——Servlet
容器和
EJB
容器,它們分別用于部署
JSP/Servlets
和
EJB
構(gòu)件。在它們中的任何一個,你都能使用
Web services
。但是,在任何環(huán)境中以分散的方式使用
services
是很困難的工作,而
JBI
的目的就是為完成這個任務(wù)提供一個專門的環(huán)境。其最底層是一個容器,它與
J2EE
中的容器一樣定義了自身的部署構(gòu)件。
JBI
提供了一種正規(guī)消息路由器
(Normalized Message Router,NMR)
,說白了,就是一個地點。在這個地點,所有基于消息的數(shù)據(jù)片段
——SOAP
片段、
MOM
消息、
HTTP
數(shù)據(jù)或其它信息
——
被聚合、集中、應(yīng)用到業(yè)務(wù)邏輯、傳輸,如果有必要則被轉(zhuǎn)換成其它格式并隨后被分派到最終目的地。
JBI
很適合企業(yè)級應(yīng)用,因為它通過一種總線型架構(gòu)的基于消息的手段到達了適應(yīng)大范圍的消費者和提供者的目的?,F(xiàn)在,讓我們看看除了
NMR
還有什么構(gòu)成了
JBI
。
和
JBI
環(huán)境直接交互的是兩個部分,
JBI machine
和
JBI binding
。
JBI machine
定義了部署構(gòu)件以及在環(huán)境中管理它們的方式。本質(zhì)上,它是提供商設(shè)計的黑盒,用于在
JBI
中支持他們自己的模型。另一方面,
JBI binding
則被環(huán)境通過專門的業(yè)務(wù)協(xié)議與外部世界進行通信。
JBI
是提供了一些簡單的
API
定義,
這些定義包括
NormalizedMessage Service ,
在一個
Router
組件,以及一個管理模型用來管理服務(wù)的部署集成,例如
routing engines, BPEL engines, rule systems, transformation engines
JBI
提供了一個邏輯的
XML
消息網(wǎng)絡(luò),
這一網(wǎng)絡(luò)能夠很容易的映射到
HTTP, email
和
JMS/MOM
,并很方便地適應(yīng)遺留系統(tǒng),二進制地傳輸,和
RPC
系統(tǒng)(
EJB
和
CORBA)
。
JBI
可以看做是對
JMS
的更高層次的邏輯抽象,并提供了不同的消息交換方式(
單步,
請求應(yīng)答等)
2
、
SCA
服務(wù)構(gòu)件架構(gòu)
SCA
(
Service Component Architecture
)致力于為使用廣泛的編程語言來構(gòu)造服務(wù)構(gòu)件提供一種編程模型,并且也為把這些服務(wù)構(gòu)件組裝為一個業(yè)務(wù)上的解決方案提供了一種模型,這種組裝的活動正是采用面向服務(wù)的架構(gòu)
(service-oriented architecture)
來搭建應(yīng)用系統(tǒng)的核心。
??
SCA
為建設(shè)基于面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用和系統(tǒng)提供了一種編程模型。這基于一種觀點,即業(yè)務(wù)功能以一系列服務(wù)的形式被對外提供出來,然后它們被組合在一起去實現(xiàn)滿足特定業(yè)務(wù)需求的解決方案。這些復(fù)合的應(yīng)用,可以包含專門為此應(yīng)用程序創(chuàng)建的新服務(wù),也可以包含來自已有的系統(tǒng)和應(yīng)用程序的業(yè)務(wù)功能,重復(fù)利用就像其中的一部分一樣。
SCA
即為組合服務(wù)提供了模型,也為服務(wù)構(gòu)件的創(chuàng)建,包括在
SCA
組裝中重用已有應(yīng)用系統(tǒng)的功能提供了模型。
在服務(wù)定義中,
WSDL
(
Web Service Description Language
)是一個很好的范例。
WSDL
在增強應(yīng)用之間的可連接性以及互操作性方面邁出了一大步。然而,
WSDL
只關(guān)注了服務(wù)接口,它并不提供描述一個服務(wù)所依賴的其它服務(wù),以及這個服務(wù)所需要使用的配置策略和服務(wù)之間的依賴關(guān)系。單獨通過
WSDL
很難實現(xiàn)服務(wù)之間的組合調(diào)用。
SCA
比
WSDL
走的更遠的方面是定義了一個服務(wù)組件模型以及一個服務(wù)組裝模型。服務(wù)模型提供了比
WSDL
更多的功能,它允許服務(wù)開發(fā)者不單定義服務(wù)的接口而且還可以定義
這個服務(wù)和其他服務(wù)的依賴關(guān)系,以及這些交互(事務(wù),安全,以及可靠
傳輸)之間的策略
還有服務(wù)所可能提供的配置功能。
一個
SCA
模型對等于一個
SOA
項目,模型允許開發(fā)者組裝一組服務(wù)組件,解決引用依賴和使用策略。這是一個很大的進步,因為當前的
SOA
平臺需要開發(fā)者自己獲取那些私有的服務(wù)部署引用,甚至有時要在他們的服務(wù)實現(xiàn)中寫
hard code.
3
、
SCA
與
JBI
的區(qū)別
SCA
關(guān)注的重點只是
SOA
開發(fā)所看到和接觸到的。
SCA
并沒有關(guān)注用來執(zhí)行
SCA
模塊的引擎是如何構(gòu)架的。只是對這個引擎的實現(xiàn)提供一個規(guī)范和實現(xiàn)依據(jù)。這個引擎可以用任何方式實現(xiàn)。
JBI
從另一個方面來說就是一組關(guān)注創(chuàng)建一個開發(fā)的,可擴展的以及標準組件的企業(yè)服務(wù)總線。
這樣它的內(nèi)核是和
SCA
有一些重合的地方。同時兩者之間也存在互補的機制。
重合方面:是
JBI
關(guān)注的是如果將一組引擎組裝并運行于一個
JVM
中,是對編碼開發(fā)的一種設(shè)計方式。
相反
SCA
在另一方面并不將一個模塊約束單個
JVM
中。當然一個
SCA
模塊可以執(zhí)行在一個
JVM
中,但同時它也可以很方便的將這些引擎部署在不同的進程甚至是不同的節(jié)點上。
最大的區(qū)別之處是
SCA
不但支持
Java
而且還支持
C
、
EJB
、
Spring
、
BPEL
,在今后也許還會支持
C#
,
php
等。
而
JBI
只是
SCA
的一個實現(xiàn)方式,而不是唯一的選擇。