面向服务的架构和WebService

1. 面向服务的架构 SOA

1.1 简介

  • SOA 是从架构方面,整体支持面向服务泛型的基本概念性架构模型
  • SOA 是一种业务-IT结合的方法。其中,应用依赖于现有的服务来实现业务过程。
  • 实现 SOA 主要包括:
  1. 面向服务的企业
  2. 采用服务开发应用
  3. 采用服务对应用进行封装,以便今后复用
    \cdots

1.2 模型

  • 传统服务架构模型
    传统服务架构
    传统服务架构模型中,服务请求者和服务调用者之间是紧密耦合的关系。

  • SOA 三角操作模型
    SOA架构
    SOA 模型最大程度解耦合服务请求者和服务提供者。

  1. 服务提供者将服务发布到服务注册者那里
  2. 服务请求者到服务注册者那里查询所需服务
  3. 服务注册者找到最适合服务请求者的服务返回给服务请求者,服务请求者根据返回信息去进行服务的调用

1.3 SOA 的优点

  • 从 IT 角度出发
  1. 松耦合,消除假依赖(复用)
  • 语言、平台和厂商中立
  • 消除时间依赖
  • 消除访问地址依赖
  • 消除访问协议依赖
  1. 服务间接寻址(灵活)
  • 从业务角度出发
  1. 保护企业投资,提升现有 IT 资源的作用,促进 IT 资源的复用
  2. 提高企业灵敏度
  3. 支持企业外包管理模式
  • 从双角度出发
  1. SOA 在不同粒度上提供了本质性的指导:业务层、过程层、中间件层和编程层
  2. 在每个层次中间:
  • SOA 按照自顶向下的方式,将一个较大的单元分解为较小的、以服务为中心的单元
  • SOA 按照自底向上的方式,将可供使用的较小单元组织成为较大的单元,用以提供全新的服务

SOA模型层次

1.4 SOA 的参考架构

SOA参考架构

  • 水平层:对功能性需求加以满足。五个水平层分为两组:
  1. 服务提供者(后台)
  • 操作系统层:包括ISV(独立软件开发商)提供的打包应用、客户应用、遗留系统等。该层的应用(不一定面向服务)往往只为一个目的、服务于一类特定用户。
  • 服务组件层:包括用于提供用以实现服务层中所定义服务的代码容器,其中一个服务组件依赖于操作系统层次中的一些打包组件、服务层中的一些服务、业务过程层中的一些业务过程。该层可能实现多个方法,但其中只有一部分会被服务层封装为服务。从调用角度出发,服务组件层负责完成输入转换和输出配置的自动化逻辑。
  • 服务层:将SOA三角操作模型扩展为综合的逻辑层次,以支持服务注册、服务分解、服务发现、服务绑定、接口聚合和生命周期管理。服务层负责定位合适的服务提供者,并绑定到具体目标服务接口;同时负责以服务组合的形式封装服务对外提供。服务簇是服务层中的核心概念,它是一类从概念上服务于同一业务功能的服务集合。服务簇中的服务可以由不同的功能提供者所发布,并在具体的特性上有所差异(但都能满足业务功能需求)。
  1. 服务消费者(前台)
  • 服务层:服务层作为前后台连通的接口,功能同上。
  • 业务过程层:以组合和分解的方式来处理业务逻辑。从组合角度出发,业务过程层使用服务层来快速组合服务,并协调业务过程来满足消费者需求;从分解的角度出发,业务过程层将业务需求分解为能够由概念上的服务簇所表达的任务。业务服务层着眼于从协作和管理一些列过程的角度出发,采用也无流程来构建SOA解决方案。两种组合方式:编排、编导(二者功能上等价,主流模式为编排)。
    【编排】
    编排
    【编导】
    编导
  • 消费者层:消费者层负责表达对业务过程层、服务层及其他层次的调用。通过为业务服务快速构建用户接口来满足消费者的需求。消费者层负责构建SOA解决方案与用户之间进行交互的前端接口。消费者层可能需要同时支持不同种类的用户和渠道。为了提升展现性能,往往需要支持缓存机制。
  • 垂直层:对当前系统进行支撑以及实现服务质量、非功能性需求。
  1. 集成层:SOA解决方案中的关键支持部件,用以在服务请求者和服务提供者之间,完成服务请求的中介、路由和转换。
  2. 服务质量(QoS)层:从各个方面(可用性、可靠性、安全性等非功能性需求)提供解决方案层级的 QoS 管理。服务质量层不关注于服务层级的 QoS 控制,而是着眼于为解决方案层级的 QoS 控制提供支持、跟踪、监视和管理。
  3. 数据架构层:为了方便值链集成(集成来源于不同开发方的服务),数据架构层为领域相关的数据架构提供统一的表达和支持机制。
  4. 治理层:提供用以确保 SOA 解决方案的设计原则;通常使用最佳实践的方式,来提供如何在各个层次中构建 SOA 解决方案的原则、如何监管运营中的系统,并在运行时处理异常的原则。

2. Web Service

SOA 是概念层级的架构模型,需要使用其他技术来具体实现 SOA 模型,比如 Web Service(主流方式)、组件服务、REST 服务等。
WebService实现SOA

2.1 简介

Web Service 不是一个协议标准,它是一系列协议标准的集合。它主要包括:XML、XML Schema、NameSpace、SOAP、WDSL、WS-BPEL/WS-CDLUDDI、WSIL、WS-*

  • XML 用来定义数据并完成数据交换
  • XML Schema 用来定义数据结构
  • NameSpace 使得 XML 元素全球可用
  • SOAP 定义平台/技术无关的消息传送方式
  • WDSL 定义平台/技术无关的服务能力/调用方式使得共享一组相同/相似服务能力的服务簇成为可能,使得构建服务库成为可能
  • WS-BPEL/WS-CDL 使用 XML 脚本,以平台/技术无关的方式定义服务组合
  • UDDI、WSIL 来完成服务的发布/查找
  • WS-* 来为应用满足各种非功能性需求

2.2 Web Service 协议栈

Web Service 协议与具体的平台、语言、技术无关,在各开发平台、语言、环境中均有相关支撑。
WebService协议栈

  • 组装层:采用平台中立的方式来表达描述如何构造出一个复杂的业务流程、如何采用拼装的方式来给定服务组合
  • QoS 层:每一个协议标准都在下层一些协议标准的基础上提供某些方面的非功能性需求
  • 描述、发布、查询层:WSDL 对服务接口进行描述,UDDI 对发布和查询接口进行描述
  • 消息层:解决如何跨平台对消息进行封装、描述、表达
  • 传输层:解决网络数据传输

2.3 Web Service 抽象模型

  • 作为服务提供者
    WebServiceProvider抽象模型
  1. 服务合约:以 WSDL 为核心的脚本再加上其他脚本共同规定 Web Service 对外提供服务所应当具备的能力、特征、限制和约束条件。用于解耦服务提供者和服务请求者。
  2. 转换层:message、processing、logic
  • 作为服务请求者
    WebServiceRequestor抽象模型

  • 同时作为服务提供者和请求者
    WebService抽象模型
    有时习惯性的称提供服务、请求服务为服务端开发、客户端开发。