曾经看到一篇题为“Take the technology out of SOA, and see what you get”的文章,从标题上就可以大概猜到文章是试图撇开技术因素来考量SOA的概念。读完全文,非常认同文章的观点——SOA只不过是一种设计模式而已。作为一种设计模式,除了应用在信息系统中,也同样适用在其他系统的设计中。
 
文章中以麦当劳的服务系统举例,称之为“以人力为基础的面向服务的架构(a human-based SOA)”,非常有意思。大家都知道在国外,你可以驾着车享受麦当劳的服务。不用离开车,首先你开到一个卡通人前对对讲机说出你要几号套餐,然后向前开到下一个窗口付款并拿你的食物。这个简单的系统基本上包含了两个服务:接受订单服务和履行订单服务,但它是完全符合SOA要求的。试想如果麦当劳发现因为周围的噪声干扰严重影响对讲机的工作,或者想提供多语种的订单服务,她能够容易的替换原有的接受订单服务,例如:建立一个电话声讯中心(Call Center),甚至选择把这个服务外包出去。因为遵循SOA的系统中,服务提供者(Service Provider)的变化,不会影响其业务本身。在麦当劳的系统中,没有涉及信息技术,但同样做到了面向服务的架构。
 
从这个有趣的例子里,还能联想到其他的一些东西:
 
麦当劳的系统可以看作是由两个服务组成的一个复合应用。SOA设计赋予它重组的灵活性。麦当劳可以随心所欲的替换服务来提升效率,降低成本,或者增加客户体验。例如:选择外包接受订单服务以获得规模效益,或者是提供额外的客户体验—多语种服务。这样就比较容易理解,SOA对企业的信息系统的好处,这个好处在于业务流程的快速重组,而不是采用了最前沿的新技术。
 
既然SOA是从流程设计的角度去理解的,那么它的理念的主要听众不应该是信息技术人员而是业务人员。也就是为什么SAP一直在推动业务流程专家社区(Business Process Expert, BPX)的发展。因为成为业务流程专家的企业信息系统关键用户才是设计和创新的主体力量。
另外,在这个例子里,也可以体会到标准很重要。标准化是麦当劳快餐的基础,同样在她的服务系统中的标准化(服务的接口,模块化设计),都是实现SOA不可或缺的内容,不仅是在IT系统之中来考察这个问题是这样。
 
SOA的概念被宣传衍生到各种技术平台技术手段中,其实非常象当初的面对对象概念。面对对象的概念提出来的时候,主要是作为在软件系统设计中对客观世界进行抽象的新方法。然而很快IT业界几乎所有的东西都赶时髦地贴上了“OO”的标签。恐怕Gartner在1996年适时地提出了面向服务架构的思想的时候,也未曾料想它被如此运用。
 
那么技术对SOA是什么角色?应该说,技术让SOA的实际运用成为可能(Enabler)。譬如:面对对象的方法也可以用传统的编程语言去做实现,但一直等到支持面对对象编程语言的推出才广泛的被软件工业采用。具备了各种模块化组件技术和互联网的长足发展,SOA的在业务中才具备了实用性。这也是为什么SOA概念提出10年后才被炒作的沸沸扬扬。
 
把技术因素从SOA中剔除,SOA只不过是一种设计模式而已。只有本着这样的认识去运用SOA,才能够真正掌握其精髓,而不是淹没在技术细节的大海里。

SOA也是一种设计模式相关推荐

  1. SOA只不过是一种设计模式而已

    在 ZDNet 上看到一篇题为" Take the technology out of SOA, and see what you get "的文章,从标题上就可以大概猜到文章是试 ...

  2. Python七大原则,24种设计模式

    七大设计原则: 1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:一个类负责一项职责.  2.里氏替换原则[LISKOV SUBSTITUTION PRINCIPLE ...

  3. JS中的7种设计模式

    第九章Refactoring to OOP Patterns 重构为OOP模式 7种设计模式: 1,模版方法模式(template method) 2,策略模式(strategy) 3,状态模式(st ...

  4. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

  5. Python培训常识:Python面试中常被问到的几种设计模式要知道

    学习Python技术大家都是为了日后能够找到适合自己的工作岗位,那么除了要学习好Python技术外,对于面试环节的问题也要有所了解,本期小编为大家介绍的Python培训教程就算关于Python面试中常 ...

  6. 9种设计模式在Spring中的运用,一定要非常熟练!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:iCoding91 https://blog.csdn.ne ...

  7. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. 封装成vla函数_不知道怎么封装代码?看看这几种设计模式吧!

    为什么要封装代码? 我们经常听说:"写代码要有良好的封装,要高内聚,低耦合".那怎样才算良好的封装,我们为什么要封装呢?其实封装有这样几个好处: 封装好的代码,内部变量不会污染外部 ...

  9. java 工厂模式的写法_Java23种设计模式之抽象工厂模式

    概述 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...

最新文章

  1. 云开发使用 got 的 get/post 传参请求示例代码
  2. MySQL学习笔记之启动停止与登录,显示相关信息
  3. linux c 客户端与 golang 服务端通信(网络字节序)
  4. js时断时续————动态参数传递
  5. 用户强烈反对产品改动,如何应对?
  6. Java连接Memcached进行CRUD
  7. C语言指令启动mcs51计时器是,嵌入式C语言程序设计:使用MCS-51
  8. 万字长文助你上手软件领域驱动设计 DDD
  9. 如何动态的向数组中插入键值对_在Java中实现的一个简单“HashMap”
  10. 8086算术移位指令SAL和SAR
  11. 2021年中国低密度PET泡沫市场趋势报告、技术动态创新及2027年市场预测
  12. 计算机u盘被禁用怎么办,u盘禁用了怎么恢复,u盘一启用马上就被禁用
  13. 深入理解Android之Java Security第一部分
  14. Ant Design Pro -- 02项目结构@20210331
  15. 移动宽带客户测试软件,华为移动宽带终端检测工具(Mobile Doctor)
  16. hadoop之MapReduce学习教程
  17. 【报错记录】解决华擎J3455-ITX不插显示器无法开机的问题
  18. 仿百度网盘的一款轻量级微服务架构网盘系统
  19. 计算机心理部的活动记录表,《计算机系12月心理活动策划书【荐】.doc》-支持高清全文免费浏览-max文档...
  20. jsr303常用注解

热门文章

  1. CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin,mysql8.0.1/mysql5.7.22+centos7,windows mysql安装、配置...
  2. 本地化,将cancel替换成取消
  3. HDU 1251(trie树)
  4. 家长会:我的发言稿,女儿的信
  5. 计算机山西特岗考试题库,山西特岗历年试题
  6. Linux Kernel TCP/IP Stack — L2 Layer — Linux Bridge(虚拟网桥)
  7. 示波器输入阻抗匹配问题
  8. 韦东山 文件系统映像,mount挂接文件系统
  9. 【VMware vSAN 6.6】5.1.基于存储策略的管理:vSAN硬件服务器解决方案
  10. ORACLE分区表详解