GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

ESB 综述 1:定义 ESB

2007 年 6 月 25 日

Accenture 首席技术官 Don Rippert 的近期访谈的主题是:激活 SOA 的全部潜力还需五年。但是,访谈中隐藏着一个简单的论断,即使用企业服务总线(Enterprise Service Bus,ESB)是实现 ESB 全部潜力 4 步中的第三步。Don Rippert 模型中的步骤如下:

  1. 使用 XML,以更标准的方式使用应用程序接口。
  2. 捕获一些业务过程,并将它们转化成为 Web 服务。
  3. 引入并全面使用企业服务总线。
  4. 产生业务过程执行语言(Business Process Execution Language,BPEL),它可由业务过程建模工具完成。BPEL 可以改变应用程序的行为,而无需修改软件。

Rippert 先生在采访中表示,尽管很多组织拥有 ESB,但是它并没有被完全利用。他进一步的表示,大多数公司仍处于阶段 1。与这个 ESB 所处位置的论断相对比的是, Burton Group 的分析师 Anne Thomas Manes 的叙述,其发表于近期面向服务架构 Yahoo Group 的讨论中。Anne 说:

…如果缺少我推荐启动 SOA 的“基本组件”,ESB 将不会列在我的清单中。事实上,我并不鼓励人们由 ESB 开始。ESB 并不会鼓励好的 SOA 行为。ESB 本质上是集成系统,而非 SOA 系统。SOA 是用于拆卸应用竖井(application silos),而集成系统则是修补这些竖井。

引用她的书,她接着提及的基本组件包括:

  • 一个或多个服务平台(如,.NET,Java EE 应用服务器等)
  • SOA 管理解决方案
  • 注册表
  • 如果服务要被暴露在防火墙之外,那么需要 XML 网关

引用组员早期的帖子,她说道:

“…ESB 特别适合桥接传统应用,因此,在服务基础设施中,它是一个有用的组件。很多 ESB 也支持可靠消息传递、异步消息传递和发布 / 订阅交换模式。这些能力都非常有用,但是,在 SOA 项目的初始阶段可能不会发挥多大的用途。(每个组织有很多不选用这些能力的项目。)在 SOA 项目的后期,你还可能需要一个编制(orchestration)引擎,并且大多数的 ESB 都会提供一个。即便如此,ESB 也绝对不是组织启动 SOA 的起点。所有这些能力你一开始并不需要。因此,ESB 应该在后期购买。”

这似乎符合 Rippert 先生的观点,即尽管很多组织拥有 ESB,但是它并没有被完全利用。Manes 女士的评论同样有助于定义 ESB 的范围,通过暗示许多 ESB 支持的特性,它确定了一组适当的能力。

根据维基百科的 ESB 定义,ESB 有如下特性:

  1. 它是面向服务架构的实现。
  2. 它通常是操作系统和编程语言无关的;它应能在 Java 和.Net 应用程序之间工作。
  3. 它使用 XML(可扩展标识语言)作为标准通信语言。
  4. 它支持 Web 服务标准。
  5. 它支持消息传递(同步、异步、点对点、发布 - 订阅)。
  6. 它包含基于标准的适配器(如 J2C/JCA),用于集成传统系统。
  7. 它包含对服务编制(orchestration)和编排(choreography)的支持。
  8. 它包含智能、基于内容的路由服务(itenerary 路由)。
  9. 它包含标准安全模型,用于 ESB 的认证、授权和审计。
  10. 它包含转换服务(通常是使用 XSLT),在发送应用和接收应用之间转换格式,简化数据格式和值的转换。
  11. 它包含基于模式(schema)的验证,用于发送和接收消息。
  12. 它可以统一应用业务规则,充实其它来源的消息,分拆和组合多个消息,以及处理异常。
  13. 它可以条件路由,或基于非集中策略的消息转换,即不需要集中规则引擎。
  14. 它可监视不同 SLA(服务级别合约)的消息响应门限,以及在 SLA 中定义的其它特性。
  15. 它(常常)简化“服务类别”,向更高或更低优先级用户做出适当的响应。
  16. 它支持队列,在应用临时不可用时用来保存消息。
  17. 它由(地理)分布式环境中的选择性部署应用适配器组成。

维基百科的定义容许“ESB 精确定义的变种”。

Manes 女士和 Rippert 先生似乎都同意 ESB 是有用的,并代表项目后期用于部署 SOA 的功能集合。维基百科的定义可以作为讨论的起点,主题是关于如何定义这一有用技术。

在随后的讨论中,请关注 ESB 的定义,而非本文中引证的业界专家的观点。

查看英文原文: ESB Roundup Part One: Defining the ESB

2007 年 6 月 25 日 20:436472
用户头像

发布了 255 篇内容, 共 46.8 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

思想无语言边界:以cglib介绍AOP在java的一个实现方式

八苦-瞿昙

随笔 随笔杂谈 aop

谈谈你是如何理解JS异步编程的,EventLoop、消息队列都是做什么 ,什么是宏任务,什么是微任务?

GKNick

Golang实现结构体数组按多字段排序

卓丁

多字段排序 结构体多字段排序 golang多字段排序

架构师训练营 - 第 6 周命题作业

红了哟

week7

不在调上

ARTS打卡-07

Geek_yansheng25

运行 client-go 测试用例.md

FeiLong

Kubernetes

redis系列之——事物及乐观锁

诸葛小猿

redis 乐观锁 事物 原子性 隔离性

架构师训练营第七周学习总结

张明森

Go: 通过例子学习 Map 的设计 — Part I

陈思敏捷

go golang map

盘点本周区块链国内大事件

CECBC区块链专委会

从推特被黑看安全木桶效应

石君

安全设计 安全事件

可读代码编写炸鸡八 - 变量兜兜转转像是一场梦

多选参数

代码 代码组织 代码规范 可读代码编写 可读代码

Windows Sandbox

Dare Devor

Sandbox Virtualization

Vagrant 创建多台主机

FeiLong

vagrant 虚拟机

我关闭了微信朋友圈广告!

诸葛小猿

广告 微信朋友圈 关闭

道德的神

多选参数

故事

架构师课程第七周 作业

杉松壁

web 性能压测工具类

jason

生活不止眼前的代码,老程序员现摘现炒苦瓜吃苦的周末时光

陆陆通通

程序员 美食 舌尖 程序员生活

Java中生成随机数的不同方法

wjchenge

看动画学算法之:排序-归并排序

程序那些事

Java 算法 排序 归并排序

架构师训练营第七周作业

张明森

性能压测的时候,系统响应时间和吞吐量如何变化,为什么?

不在调上

第七章作业

小胖子

解决火狐新窗口打开网页被拦截问题

Lee Chen

前端进阶训练营

多问为什么

声远

技术 沟通 软件开发流程

架构师训练营 - 第 6 周学习总结

红了哟

计算机网络基础(六)---网络层-网络地址转换NAT技术

书旅

laravel 计算机网络 网络协议 计算机基础 NAT

CECBC区块链专委会副主任吴桐受邀成为伏羲智库兼职研究员

CECBC区块链专委会

区块链技术 吴桐 商务部CECBC 伏羲智库 政务链

LeetCode 题解:1051. 高度检查器,JavaScript,先排序再比较,详细注释

Lee Chen

LeetCode 前端进阶训练营

ESB综述1:定义ESB-InfoQ