通过ESB组合SOA和EDA
作者: Jean-Louis Maréchaux , 出处:developerWorks中国, 责任编辑: 叶江,
2006-08-08 14:50
现今的业务应用程序很少完全独立运行。它们需要彼此连接,以便创建集成解决方案,从而为组织带来价值。面向服务的体系结构(Service-Oriented Architecture,SOA)和事件驱动的体系结构(Event-Driven Architecture,EDA)是处理复杂集成挑战的两个不同范例。组织如何选择更好的方法来满足其需求呢?实际上他们并不必选择:企业服务总线(Enterprise Service Bus,ESB)允许同时实现 SOA 和 EDA 概念。
表 1 对 SOA 解决方案的基本特征进行了总结:
| 功能 | 描述 |
| 松散耦合的交互 | 服务的调用独立于其技术和位置。 |
| 一对一通信 | 一个特定服务一次由一个用户调用。通信是双向的。 |
| 基于用户进行触发 | 控制流由客户机(服务使用者)发起。 |
| 同步 | 应答将以同步方式发回给使用者。 |
表 1:基本 SOA 特征
事件驱动的体系结构
在 2003 年,Gartner引入了一个新术语,用以描述基于事件的设计范例:事件驱动的体系结构 (EDA)。EDA 定义了一种用于进行设计和实现应用程序和系统的方法,其中的事件在各个分解的软件组件和服务间进行传递。EDA 并不会替代 SOA,而只是对 SOA 形成补充。虽然 SOA 通常更适合请求/响应交换环境,但 EDA 引入了一些长时间运行的异步进程功能。而且,EDA 节点可发布事件,且并不依赖于所发布的服务的可用性。它真正地实现了同其他节点的分离。EDA 有时也称为“事件驱动的 SOA”。
EDA 使用消息传递来在两个或多个应用程序进程间进行通信。此类通信是由“事件”发起的。触发器通常与某种业务情况对应。该事件的所有订阅者将随后得到通知,从而激活,如图 3 中所示:

图 3. 事件驱动的体系结构中的发布/订阅机制
表 2 对 EDA 的基本特征进行了总结:
| 功能 | 描述 |
| 分离的交互 | 事件发布者并不会意识到事件订阅者的存在。 |
| 多对多通信 | 采用发布/订阅消息传递,一个特定事件可以影响多个订阅者。 |
| 基于事件的触发器 | 控制流由接收者确定(基于发布的事件)。 |
| 异步 | 通过事件消息传递支持异步操作。 |
表 2:基本 EDA 特征
- 本文关键词:

