关于SOA

SOA是一种软件架构,由一组独立的、自我描述的服务组成,并能够通过标准的方式进行访问。服务在其中作为粗粒度的,可被发现的,自解释的对象、实体或者构件,可以与其它服务或应用进行交互,并且常常是通过松散耦合的、异步的、基于消息通信的方式进行交互。各个单独的服务即可以独立提供服务,也可以组合成完整的服务过程[1]

SOA也可以看成是服务与用户之间的一种联系,每个服务模块都能够独立完成一定的功能,用户(通常是软件代理)通过服务界面(中的名字)进行调用(通常是通过请求-回复的消息机制)。一般说来,SOA非常适合解决Internet环境下的不同应用之间的业务集成问题,这个环境具有以下特点:

1 异构信息系统都是具有独立功能的实体,相互之间只具有松散联系。
在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。 SOA非常强调架构中提供服务的功能实体的完全独立自主的自我管理和恢复能力,比如事务处理(Transaction),消息队列(Message Queue),冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。

2 基于文本的消息传递
传统的组件模型二进制编码在服务器和客户端之间传送对象,客户端通过对象调用实现某些功能。但是在Internet环境下,平台、语言和数据的异构给不同的服务之间传递对象带来的很大困难,由于基于文本的消息本身是不包含任何处理逻辑和数据类型的(或者说其包含的逻辑和数据定义对于传输过程是没有意义的,由接收方进行解析),因此服务间只传递基于文本的消息,具有最大的适应性和兼容性。
并且对于一个服务来说,Internet上各类服务和有关定义信息的版本管理几乎只能采取基于文本的消息传递方式,一方面服务使用方无法事先得知服务提供方的版本更新情况,但可以选择“兼容”的版本;另一方面可以只选择处理自己所需的,或者所能够解析的那部分数据,而忽略其它的数据。

3 海量数据的低频次访问
对于传统的分布式计算而言,通常都是通过函数调用的方式进行资源调用,一个功能的完成常常需要客户端和服务器来回多次。在Intranet环境下多次调用往往产生难以预计的后果,因此SOA系统推荐采用大数据量的方式一次性进行信息交换。

SOA具有以下六方面的优点:

  1. 定义界面和数据结构的标准简单;
  2. 语言和平台独立,基于标准,允许应用调用任何设备、基于任何软件和操作系统的服务;
  3. 服务界面与应用分离,允许许多服务自主升级而不影响用户使用;
  4. 面向消息的通信可以在广域网上提供分布式服务;
  5. 服务之间的松散耦合,使服务之间的相互依赖最小化,有利于服务的重用;
  6. 服务的发现机制,以及建立服务连接、组合服务的能力等。


[1] Brown, A., Johnston, S; & Kelly, K. Using Service-Oriented Architecture and Component-Based Development to Build Web Service Applications. White Plains, NY: Rational Software Corporation, IBM, 2002.

2 条评论 »

  1. zob’log » what is SOA 留言,

    2006年04月14日 星期五 @ 2:47 pm

    […] 关于SOA source url:http://my.donews.com/keven/2006/03/28/soa/ […]

  2. zob’log » what is SOA 留言,

    2006年04月18日 星期二 @ 9:05 am

    […] source url:http://my.donews.com/keven/2006/03/28/soa/ creator:keven,刘炜 […]

本文的RSS feed · 引用 URI

发表您的评论

您必须 登录 才能发表评论.