SOA (Service

SOA 定义

面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模 型,它将应用程序的不同功能单元(称为服务)通过接口和契约联系起来。

接口采用中立的方式进行定义,独立于实现服务的 硬件平台、操作系统和编程语言,使得构建在各种这样系统中的服务可以用 一种统一和通用的方式进行交互。

SOA 共有三种角色,服务提供者、服务请求者、服务注册中心。

SOA 特点

标准化的接口:服务描述的重点在于交互所用的操作服务,调用操作的消 息、构造这种消息的细节,关于向何处发送用于构造这种消息的处理细节信息。 通过服务接口的标准化描述,从而使得该服务可以提供给任何异构平台和任何 用户接口使用。该接口隐藏了实现服务的细节,允许独立于实现服务的硬件、 软件平台及编写服务所用的编程语言。

松散耦合:服务请求者到服务提供者的绑定与服务之间是松藕合的。松散 耦合旨在将服务和服务实现隔离开来。服务接口作为服务与服务实现分离的实 体而存在,服务请求者不知道提供者实现的技术细节,比如程序设计语言、部 署平台等。服务请求者往往通过消息调用操作(请求消息和响应),而不是通过 使用API(Application Programming Interface)或文件格式。

粗粒度:服务粒度(Service Granularity)指的是服务所公开功能的范围, 一般分为,细粒度和粗粒度。其中,细粒度服务是指那些能够提供少量商业流 程可用性的服务。粗粒度服务是那些能够提供高层商业逻辑的可用性服务。粗 粒度服务可以灵活组合稳定性强、重用性高的细粒度服务,而快速形成新的业 务逻辑。虽然细粒度的接口为请求者应用程序提供了更多的灵活性,它同样也 意味着交互的模式可能随着服务请求者的不同而不同。这可能使对于服务提供 者的支持更加困难。粗粒度接口保证服务请求者将以一致的方式使用服务。SOA 不要求使用粗粒度接口,但是推荐使用它们作为外部集成的最佳实践。服务编 排可以用来创建运行由细粒度操作组成的业务流程的粗粒度接口。

无状态服务:服务应该是独立的、自包含的请求,在实现时它不需要从一 个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状 态。当需要依赖时,它们最好定义成通用业务流程、函数和数据模型,而不是 实现构件比如会话密钥。当然,请求者应用程序需要服务调用之间的持久状态, 但是这不应该与服务提供者分开。