业界正在广泛寻求解决
B2B
以及
EAI
(企业应用集成)所存在问题的方案。这些方案不同于基于
JMS
手段的面向消息中间件技术和
Web
服务技术。本文简短地阐述了即将到来的与
SOA
(面向服务体系)规范及
ESB
(企业服务总线)基础架构有关的
JBI
(
Java
业务集成)标准。
面向服务体系
SOA
(面向服务体系)是近期推动应用和业务集成领域产生巨大飞跃的新技术之一。
SOA
定义了一系列详尽的体系规范、范例和实现应用程序间进行松散耦合交互的最佳准则。
SOA
基于定义明确的接口,促进多个应用程序间的松散耦合交互。服务的实现是独立的,且不依赖上下文信息以及其他服务的状态。服务间数据交换主要基于文本类型的格式,使用基于标准的消息模型。服务自身并不知道服务提供者和服务消费者之间传输级的通讯交互。
尽管不是强制要求,当今大部分流行的基于
SOA
的系统都利用了
Web
服务以及近似技术为服务间交互提供必要的管道管理。
WSDL
(
Web
服务定义语言)扮演了主要的通讯模型角色;
SOAP
扮演了消息承载协议、
HTTP
扮演了网络传输协议。当然,这并不意味着你必须利用上述技术实现基于
SOA
的系统。另外,有些术语之前就已经存在了,所以很多企业已利用类似的体系实现了系统的松散耦合交互。不管怎样,主要的不同点在于我们现在已经有标准协议、工具集和软件了,使面向服务体系更健全。
SOA
原则与面向对象范式、原则有着显著不同。主要不同在于服务间交互的接口被定义了更多面向数据的行为。一个孤立的服务也许会采用面向对象原则和技术,但是,服务之间的交互很少采用这些手段。相反,这些接口更适合于基于文档的交换。面向对象的行为是绑定数据,而面向服务从行为中分离数据。
企业服务总线
ESB
(企业服务总线)为面向服务体系提供了基础架构。通过设计工具定义服务间交互和规则,
ESB
为部署和发现服务提供了运行时环境。
在
ESB
的世界中,服务不会直接彼此交互。“
ESB
运行时”作为一个仲裁者在服务间松散的耦合它们。“
ESB
运行时”将实现协议绑定、消息传输、消息处理,等等。
一个服务总线将包括下列关键项:
为服务提供传输绑定
定义和发现已部署服务
在服务间基于规则的路由和编排消息
包括文档传递在内的增值服务等
大部分的
ESB
提供商基于自己的
SOA
提议来开放标准和技术,包括多种
Web
服务标准和协议。他们提供多种调用服务的传输绑定,包括
HTTP
、
FTP
以及
JMS
等等。大部分
ESB
用户利用
WS-BPEL
(
Web
服务的业务流程执行语言)来了解已部署服务之间是如何实现业务流程的。
ESB
提供商同时也提供服务质量特性,包括容错、故障转移、负载平衡、消息缓冲等等。
Java
业务集成
JBI
(
Java
业务集成)的提出是基于面向服务体系提倡的方法和原则,为了解决
EAI
和
B2B
若干问题的
Java
标准。当前版本(
1.0
)是
2005
年
8
月通过的
JSR
(
Java
规范需求)
208
定案。商业和开源界都欢迎
JBI
成为他们
ESB
产品的集成标准。
基于仲裁者体系
JBI
定义了基于插件方式的架构,以便服务能融入“
JBI
运行时”环境。
JBI
提供了详细的接口,使服务能与“
JBI
运行时”环境交互。这些服务要为“
JBI
运行时”环境暴露接口,以便“
JBI
运行时”环境为服务路由消息。“
JBI
运行时”环境在部署在
SOA
环境中的服务间扮演仲裁者的角色。
在同一
JVM
中,“
JBI
运行时”核心主要包括如下组件:
组件框架:组件框架把不同类型的组件部署到“
JBI
运行时”。
归一化消息路由器:归一化消息路由器利用标准机制实现服务间消息交换。
管理框架:管理框架基于
JMX
进行部署、管理以及监控“
JBI
运行时”中的组件。
组件模型
JBI
在“
JBI
运行时”环境中定义了两种组件:
服务引擎组件:该组件负责实现业务逻辑和其他服务。服务引擎组件在其内部可使用多种技术和设计模式。服务引擎组件可提供数据传输和转换这种简单的基础服务,也可实现像
WS-BPEL
实例一样复杂的业务处理。
绑定组件:绑定组件主要为已部署服务提供传输级绑定。绑定组件有多种类型:
利用标准传输协议与外部系统进行远程通讯。
使已部署服务能在同一个
JVM
内部相互调用。
服务间可使用标准的
WS-I
(
Web
服务协同工作组织)规范通讯。
JBI
的关键是分离服务引擎和绑定组件,以便业务逻辑不被下面的具体细节所干扰。这种方式促进了体系的灵活性和可扩展性。绑定组件和服务引擎组件在
JBI
内部都可以是服务提供者和
/
或服务消费者。
绑定组件和服务引擎组件为“
JBI
运行时”提供接口以便从“
JBI
运行时”接收消息。同样的,它们也利用
JBI
提供的接口来和“
JBI
运行时”通讯。
消息传输模型
JBI
利用消息传输模型分离服务提供者和服务消费者之间的耦合。消息传输模型利用了
WSDL
。
WSDL
用于描述暴露的服务引擎组件和绑定组件的业务处理。另外,
WSDL
也用于定义抽象服务处理的传输级绑定。
JBI
架构中一个关键组件是
NMR
(归一化消息路由器,也译作“正规消息路由器”)。
NMR
基于
WSDL
提供了主要的消息传输中枢,
NMR
为部署在“
JBI
运行时”中的服务引擎组件和绑定组件间的消息传递提供松散耦合。服务需要有聚合业务处理的接口,每个业务处理由零个或多个消息组成。而一个接口有一个或多个传输级绑定。
“
JBI
运行时”利用归一化格式描述消息。一个归一化消息由以下部分组成:
消息属性
消息有效载荷
消息附件
利用
NMR
,
JBI
规范为服务提供者和消费者的消息交换提供标准接口。
NMR
支持服务生产者和消费者之间单向模式和服务响应模式的调用。
管理
JBI
利用
JMX
实现运行时的服务安装、配置和监控。服务必须实现
JBI
接口集,以便这些服务在
JBI
环境中是可管理的。
JBI
环境必须提供一套
JMX MBeans
实现“
JBI
运行时”的管理。
“
JBI
运行时”环境允许服务引擎组件和绑定组件的相关操作如下:
安装组件:使组件接口可使用归一化消息路由器。
安装
artefact
组件:这将允许已部署的
artefacts
组件获得与已安装组件同样的机能。例如,可以部署一个“连接服务”来提供具体的数据库连接。
启动、停止服务以及进行相关服务分组。
JBI
为组件及
artefact
组件定义了标准的部署描述符以及打包模型。
角色
JBI
为基于
JBI
的端到端
EAI
解决方案定义了如下角色:
引擎开发者:引擎开发者提供遵循
NMR
和管理约束的服务引擎组件。
绑定开发者:绑定开发者提供遵循
NMR
和管理约束的绑定组件。
JBI
环境提供者:
JBI
环境提供者为“
JBI
运行时”使用
J2EE 1.4
或
J2SE 1.4
或更新的平台提供支持。
J2EE
平台提供者:
J2EE
平台提供者把“
JBI
运行时”作为提供应用程序服务的一部分。
JBI
应用程序开发者:
JBI
应用程序开发者利用服务引擎组件、绑定组件以及
JBI
环境构建
JBI
应用程序。
结论
当今业界走向越来越开放的标准和规范,
JBI
在使
Java
技术利用面向服务体系和
ESB
基础架构实现业务集成方面产生了巨大飞跃。像
Oracle
这样的商用产品提供商和
ServiceMix
这样的开源软件都把
JBI
作为了他们
ESB
方案的一部分。
关于作者
Meeraj Kinnumpurath
是位在
VOCA
有限公司(原来叫
BACS
)就职的
Java
架构师,这家公司是英国最大的票据交换所。他有
8
年的
Java
开发经验,主要从事企业应用程序开发。他已出版了一些
Java
、
J2EE
以及
Web
服务方面的书籍。
请注意!引用、转贴本文应注明原译者:Rosen Jiang 以及出处:
http://www.blogjava.net/rosen