(转载)ESB核心功能及使用场合
ESB是达到终点的手段,而不是终点本身。
1. ESB核心功能:
(1) 协议适配器
也被称作组件或服务,让ESB可以轻松地与基于HTTP,FTP,POP3/SMTP(电子邮件)和文件系统等通信协议的
传输方式对接。ESB适配器通常要么用作服务器端,要么用作客户端。例如,可以设置好一个HTTP监听器/消费
者来接受传入的请求或是作为客户端向外发送HTTP请求。下面给ServiceMix定义一个HTTP客户端适配器的
XML配置文件示例:
<http:endpoint service="testBasicAuth:MyProviderService" endpoint="myProvider"
role="provider" locationURI="https://localhost:8193/Service/">
<http:basicAuthentication>
<http:basicAuthCredentials username="testuser" password="testpass" />
</http:basicAuthentication>
</http:endpoint>
(2) 面向消息的中间件
基于Java的ESB使用JMS,而通常JMS被直接嵌入到ESB应用程序当中。JMS支持两种消息传递模型或通道:发布
/订阅(pub/sub),以及点对点。两者的区别是:
A. 在pub/sub模型中,多个消费者(订阅者)可以订阅并接受发布出来的消息;
B. 在点对点模型中,队列的方式使用更加普遍,因为通常不希望给定消息被多次处理。
(3) 基于XML的消息传递
(4) 智能路由和分发
ESB使用的路由规则根据消息的内容而有所不同(即动态的),或者也可以使用固定管线模式静态的建立路由。常
见的实现ESB路由的不同方法:
A. 处理管线
B. 路由票
C. 中央路由器
D. 基于内容的路由
E. 基于组件的路由
分发:是将消息拆分到多个消息通道或挂起时基于某种条件聚合消息。
(5) 消息转换
(6) 任务/定时器
(7) 服务质量/Web中介
(8) 监控和管理
(9) 可扩展的API
2. 适用ESB的场合:
(1) 服务化:有明确的业务需要,需要整合应用程序;
(2) 服务虚拟化:指的是能够逻辑定义抽象的服务端点,而不是使用实际物理地址的能力;
(3) 异步通信: 应用程序位于不同主机或不在同一个Domain时;
(4) 协议桥接: 应用程序采用不同的协议进行访问。
3. 不适用个ESB的场合:
(1) 服务编写:至按照某种特定的协议来编写服务,然后让ESB去操心可能存在的协议桥接问题;
(2) 协同与ESB:BPM的协同旨在传达一种视觉上可以理解的,甚至领域专家可以修改的业务流程;而ESB的数据
流转是一种供开发人员使用的工具,用来简化创建多步操作的工作。因此,ESB的数据流转功能应该只用在简单的
系列 步骤上,而不用作为BOM协同的替代。
(3) 同步的高通量分布式处理
总之,ESB是实现SOA的有一个技术工具,不过SOA不只是技术,还包括治理,流程甚至文化!
4. EAI与ESB的区别
(1) 架构思想
EAI产品是基于hub-and-spoke的model,而ESB是bus-based的model.
Hub-and-spoke是Centralized的架构,所有数据的搅浑有一个hub或者broker处理;而bus model使用的是
分布式的架构思想,ESB的功能可以由若干戈不同的的功能合作实现。
(2) 实现标准
EAI产品,如:WebSphere Message Broker, TIBCO BusinessWorks, and Sonic XQ都是基于专利技术实
现消息功能和转换逻辑(不过新版的这些产品也已经采用了bus model);ESB基于开放标准:JMS,XML,JCA,
Web Service.