阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

访谈及书摘:Thomas Erl 的《SOA 设计模式》

  • 2009-04-30
  • 本文字数:3285 字

    阅读完需:约 11 分钟

3 月,InfoQ 发布了 Thomas Erl 的新书(《SOA 设计模式》)的摘录(~30MB PDF),并借此机会采访了作者。话题涉及到模式目录(patterns catalog)的作用,面向服务、SOA 和 Web 服务三者之间的区别,以及 SOA 世界的现状。

InfoQ:在您看来,服务目录给 SOA 社区带来的主要好处是什么?

Thomas Erl (TE):对于有兴趣了解某个已知设计问题曾经是如何被成功解决的人来说,设计模式非常具有参考价值。服务目录包含的设计解决方案集合是专门针对实现面向服务的。

模式社区在给设计模式分门别类方面已经做得相当不错,我也有幸从先前发布模式的作者们那里得到了帮助。

InfoQ:您认为,您的“SOA 模式”在多大程度上等价于“Web 服务模式”?

TE:好的,首先我要声明,它们不是“我的”SOA 模式。该目录是社区共同努力的结晶,其规模相当的大:经过了三年时间,涉及数十名贡献者以及超过 200 号的审阅者。以前,关于 SOA 和面向服务的书籍也曾得益于大量的社区参与和验证,但都未曾达到这样的规模。

至于你的问题,该目录中的模式都有一个共同的上下文,即面向服务。每个模式都试图回答:“对于该问题,哪个推荐设计解决方案是能够帮助实现面向服务的?”,而不是:“用这种特殊技术如何解决这个问题?”

换句话说,这些模式并不等价于或特定于 Web 服务或其他特定技术。另一方面,确实有部分模式代表了受成功技术进步所启发或影响的设计方案。这些进步有些来自 Web 服务和基于 Web 的技术,而其他则来自 EAI 框架和中间件、企业服务总线平台、网格计算、事务管理系统、消息队列、事件驱动的消息传递框架、代理和仲裁技术等。我们还曾计划包含 20 页的内容来讨论一组受 REST 启发的 SOA 设计模式,但这些模式在复查阶段都被砍掉了,而被放在了 soapatterns.org 上的候选列表中。它们目前还在进一步的发展,以备讨论 REST 和 SOA 的书籍使用。

令某些人感到困惑的是,书中给出的很多示例都是使用 Web 服务技术来演示模式应用的。由于本书是 Prentice Hall 出版社的面向服务计算系列丛书的一部分,我们很早就决定:大多数示例都采用供应商中立的技术。出于这个目的,在 Web 服务领域中选择可用的行业标准是件很自然的事情。为了保持抽象内容和基于 Web 服务的示例相分离,本书明确区分了“服务”和“Web 服务”。本系列中即将出版的其他书籍将给出使用其他技术来应用模式的例子。因此,你可以把本书视为一个大型出版计划中的第一步,后续还有一系列的书要出版。让我再次重申,这种情况只是个案。大部分模式并不是受技术进步启发而得到的,相反它们代表了受从业者启发、已被证明有效的设计技术。

InfoQ:您认为它们可以脱离 SOA 环境使用么?

TE:当然,毫无问题,来自其他目录的模式同样可以解决其他 SOA 相关的设计问题。与之类似,SOA 相关的任何技术(包括 Web 服务)也能够在非 SOA 环境下使用。这个目录的作用是为了提供对实现面向服务有帮助作用的设计解决方案集合。因此,如果你打算将一个模式用于其他目的,一个好的想法就是记住:在这个目录中,模式仅仅记录了跟该特殊上下文相关的东西(译注:即模式本身的内涵远远不止于此)。

InfoQ:您对 SOA 现状的总体看法是什么?您认为哪些方面我们已经有了非常不错的认识,哪些方面还有待新的研究?

TE:我很高兴看到越来越多的人在讨论“面向服务”,它才是任何被合法贴上“SOA”标签的东西的关键所在。我认为,随着面向服务范式越来越为主流 IT 所接受,对于组织如何取得历来都被认为是 SOA 所带来的战略收益,将会得到更广泛地理解。关注范式还有助于克服歧义和误解,正是它们导致了对 SOA 采纳情况的失望,因为它们试图在不实际应用面向服务的情况下实施 SOA。至于我们需要在哪些方面进行新的研究,我可以给你拿出一份相当长的愿望清单,范围从服务建模符号和复杂服务组合,到治理和组织变革实践。

InfoQ:这是您第二次明确区别“SOA”和“面向服务”。您能大致总结一下您对面向服务的定义以及它跟 SOA 的区别么?

TE:尽管 SOA 一词经常被厂商和媒体拿来指代任何跟服务沾边的东西,但一旦你处于实际的交付生命周期中,你就需要清楚地认识到“是什么使一个技术架构成为面向服务的?”。正是这导致了划清面向服务和面向服务技术架构之间关系和区别的需求。这里有一种方法可以把事情弄明白:

面向服务是一种范式,它形成了构建软件程序的方法基础,以便使它们共同帮助实现某个特定的目标状态。

这个目标状态由一组跟面向服务计算相关的战略目标描述。面向服务的应用在某种意义上导致了被认为是面向服务逻辑单元(它们被称为服务)的软件程序的产生。

面向服务的技术架构,在支持服务及由一个或多个服务构成的解决方案(它们被称为面向服务的解决方案)和促进面向服务的方面有独特的特点。

因此,“简明”的回答就是:面向服务是一种特殊的范式,你可以用它来实现某种特定的目标状态;如果一个技术架构拥有支持应用这个范式必需的全部特性,那这个技术架构就可被认为是面向服务的。

我明白这是一个相当抽象的定义,但在进一步说明相关问题(如“面向服务实现的目标状态是什么?”,“面向服务计算的战略目标是什么?”,“面向服务 范式包含了哪些内容?”,“面向服务技术架构的必需特性是什么?”等)之前,本系列迄今为止我们所写的大部分内容都一直在致力于回答这些问题。

我认为,如果你刚刚接触面向服务,那么理解上述的目标状态(以及实现该状态的必需条件)是必需的,因为正是它来帮助你判断面向服务是否支持你的业务 目标和优先级,以及在实施它的时候所进行的投资程度。只要你选择采用它,那么理解面向服务本身就成为了成功实现这个目标状态的核心要求之一。

InfoQ:您如何看待模式目录在 SOA 实施中所起的作用?

TE:一种看待模式的方式是把它们当作经验丰富的从业者的一些建议,只不过这些建议碰巧出现在了正式的出版物中。

因此,要是你正在实施项目并发现自己正面对一些特别的挑战,模式目录会是一个有用的资源。或许你会发现问题的确切答案,又或你会发现某些相关技术和 实践会启发你自己找到那个唯一的解决方案。你甚至能够通过将特定模式组合成一个应用序列来组装一个设计解决方案。另一方面,你正在处理的问题或许还没有被 记录成模式;或者该问题已被某个模式解决,但你却不喜欢建议的解决方案(所谓尽信书不如无书,你不一定非得按模式来)。

模式发挥作用的另一个情况是在你正规划一个 SOA 项目并希望更好地理解他人已经解决的常规挑战的时候。其实,某些模式确实能帮助你定义实施计划。例 如,领域目录(Domain Inventory)就是通过建议将实施工作分割或阶段化成可管理、独立的领域方式,为大型 SOA 项目提供一种通用解决方案的模式。

我还发现模式是一个非常有用的学习工具,特别是在学习那些更基础知识的时候。由于这些模式是专门针对于实 现面向服务的,通过研究它们建议的设计解决方案,你可以真正深入理解面向服务范式的独特特性。这种层次的理解不仅可以揭示 SOA 模式解决问题的方式,还揭 示了它们使用该方法解决问题的原因。

InfoQ: 非常感谢您接受采访!

TE: 谢谢。在访问的最后,我期望人们能访问 soapatterns.org 站点,并能将经验贡献出来。该站点允许你提交和审阅模式候选,这样它们就能在社区的参与下得到进一步发展,从而使 SOA 模式目录与时俱进。

请下载 Thomas Erl 的《SOA 设计模式》一书的样章,该书已由David Chappell,Jason Hogg,Anish Karmarkar,Mark Little,David Orchard,Satadru Roy,Thomas Rischbeck,Arnaud Simon,Clemens Utschig,Dennis Wisnosky 等共同编著完成。

版权声明:该样章摘自由Thomas Erl 等人共同编著的《SOA 设计模式》,该书已由Prentice Hall 于2009 年1 月出版,并且是Thomas Erl 主编的Prentice Hall 出版社面向服务计算系列丛书的一部分,它的ISBN 是0136135161。欲知该书详情和所有模式目录,请访问 www.soapatterns.org

查看英文原文: Interview and Book Excerpt: Thomas Erl’s SOA Design Patterns


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2009-04-30 00:053793
用户头像

发布了 255 篇内容, 共 54.4 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

探索Web前端技术的新趋势与发展

不在线第一只蜗牛

互联网 前端 Web 前端技术

2023-12-27:用go语言,店铺数量n,编号1~n, 人的数量m,编号1~m, 每个人有自己投票的店铺p,和改投1号店的报价x。 返回想让1号店铺成为人气最高的店,至少花多少钱? 1 <= p,

福大大架构师每日一题

福大大架构师每日一题

软件测试/测试开发|web基础知识介绍

霍格沃兹测试开发学社

海外云手机——跨境电商必备神器

Ogcloud

云服务 跨境电商

PDF Expert for Mac(PDF编辑阅读转换器)v3.8.2中文激活版

iMac小白

「悦数图数据库」获 2023 年度 IT168 创新解决方案奖

悦数图数据库

图数据库 图数据库实战

软件测试/测试开发|关于bug,你需要了解的,全在这里了

霍格沃兹测试开发学社

云图说|有了这2招必杀技,你的主机“身陷重围”都不怕!

华为云开发者联盟

云计算 华为云 主机安全 华为云开发者联盟 华为云HSS

程序员如何高效学习技术?

伤感汤姆布利柏

开源 程序员 低代码 Java技术提升程序员

案例分析:如何在企业飞速发展、研发团队快速增长中,快速解决研发管理和效率问题?

PingCode

产品经理 研发管理

什么是制造业的数字化车间

万界星空科技

数字化转型 数字化 MES系统 云mes 万界星空科技mes

AdGuard for Mac(广告拦截软件) 2.9.2 (1234) 中文激活版

mac

苹果mac Windows软件 AdGuard 广告拦截软件

使用 extract + TextMapAdapter 实现了自定义 traceId

观测云

Trace 链路

平均性能提升50%以上,天翼云第八代升级款弹性云主机重磅上线

编程猫

Premiere Pro 2024 for Mac(PR 2024视频编辑软件)v24.1中文激活版

iMac小白

Magnet for mac(macOS窗口管理软件)v2.14.0中文免激活版

iMac小白

DBeaverEE for Mac(数据库管理)v23.3.1企业激活版

iMac小白

软件测试/测试开发|Linux三剑客之——awk命令详解

霍格沃兹测试开发学社

软件测试/测试开发|一篇文章带你入门HTML

霍格沃兹测试开发学社

Charles for Mac(HTTP协议抓包工具)v5.0b12注册激活版

iMac小白

万界星空科技数字化车间应用场景

万界星空科技

数字化 工业互联网 智能工厂 mes 数字化车间

混合专家模型 (MoE) 详解

不在线第一只蜗牛

前端 低代码 开发 框架

Parallels Desktop 19 for Mac v19.1.0一键激活版

iMac小白

软件测试/测试开发丨接口学习笔记-session、cookie、token的区别

测试人

软件测试 测试开发

AI 领域代币市场趋势:探索最热门投资领域的前沿动向

Footprint Analytics

区块链 AI

Angular 控制流与延迟视图揭秘

PingCode

研发

面试官:说说MVCC的执行原理?

王磊

Java 面试

IBM SPSS Statistics 27 for Mac(spss数据统计分析软件)v27.0.1中文版

iMac小白

提升团队协作效率——SmartSVN for Mac的核心价值

iMac小白

Affinity Publisher for mac(桌面排版神软件) 1.10.8完美激活版

mac

苹果mac Windows软件 Affinity Publisher 页面布局软件

为什么要运营海外社媒?海外云手机能发挥什么作用?

Ogcloud

短视频 社交媒体

访谈及书摘:Thomas Erl的《SOA设计模式》_SOA_Stefan Tilkov_InfoQ精选文章