|
知识路径: > 软件架构基础知识 > 面向服务的架构 >
|
相关知识点:2个
|
|
|
|
SOA并不仅是一种现成的技术,而且是一种架构和组织IT基础结构及业务功能的方法,是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。下图描述了一个完整的面向服务的架构模型。
|
|
|
|
|
在SOA架构模型中,首先,所有的功能都定义成了独立的服务。服务之间通过交互、协调作业从而完成业务的整体逻辑。所有的服务通过服务总线(services bus)或流程管理器来连接服务和提高服务请求的路径。这种松散耦合的架构使得各服务在交互过程中无须考虑双方的内部实现细节,以及部署在什么平台上。应用程序的松散耦合还提供了一定级别的灵活性和互操作性,使用传统的方法构建高度集成的、跨平台的程序对程序的通信环境所能提供的灵活性和互操作性无法与之相比。
|
|
|
下面从微观的角度,看看独立的单个服务内部的结构模型。一个独立的服务基本结构模型如下图所示。
|
|
|
|
|
由上图可以看出,与构件模型的区别在于,服务模型的表示层从逻辑层分离出来,中间增加了服务对外的接口层。服务接口的意义在功能上表现为:更多、更灵活的功能可以在服务接口中实现。
|
|
|
此外,更加突出的变革性突破在于,通过服务接口的标准化描述从而使得该服务可以提供给在任何异构平台和任何用户接口使用。这允许并支持基于Web服务的应用程序成为松散耦合、面向构件和跨技术实现。调用程序很可能根本不知道该服务在哪里运行、由哪种语言编写以及消息的传输路径。只需要提出服务请求,然后就会得到答案。同时,由于服务模型中的业务逻辑构件之上增加了一层可以被大部分系统都认可的协议,从而使得系统的集成不再是一个问题。
|
|
|
SOA是一种粗粒度、松耦合的服务架构,其服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通信模型。这种模型具有下面3个特征:
|
|
|
(1)松散耦合。SOA是松散耦合构件服务,这一点区别于大多数其他的构件架构。松散耦合旨在将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。服务提供者和服务使用者间松散耦合背后的关键点是服务接口作为与服务实现分离的实体而存在。这是服务实现能够在完全不影响服务使用者的情况下进行修改。大多数松散耦合方法都依靠基于服务接口的消息,基于消息的接口能够兼容多种传输方式,可以采用同步或异步协议实现。
|
|
|
(2)粗粒度服务。服务粒度(service granularity)指的是服务所公开功能的范围,一般分为细粒度和粗粒度,其中,细粒度服务是那些能够提供少量商业流程可用性的服务。粗粒度服务是那些能够提供高层业务逻辑的可用性服务。选择正确的抽象级别是SOA建模的一个关键问题。设计中应该在不损失或损坏相关性、一致性和完整性的情况下,尽可能地进行粗粒度建模。通过一组有效设计和组合的粗粒度服务,业务专家能够有效的组合出新的业务流程和应用程序。
|
|
|
(3)标准化接口。SOA通过服务接口的标准化描述,从而使得该服务可以提供给在任何异构平台和任何用户接口中使用。这一描述囊括了与服务交互需要的全部细节,包括消息格式、传输协议和位置。该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的编程语言使用服务。
|
|
|