这 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. python之旅:面向对象的程序设计

    一 面向对象的程序设计的由来 面向对象设计的由来见概述:http://www.cnblogs.com/moyand/p/8784210.html 二 什么是面向对象的程序设计及为什么要有它 面向过程的 ...

  2. CMake 案例

    单个源文件 # CMake 最低版本号要求 cmake_minimum_required (VERSION 3.11) # 项目信息 project (Demo) # 指定生成目标 add_execu ...

  3. SpringBoot(十三):springboot 小技巧

    原文出处: 纯洁的微笑 一些springboot小技巧.小知识点. 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JD ...

  4. JVM小结--类文件结构

    字节码是构成Java平台无关性的基石.实现语言无关性的基础是虚拟机和字节码存储格式. Java语言中的各种变量.关键字和运算符的语义最终是由多条字节码命令组成,因此字节码命令所能提供的语义描述能力肯定 ...

  5. 转:UINavigationBar返回上一级出现nested pop animation can result in corrupted navigation bar

    [self.navigationController popViewControllerAnimated:NO]; 出现上面的错误是因为pop的时候要确保先让本页面加载完成,即如果在viewDidLo ...

  6. 支持iis高并发

    支持高并发的IIS Web服务器常用设置   适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0 适用的Windows版本:Windows Server 2008, Windows ...

  7. 2017 清北济南考前刷题Day 5 afternoon

    期望得分:100+100+30=230 实际得分:0+0+0=30 T1 直接模拟 #include<cstdio> #include<iostream> using name ...

  8. 你需要了解 Windows Phone 8.1 的11件事

    微软已经发布了其新一代手机操作系统 Windows Phone 8.1,拥有一些新的特性.从本质上来说,微软此次的大修让 Windows Phone 更接近 Android 和 iOS,对于使用体验的 ...

  9. 【转】C#中PrintDocument类详解

    PrintDocument组件是用于完成打印的类,其常用属性.方法和事件如下: 属性DocumentName:字符串类型,记录打印文档时显示的文档名(例如,在打印状态对话框或打印机队列中显示). 方法 ...

  10. Linux基础-vim编辑器

    使用vi编辑器编辑文件/1.txt进入编辑模式写入内容“hello world” 命令行模式输入i,进入编辑模式 写入HelloWorld,按ESC进入命令行模式,输入:进入扩展模式输入wq保存退出 ...