《SOA原理与技术》学习笔记(四)——Web服务实现和REST基础
《SOA原理与技术》学习笔记(五)——REST API设计和服务组合技术
《SOA原理与技术》学习笔记(六)——服务业务流程和企业服务总线ESB
文章目录
六、REST API设计
1. 统一接口、安全性幂等性
安全性:指外系统对该接口的访问,不会使服务器资源的状态发生改变
幂等性(Idempotent):是一个数学上的概念,在这里是指外系统对同一REST接口的多次访问,得到的资源状态是相同的。
GET | PUT | POST | DELETE | |
---|---|---|---|---|
安全性 | 是 | 不是 | 不是 | 不是 |
幂等性 | 是 | 是 | 不是 | 是 |
获取服务提供的资源 | 更新操作,只有一种场景应当使用PUT方法来设计API,即客户端在发起创建请求时,在同一份数据中总可以提供唯一的主键值,服务器不会对其进行修改,这样的创建请求确保了幂等性,不应再使用POST方法。 |
2. 资源定位、资源路径设计
资源地址相同,但HTTP方法不同的两个方法是两个不同的REST接口。HTTP方法和资源地址结合在一起才可以完成对资源的定位。
JAX-RS2.1 和 Spring Boot 的注解
@Queryparam与@Pathparam区别:
3. 【实验】:如何开发和调用Restful API services
-
创建一个 Spring Boot 项目
-
新建一个 Controller ,配置URL,编写逻辑代码
@GetMapping
-
使用对应 URL 调用
4. 输入、输出格式如何协调
@Produces 表示类或者方法返回的MIME数据类型
@Consumes用于定义方法的请求实体的数据类型
七、服务组合技术
orchestration 和 choreography
- 前者定义了如何将小粒度的服务按照特定的流程聚合为大粒度的服务;
- 后者则定义了如何在多方的业务流程之间通过服务实现协同的动作编排。
- 二者的本质上都是用来规划服务之间的协同。
1. 服务编排
将多个小粒度的Web服务按照特定的业务逻辑规则构造为一个可执行的业务过程,同时又可以看作是一个大粒度的复合Web服务。
- 执行时需要有中心控制机制;
- 由一个组织所拥有;
侧重点:如何使用已有的服务来构造新的服务。
实现方法:BPEL和BPEL4WS
BPEL能够实现基于WSDL的Web Services之间的流程编排和服务协同,它提供了一种XML注释和语义,用于指定对Web Services进行编排并确定Web服务之间的业务流程,实现Web Services之间的协同。
2. 服务协同
将多个零散的、分别由多方提供的服务/业务流程按照彼此之间的协同关系组织起来,支持多方的交互行为。
侧重于不同服务之间的消息传递的次序与规则,以保证期望的协同行为。
无需中心控制;
无需完全由一个组织所拥有;
3. 两者比较
服务编排是将小粒度的服务按照一定规则组合成大粒度,仍旧是一个服务,而服务协同是强调这些服务之间如何进行消息交换和数据传递,从而支持业务上的协调。
BPEL——服务编排
- 需要集中式的控制机制;
- 递归式的服务组合;
- 可执行的过程建模语言;
- 需要调用Web服务;
WS-CDL——服务协同
-
无需集中式的控制机制(分布在各个参与方);
-
描述性语言,不可执行;
-
无需调用Web服务;
-
可执行的过程建模语言;
-
需要调用Web服务;