这 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 年以上金融领域经验的首席架构师。

每位架构师都应该熟知的 10 个 SOA 设计模式的更多相关文章

  1. WEB架构师成长之路-架构师都要懂哪些知识 转

    Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求. 总结起来大概有下面几点技能要求: 一. 架构师有 ...

  2. WEB架构师成长之路之三-架构师都要懂哪些知识

    Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求. 总结起来大概有下面几点技能要求: 一. 架构师有 ...

  3. 架构师都该懂的 CAP 定理

    面对可能出现的网络延迟,不可预估的请求流量等情况,设计一个分布式系统,我们通常围绕系统高可用,数据一致性的目标去规划和实现,想要完全实现这个目标,却并非易事.由此,分布式系统领域诞生了一个基本定理,即 ...

  4. php架构师都要会什么

    架构师的成长离不开踩坑,不断试验各种方案,各种踩坑,从小坑到大坑,逐渐归纳.另外就是多学习多交流,兼收并蓄,不用特别在意细节,观其大略,了解常见的各种东西的核心价值与短板所在.一个程序和计算系统软件体 ...

  5. 一文读懂架构师都不知道的isinstance检查机制

    起步 通过内建方法 isinstance(object, classinfo) 可以判断一个对象是否是某个类的实例.但你是否想过关于鸭子协议的对象是如何进行判断的呢? 比如 list 类的父类是继 o ...

  6. Java高级架构师(一)第10节:Spring+Mybatis实现DAO

    maven配置memcached.jar 由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository. ...

  7. 架构师修练 I - 超级代码控

    可实现的是架构,空谈是概念 So don't tell me the concepts show me the code!  “不懂编码的架构师不是好架构师” 好架构师都是超级代码控.   代码是最好 ...

  8. IT架构师介绍-软件架构设计学习第一天(非原创)

    文章大纲 一.架构师定义二.架构师分类与具备能力三.研发人员发展的技术路线四.架构师知识体系五.参考文章   一.架构师定义   什么是架构师,这个聊架构话题时永恒的问题.每个公司对架构师的定位也有所 ...

  9. .NET架构师知识普及

    今天看到一篇漫画,[3年.NET开发应聘大厂惨遭淘汰,如何翻身打脸面试官?],好多问题,一下子还真的回答不了,这里对这些问题进行了整理,增加下脑容量,哈哈.俗话说不想当将军的士兵不是好士兵,不想当架构 ...

随机推荐

  1. 【MST】P2323 [HNOI2006]公路修建问题

    Description 给定 \(n\) 个点 \(m - 1\) 条无向边,每条边有两种边权,贵一点的和便宜一点的.要求至少选择 \(k\) 条贵边使得图联通且花费最大的边权值最小. Input 第 ...

  2. activiti教程之示例项目activiti-explorer运行_百度经验

    https://jingyan.baidu.com/article/4e5b3e19107ad091901e249e.html

  3. Android Studio 安装在Windows10中的陷阱

    操作系统:Windows 10 Pro CPU:AMD IDE:Android Studio 2.0 JDK:8.0 安装完AS(Android Studio)之后,运行AS发现无法启动模拟器,提示“ ...

  4. Block的copy时机

    什么时候栈上的Block会复制到堆上呢? 1.调用Block的copy实例方法 2.Block作为函数返回值返回时 3.将Block赋值给附有__strong修饰符id类型的类或Block类型成员变量 ...

  5. [SDOI2016 Round1] 数字配对

    COGS 2221. [SDOI2016 Round1] 数字配对 http://www.cogs.pro/cogs/problem/problem.php?pid=2221 ★★★   输入文件:m ...

  6. 动态规划:树形DP-景点中心(树的带权重心)

    话说宁波市的中小学生在镇海中学参加计算机程序设计比赛,比赛之余,他们在镇海中学的各个景点参观.镇海中学共有n个景点,每个景点均有若干学生正在参 观.这n个景点以自然数1至n编号,每两个景点的编号均不同 ...

  7. jQuery 动态标签生成插件

    前言: 最近对js的插件封装特别感兴趣,无耐就目前的技术想做到js的完全封装,还是有一定困难,就基于jQuery封装了一个小的插件,而且是基于对象级开发的,不是添加全局方法.高深的语法几乎没有,就有一 ...

  8. 为什么C++空类的实例大小为1

    [为什么C++空类的实例大小为1] 每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.所以大小为1. 参考 ...

  9. [整理]C语言中的a,&a和&a[0]

    #include<stdio.h> int main(void) { int a[]={1,2,3}; printf("%0X\n",a); // a的类型原本是int ...

  10. 20155306 2016-2017-2 《Java程序设计》第七周学习总结

    20155306 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 三种时间: 格林威治标准时间(GMT)的正午是太阳抵达天空最高点之时, ...