SOA/软件架构设计软件架构设计---面向服务的架构(面向服务的架构(SOA详细解释)详细解释)
面向服务的架构
迄今为止,对于面向服务的架构(Service-Oriented Architecture,SOA)还没有一个公认的定义。许多组织从不同的角度和
不同的侧面对 SOA 进行了描述,较为典型的有以下三个:
(1)W3C 的定义:SOA 是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可
调用接口,能够以定义好的顺序调用这些服务来形成业务流程。
(2)Service-architecture.com 的定义:服务是精确定义、封装完善、独立于其他服务所处环境和状态的函数。SOA 本质上
是服务的集合,服务之间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务之
间需要某些方法进行连接。
(3)Gartner 的定义:SOA 是一种 C/S 架构的软件设计方法,应用由服务和服务使用者组成,SOA 与大多数通用的 C/S 架
构模型不同之处,在于它着重强调构件的松散耦合,并使用独立的标准接口。
1 SOA 概述
SOA 是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。 SOA 并不是一个新鲜事物,而只是面
向对象模型的一种替代。虽然基于 SOA 的系统并不排除使用 OOD 来构建单个服务,但是其整体设计却是面向服务的。由于
SOA 考虑到了系统内的对象,所以虽然SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。
SOA 系统原型的一个典型例子是 CORBA,它已经出现很长时间,其定义的概念与 SOA 相似。SOA 建立在 XML 等新技术的
基础上,通过使用基于 XML 的语言来描述接口,服务已经转到更动态且更灵活的接口系统中,CORBA 中的 IDL 无法与之相
比。图 9-13 描述了一个完整的 SOA 模型。
在 SOA 模型中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务通过服务总
线或流程管理器来连接。这种松散耦合的架构使得各服务在交互过程中无需考虑双方的内部实现细节,以及部署在什么平台
上。
1. 服务的基本结构
一个独立的服务基本结构如图 9-14 所示。
由图 9-14 可以看出,服务模型的表示层从逻辑层分离出来,中间增加了服务对外的接口层。通过服务接口的标准化描述,使
得服务可以提供给在任何异构平台和任何用户接口使用。这允许并支持基于服务的系统成为松散耦合、面向构件和跨技术实
现,服务请求者很可能根本不知道服务在哪里运行、是由哪种语言编写的,以及消息的传输路径,而是只需要提出服务请求,
然后就会得到答案。
2.SOA 设计原则
在 SOA 架构中,继承了来自对象和构件设计的各种原则,例如,封装和自我包含等。那些保证服务的灵活性、松散耦合和复
用能力的设计原则,对 SOA 架构来说同样是非常重要的。关于服务,一些常见的设计原则如下:
(1)明确定义的接口。服务请求者依赖于服务规约来调用服务,因此,服务定义必须长时间稳定,一旦公布,不能随意更
评论5