这 10 个 SOA 设计模式是如此之重要,其应用是如此之广泛,以至于它们都有些显而易见了。
1. 服务无关
服务无关实现对多种业务通用的逻辑。将服务无关的逻辑分离成离散的服务以方便服务的重用和整合。
原则:复用,服务整合
2. 服务无关的声明
服务无关的服务应该显式声明它们是服务无关的。这样对于后续的设计者和架构者来说能够清楚哪些服务是被设计用来进行重复使用的。
原则:复用,服务整合
3. 服务无关的事务
服务无关的服务可以被封装到具备能够回退所有行为和改变的回滚特性的原子性的事务中。这些由事务管理的服务可以在组件层( 译者注:SOA 系统总体划分的三个层次:组件层、系统层、集成层)进行实现,并被多个服务进行复用。
原则:服务无状态
4. 企业服务总线(ESB)
ESB 在消费者和服务之间扮演着一个消息代理的角色。ESB 能够进行消息传输、路由以及通过不同的通信协议连接到各个应用。
原则:高内聚低耦合
5. 服务门面
服务门面处于服务和契约之间。它消除了服务及其契约之间的紧密的耦合性。这样做的目的是在更换契约的时候对服务的更改程度能够降到最低。一个服务可以拥有多个服务门面以支持多个契约。
原则:松耦合
6. 服务回调
服务要求它的消费者通过异步的方式对其进行调用。如果消费者需要一个响应,它将提供一个回调地址。在服务处理消费者的请求到了某个阶段的时候,它将对消费者进行消息响应。这种办法大大释放了服务器的资源,尤其是服务将要进行长时间执行的场景。
原则:松耦合
7. 多个服务契约
一个服务可能会同时支持多个契约。这样做可以支持向后兼容(这样当改变一个服务的时候,所有的消费者不必随着进行更新)。这样做还能够为不同的目的来为同一服务提供不同的视图(也达到了重用的目的)。
原则:复用,松耦合
8. 认证代理
认证代理为消费者认证承担责任。消费者通过使用 token 来对服务进行访问。
9. 消息来源认证
通过数字证书来对客户端进行认证。
原则:服务整合
10. 消息过滤
在对消息进行处理之前先过滤掉有害数据。
原则:标准服务契约
原文链接:10 Soa Design Patterns Every Architect Should Know,发布日期:2010 年 9 月 7 日。
作者简介:Anna Mar 是一名拥有 18 年以上金融领域经验的首席架构师。