ESB 企业服务总线解决方案剖析(1)
关于 SOA
关于 SOA 的概念,你可以找到很多的文章从不同的角度来描述它,不同的软件提供
商也有不同的定义方式。BEA 有流体计算,微软有 Indigo 和 SOA-building, SAP 有
ESA。 每个人都可以从不同的视角来理解 SOA,从程序员的角度,SOA 是一种全新的开
发技术,新的组件模型,比如说 Web Service;从架构设计师的角度,SOA 就是一种新
的设计模式,方法学;从业务分析人员的角度,SOA 就是基于标准的业务应用服务。从概
念的角度,IBM 对 SOA 的定义是最为全面的,既 SOA 是一种构造分布式系统的方法,它
将业务应用功能以服务的形式提供给最终用户应用或其他服务。SOA 包括如下要素:
一个体系架构,用开放的标准将软件资产(Asset)化为服务
提供标准的方法来表示软件资产及其交互
单独的软件资产作为构造单元,被重复使用来开发其他应用
将关注点从细节实现转移到应用(application)组装
整合企业外部的应用(B2B)的方式
开发(现在)和整合(未来)的统一
本文针对的读者是软件开发人员,站在开发人员的角度,往往希望软件开发能够满足
对于开发效率、可靠性、易维护性、易管理等多方面的更高要求。让我们通过回顾软件开
发的演化过程来看一看 SOA 出现的必然性:
面向机器语言(Monolithic)的开发模式:需要根据不同平台的机器语言来开发代码。
面向过程(Procedure)的开发模式:独立于机器的程序语言(C, Pascal 等)使开发过程变得简单
了,用过程来代表一个抽象的代码集合,包装重用现成的代码。
面向对象(Object)的开发模式:用更接近现实的对象来表述一个相对完整的事物。面向对象的语
言(Smalltalk,Java 等),提供了更抽象的封装和重用模式。面向对象的开发强调从现实世界问
题域到软件程序的直接映射,更接近人类的自然思维方式。
面向组件(Component)的模式:随着软件开发规模的扩大,在涉及分布式、异构等复杂特征的
环境中,代码级别的重用性差,可维护性差,效率低的弱点是不可逾越的,因此人们以架构运