Skip to content

Instantly share code, notes, and snippets.

@Cee
Last active September 6, 2016 02:58
Show Gist options
  • Select an option

  • Save Cee/975e197976743cb393e0 to your computer and use it in GitHub Desktop.

Select an option

Save Cee/975e197976743cb393e0 to your computer and use it in GitHub Desktop.
SOA

服务计算是什么?为什么存在

服务

  • 服务代表了一种基于至少一个服务供应商和一个服务消费者关系的交互(活动),以达到某种特定的商业目标或解决方案的目的。在服务计算生命周期中,服务提供商承诺实现任务并提供给服务消费者价值,二者共享基于有效和有价值服务的健康、长期互信的共同目标。

IT商务服务特点

  • 服务运作模型(定义了服务怎样被送达)
    • 服务可以由不同方式实现,分别代表不同服务运作模型,如端到端模型说明服务提供者可以直接发送服务到特定的服务对象,其他如服务托管模型,业务流程外包,数据中心外包和网上经纪代理服务
  • 服务收费模型(关注服务怎样收费)
    • 免费模式
    • 收费模式
    • 政府服务模式
  • 和非IT服务的异同点
    • 相似
      • 有类似的服务周期原则
      • 服务系统元素类似
    • 不同
      • KPI,企业关键绩效指标
      • 需求管理
      • 产品迭代

服务系统

  • 通过IT软件系统实现服务的系统。
  • 6个元素
    • 输入
    • 输出
    • 目标
    • 变化
    • 组件(服务人员 服务合作伙伴 服务信息 服务激活 服务基础设施资源)
    • 传感器
  • 5种基本组成
    • 服务人
    • 服务协作商
    • 服务信息
    • 服务活动
    • 服务架构资源
  • 4个方面/视角
    • Model 模型
      • 服务运营(Operation)模型
      • 服务交付(Delivery)模型
      • 服务能力(Capacity)模型
    • Technology 技术
      • Web服务(Web Services)
      • 面向服务架构(SOA,Service-oriented architecture)
      • 网格(Grid)
      • 系统工程(Autonomic Computing)
    • Architecture 结构
      • 商务结构
      • 数据结构
      • 应用结构
      • 性能(performance)结构
    • Optimization 优化
      • 业务研究
      • 复杂系统
      • 系统工程
  • 服务生命周期 及其和SDLC系统构建生命周期(System Development Life Cycle)的比较
    • 包括6个阶段
      • 咨询和计划策略
      • 服务预定/接触(engagement)
      • 服务提交
      • 服务操作
      • 服务收费
      • 服务管理
    • 7个关键因素
      • 数据/信息
      • 过程
      • 人(客户和技术人员)
      • 资源
      • 财务因素
      • 知识和技能
      • 创新和科技
    • SDLC
      • 系统建模
      • 软件需求分析
      • 系统分析设计
      • 软件构造
      • 软件系统测试
      • 维护

服务计算技术的出现

  • 商务的动态性
  • 灵活
  • 业务流程可以灵活和快速的回应客户的需求

服务计算的目标

  • 复杂的服务体系
  • 灵活的服务体系
  • 专业化和外包模型
  • 计算环境的演变
  • IT专家和商业专家的距
  • 新的增值和创新性职能

服务计算

  • 目的于建立、运行、管理和优化在一个良好定义框架下的进程,来提供更高的灵活性,满足商务多变性
  • 商务应用被通过练好定义的借口以独立于平台的方式发布来提高协作
  • 核心技术
    • SOA和WEB SERVICES
    • 商务过程组装和商务性能管理

服务自制系统

  • 垂直服务
    • 从消费者的角度来说,有很多服务是被同时和独立使用的,他们被成文垂直服务,分为纯IT服务和IT使能服务。
  • 水平服务
    • 垂直服务可以被一些可复用的跨工业的公共服务来构建,被称为水平服务,分为公共商务服务和IT服务。

Web Service

  • 网络服务 Web service 是具有提供通过标准通信协议可以无障碍访问的标准接口描述的可编程接口。
    • 可以基于不同平台,不同语言来实现。
    • 可以被组合来建立具体领域的应用和解决方案。
    • 可以被看作是OO设计的对象的扩展。
  • 使用XML
    • 通过WSDL提供(Web Services Description Language,网络服务描述语言)

SOA面向服务架构

  • 它将应用程序功能作为服务发送给最终用户或者其他服务。是一个可以复用的由软件提供商提供、面向多个服务需求者的服务。
  • 好处
    • IT服务方面
      • 松耦合 可以复用
      • 服务间接寻址 灵活
    • 商业方面
      • 保护企业投资,提升现有IT资源的作用,促进IT资源的复用
      • 提高企业灵敏度
      • 支持企业外包管理模式

XML

  • 被规范定义的文本
  • 树状层次结构
  • 特点
    • 单一根节点
    • 元素表示
      • 开始结束标记
      • 开始标记中可以有属性
      • 若无属性表示
    • 元素包围
    • 命名:大小写敏感 不能有空格
    • 属性:name=“value”
    • XML声明
    • 注释:
  • 命名空间

XML Schema

  • 目的
    • 商业
      • 快速增长的数据
      • 减少集成成本
    • 技术上
      • 验证XML文档
      • 命名空间
  • 规则
    • 根节点必须是 xsd:schema
    • minOccurs/maxOccurs
    • 定义子节点必须用xsd:complexType
      • 三种情况:choice sequence all
    • 属性定义<xsd:attribute name='xx' type='xsd:demical' fixed='xx'>

SOAP(Simple Object Access Protocol)简单对象访问协议

  • 是交换数据的一种协议规范
  • 单向信息交换,提供一个框架使得应用可以获取信息
  • 历史
    • XML-RPC
    • SOAP1.1
    • SOAP1.2(SOAP不再是Simple Object Access Protocol的缩写)
  • 是基于XML 并且必须绑定互联网协议
  • 两种交互模式
    • 远程过程调用:是一种同步的请求/反馈的交互方式
    • 面向文件:是一种异步的交互方式
  • SOAP结构
    • SOAP Envelope 请求信封元素,代表了根元素和标示XML文档为SOAP信息
    • Header(optional)可选的头元素,包含关于特定SOAP信息的具体应用的控制信息
    • Body 请求体元素,包含目标为终端端点的实际SOAP信息
    • Fault(optional)可选的错误元素,作为SOAP体的一部分,标示错误信息

The Web Services Description Language (WSDL) 网络服务建模

  • XML,Namespace,XML Schema提供数据定义
  • SOAP提供传输协议
  • WSDL提供服务接入 用来定义服务/服务能力
  • WSDL定义了一个Web服务的公共接口,包括功能点和怎样调用他们。它同时定义了与其他web服务交互的信息格式和协议邦定,信息格式定义了怎样翻译信息中的数据格式,协议邦定定义了怎样把信息映射到一个具体的网络传输端口,为同步(面向文档)和异步(面向过程)交互模式设计。
  • WSDL回答了服务是关于什么 寄存在哪里 如何调用的三个问题。
  • 结构:
    • WSDL定义了一整套端口(服务接入点)
    • 端口发布端口类型的集合,绑定到一定的网络地址
    • 端口类型是逻辑上的相关操作的集合
    • 操作是服务支持的活动的抽象描述
    • XML Schema定义的数据类型可以使用
  • Simplified Structure

BPEL (The Business Process Execution Language for Web Services )

  • 定义多种业务的协调互动,以实现一个共同的业务目标。
  • 建立商务过程的两个方式
    • 可执行的过程模型:交互建模
    • 抽象模型:描述没有显示的行为
  • 建立商务过程的两个阶段
    • 创建服务描述
    • 创建商务过程
  • BPEL的关键元素
    • Partners 定义了商务过程中的关系
    • Partner link types 定义对华关系
    • Partner links 定义伙伴服务
    • Business partners 定义两个商务伙伴的关系
    • Endpoint references 动态绑定服务端口数据机制
    • Activities 活动:分为基础活动(比如receive reply invoke)和结构化活动(sequence flow pick)
    • Data Handling 商务过程的状态处理
    • Correlation 关联:解决每个商务过程中的长会话
    • Scope 范围:每个活动的上下文

UDDI(Universal Description, Discovery, and Integration) 统一描述、发现和集成

  • 使用XML保存WS是谁提供的 做什么 在哪注册服务 怎么注册服务
  • 类似黄页,定义一种机制来存储用XML信息注册的Web服务的描述,包括
    • businessEntity 商业实体,通过描述服务的信息来代表物理商务
    • businessService 商业服务,代表商务提供的服务
    • bindingTemplate 绑定模版,标示如何调用服务
    • tModel 技术模型,代表唯一的概念或者构造
    • publisherAssertion
  • 协议
    • 顶层WSFL,Web Services Flow Language
    • 通过UDDI寻找
      • 分为信息发现 Info discovery
      • 信息发布 Info publication
    • WSDL
    • SOAP
    • Network
  • UDDI 发布API
    • 授权
    • 获取
    • 保存
    • 删除

WSIL(Web Services Inspection Language)Web服务检视语言

  • WSIL文档提供了一种简单方便的方式,允许商务伙伴和提供者通过灵活的到其他发布服务的链接来发布自己的服务到网络上,是基于WSIL文档链而进行一个迭代的搜索过程,包括以下五个步骤(WSIL链)
    • 确定开始的WSIL文档的位置
    • 对指定的WSIL文档进行查找
    • 显示出在WSIL文档中包含的链接
    • 选择一个链接,加载选定WSIL文件的内容,如果被加载文件中还有其它链接,继续寻找更深的文档
    • 重复3到4遍历所有相关链接直到相关信息被找到
  • 和UDDI的区别
    • UDDI类似黄页 提供分类组织WS
    • WSIL使得WS通过一个简单服务的注册来得到发现部署

WS Discovery

  • UDDI4J(UDDI for Java)
  • UDDI查询
    • 浏览:获得服务技术特性
    • 下钻:获得具体的功能部件
  • WSIL Search
    • 确定开始的WSIL文档的位置
    • 对指定的WSIL文档进行查找
    • 显示出在WSIL文档中包含的链接
    • 选择一个链接,加载选定WSIL文件的内容,如果被加载文件中还有其它链接,继续寻找更深的文档
    • 重复3到4遍历所有相关链接直到相关信息被找到
  • WSIL4J(WSIL for Java)

WS-*

  • 定义所有WS服务标准

WS-Addressing

  • 规范定义了一种将消息寻址信息综合到WS消息中的标准
  • 包含在SOAP头中
  • Stateless and Stateful Web services
    • 不需要上下文的 轻量级 Stateless
    • 需要持久化信息和服务顾客的或者复杂的服务 重量级 Stateful
    • 例子(取钱是否每一步都要用户密码)

WSRF(Web Services Resource Framework)Web服务资源框架

  • 是一种基于XML的描述资源的方法。定义了一个使用web服务管理和接入稳定资源的系统的规格系统。
  • 包括四组规格:使得通过WS接口访问资源的内部状态
    • WS资源性质 WS-ResourceProperties
    • 资源生命期 WS-ResourceLifetime:定义消息何时销毁
    • 基本错误 WS-BaseFault
    • 服务组 WS-ServiceGroup
  • 另外WSRF支持动态创建资源属性和关联值,WSRF描述如何通过WS接口访问WS资源的状态,定义了WS资源组织和定位的相关机制。

QoS(Quality of Service) 服务质量

  • 分为四类
    • 安全 Security
    • 事务 Transaction
    • 可靠信息传输 Reliable Messaging
    • 资源生命周期管理 Resource Lifetime Management

WS-Security

  • 提供一种加密SOAP信息交换的机制
  • 包括
    • WS-Authorization
    • WS-SecureConversation
    • WS-Federation
    • WS-Security Policy
      • WS-Policy Framework
    • WS-Trust
    • WS-Privacy
  • SOAP头
    • Security Headers
      • Security Token
      • Time Stamp
      • Signature
      • Encrypted Key

WS-Coordination

  • 分类
    • WSAT WS-Atomic Transaction 原子过程(AT,atomic transaction):短时间
    • WSBA WS-Business Activity 商务过程(BA,business activity):持久,长时间

面向服务的生命周期

  • 面向服务的分析
  • 面向服务的设计
  • 服务的开发
  • 服务的测试
  • 服务的部署
  • 服务的管理

面向服务的交付策略

  • 自顶向下:分析优先
  • 自底向上:按需交付,封装并集成遗留系统优先
  • 敏捷策略:平衡

面向服务的分析

  • 目标
    • 讨论需要构建哪些服务,每个服务需要封装哪些逻辑
      • 定义一组预备的服务操作候选
      • 将服务操作候选分组到符合逻辑的语境(服务候选)中
      • 初步定义服务的边界,以使它们不会与任何现有的或已经规划好的服务相重叠
      • 识别封装好的逻辑(服务操作候选,服务候选)能够被复用的潜在可能
      • 确保被封装的逻辑(服务操作候选,服务候选)语境符合预期的用途
      • 定义任何已知的候选合成模型
  • 流程
    • 定义流程自动化需求
      • 文档化的需求描述,是服务候选建模的依据
    • 识别现有的自动化系统
    • 对服务候选建模
      • 识别服务操作候选,并将其分组到服务候选中的过程

服务建模过程

  • 分解业务流程
  • 识别业务服务候选逻辑
    • 识别业务流程中不应被抽象为服务候选的步骤
    • 考虑可复用性
  • 抽象编排逻辑
    • 定义由编排层完成的潜在逻辑(业务规则 条件逻辑 异常逻辑 序列逻辑)
  • 创建业务服务候选
    • 充分考虑业务中立,引入对额外的服务操作候选的分析
  • 提炼和应用面向服务原则
    • 考虑复用自治
  • 识别服务候选组合
  • 修订业务服务候选
  • 分析应用处理需求
  • 识别应用服务操作候选
    • 不应与业务流程步骤的上下文相关
  • 创建应用服务候选
  • 修订服务候选组合
  • 修订应用服务候选
  • 保存服务候选库存(可选)

服务建模方法

  • 提取混合型服务
  • 派生以实体为核心的服务
  • 混合以任务为核心与以实体为核心的服务

面向服务设计

  • 在面向服务设计的过程中,通过从服务候选(逻辑)派生出具体的服务设计(物理),然后装配到实现业务流程的抽象组合中
  • 过程
    • 组合SOA
      • 选择服务层
      • 定位核心的SOA 标准
      • 选择SOA 扩展
        • 选择SOA特征
        • 选择WS-*标准
        • 选择BPEL
    • 设计服务
      • 设计以实体为核心的业务服务
      • 设计应用服务
      • 设计以任务为核心的业务服务
    • 设计面向服务业务过程

WS-I

  • SOAP
  • WSDL
  • UDDI
  • XML
  • XML Schema
  • 等等

服务设计

PPT Chap9

面向服务设计的原则

  • 标准化服务合约
    • 建立了服务交互有关的术语
    • 合约与服务设计
      • 数据表示标准化和转换的避免
      • 标准化与粒度
      • 标准化服务合约与服务模型
      • 标准化服务合约设计与其他原则
  • 服务松散耦合
    • 耦合类型 PPT
    • 担心过于松散
  • 服务抽象
    • 隐藏程序中其他程序不绝对需要的信息,使该程序得以有效的使用
    • 服务元信息
      • 技术信息——描述底层服务逻辑的技术实现(隐藏程序语言和系统资源)
      • 功能信息——描述服务可以做什么
      • 程序逻辑信息——描述服务如何实现这些能力
      • 服务质量信息——描述服务的行为、限制和交互需求
    • 服务封装
      • 封装影响抽象
      • 区别
        • 封装是指服务边界内部的逻辑、资源和信息(服务由合约及其所封装的东西组成)
        • 抽象指的是服务所封装的内容中,暴露给服务边界之外的消费者程序的部分以及对它们隐藏的部分。抽象决定了封装逻辑中有多少是公开的。
  • 服务可复用性
    • 复用,让一个软件不仅仅对一个目标有用
    • 软件的设计、测试、演化均受其影响
    • 泛型的发展是复用层次不断提高的过程
    • 复用无关服务(对于多个流程有用 不需要上下文)
    • 逻辑集中化 合约集中化
    • 考虑可靠安全性
  • 服务自治
    • 自己拥有自由和控制权,不需要外界的批准和干预就可以做出自己的决定
    • 软件程序处于一个自治的运行时状态,它就能够不受外界的影响而完成自身的逻辑
    • 服务的自治,表现了它可以独立执行自身核心服务逻辑的能力
    • 类型
      • 运行时自治
      • 设计时自治
    • 服务规范化
    • 合约反规范化
    • 共享自治
    • 服务逻辑自治(部分隔离服务)
    • 完全自治
  • 服务无状态性
    • 对状态管理职责的委托(delegation) 和延迟(deferral)
    • 消息作为一个状态延迟选项
    • 服务无状态性与服务实例 WS-Addressing协议提供了相应机制
  • 服务可发现性
    • 帮助我们确定得要完成的自动化需求是否在服务库存中
    • 需要元信息
    • 人的发现过程包括查询和过滤
    • 被发现后需要评估目标和能力 叫做可解释性
    • 可发现性元信息
      • 功能性
      • 服务质量
      • 度量——定制分级系统
  • 服务可组合性
    • 服务组合是SOA 的核心概念,代表设计特性和运行时的动态性
    • 传统组合:DLL OOAD(面向对象分析设计)
    • 面向服务的组合

面向服务的测试

  • 特点
    • 基于规约的测试
    • 动态性测试
    • 协同测试
      • 协同验证确认(CV&V)
      • 独立验证确认(IV&V)

WebStrar

  • 发布与服务相关的测试资产,如测试用例、测试用例的排名方法、测试生成方法、测试生成方法的排名方法、软件可靠性模型、软件可靠性模型的排名方法
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment