SOA-面向服务架构
- 1.概述
- 2.SOA的设计原则包括:
- 3. SOA实现方法
- 1.Web Service
- 2. 服务注册表
- 3. 企业服务总线
细讲
超赞笔记
1.概述
SOA (Service-Oriented Architecture,SOA),从应用和原理的角度,目前有2种公认的标准定义。
- 从应用的角度定义
可以认为SOA是一种应用程序架构。将业务应用划分为单独的业务功能和流程, 即所谓的服务。所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。
这种业务灵活性可以使企业快速发展,降低成本,改善对及时、准确信息的访问。有助于实现更多的资产重用、更轻松的管理和更快的开发和部署。
- 从软件的基本原理定义
可以认为SOA是一个组件模型。它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
接口就是采用中立的方式 进行定义的,它独立于服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以一种统一和通用的方式进行交互。
2.SOA的设计原则包括:
- 明确的接口定义:接口需满足稳定、明确、封装性等要求。
- 自包含与模块化:实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。
- 粗粒度:服务数量不应太多,依靠消息交互而不是远程过程调用。-
- 松耦合:减少各个服务间的相互依赖和影响,各个服务的位置、实现技术、当前状态以及私有数据,对服务请求者不可见。
- 互操作性、兼容性和策略声明。
3. SOA实现方法
1.Web Service
在 Web Service(Web 服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必需的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了 SOA 的一种实现架构,如图 9-16 所示。
(1)服务提供者。服务提供者是服务的所有者,该角色负责 定义并实现服务 ,使用 WSDL 对服务进行详细、准确、规范地描述,并将该描述发布到服务注册中心,供服务请求者查找并绑定使用。
(2**)服务请求者**。服务请求者是服务的使用者,虽然服务面向的是程序,但程序的最终使用者仍然是用户。从架构的角度看,服务请求者是查找、绑定并调用服务,或与服务进行交互的应用程序。服务请求者角色可以由浏览器来担当,由人或程序(例如,另外一个服务)来控制。
(3)服务注册中心。服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,而服务请求者在服务注册中心查找他们需要的服务。不过,在某些情况下,服务注册中心是整个模型中的可选角色。例如,如果使用静态绑定的服务,服务提供者则可以把描述直接发送给服务请求者。
Web Service 模型中的操作包括发布、查找和绑定,这些操作可以单次或反复出现。
(1)发布。为了使用户能够访问服务,服务提供者需要发布服务描述,以便服务请求者可以查找它。
(2)查找。在查找操作中,服务请求者直接检索服务描述或在服务注册中心查询所要求的服务类型。对服务请求者而言,可能会在生命周期的两个不同阶段中涉及查找操作,首先是在设计阶段,为了程序开发而查找服务的接口描述;其次是在运行阶段,为了调用而查找服务的位置描述。
(3)绑定。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系并调用服务,从而在运行时与服务进行交互。绑定可以分为动态绑定和静态绑定。在动态绑定中,服务请求者通过服务注册中心查找服务描述,并动态地与服务交互;在静态绑定中,服务请求者已经与服务提供者达成默契,通过本地文件或其他方式直接与服务进行绑定。
2. 服务注册表
服务注册表(service registry)虽然也具有运行时的功能,但主要在 SOA设计时使用。它提供一个策略执行点(Policy Enforcement Point,PEP),在这个点上,服务可以在 SOA 中注册,从而可以被发现和使用。服务注册表可以包括有关服务和相关构件的配置、依从性和约束文件。从理论上来说,任何帮助服务注册、发现和查找服务合约、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。大多数商用服务注册产品支持服务注册、服务位置和服务绑定功能。
(1)服务注册。服务注册是指 服务提供者 向 服务注册表 发布服务的功能(服务合约),包括服务身份、位置、方法、绑定、配置、方案和策略等描述性属性。使用服务注册表实现 SOA 时,要限制哪些新服务可以向注册表发布、由谁发布以及谁批准和根据什么条件批准等,以便使服务能够有序的注册。
(2)服务位置。服务位置是指 服务使用者 ,帮助它们查询已注册的服务,寻找符合自身要求的服务。这种查找主要是通过检索服务合约来实现的,在使用服务注册表实现 SOA 时,需要规定哪些用户可以访问服务注册表,以及哪些服务属性可以通过服务注册表进行暴露等,以便服务能得到有效的、经过授权的使用。
(3)服务绑定。服务使用者利用查找到的服务合约来开发代码,开发的代码将与注册的服务进行绑定,调用注册的服务,以及与它们实现互动。可以利用集成的开发环境自动将新开发的服务与不同的新协议、方案和程序间通信所需的其他接口绑定在一起。
3. 企业服务总线
ESB 的概念是从 SOA 发展而来的,它是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。