红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

访谈及书摘: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:053769
用户头像

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

关注

评论

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

学习编程是最好的复利方式

FunTester

FunTester

NFT游戏NFT交易系统开发技术

薇電13242772558

NFT

网络编程入门从未如此简单(三):什么是IPv6?漫画式图文,一篇即懂!

JackJiang

网络编程 ipv6 ipv4 即时通讯IM

长治测评机构公司有几家?是正规的吗?

行云管家

网络安全 等保 等保测评

2.7万只!当前及未来仍将是量化交易的黄金期

非凸科技

rust 招聘 机器学习算法 算法交易

大数据培训Flink 源码解析Async IO

@零度

flink 大数据开发

espnet中的transformer和LSTM语言模型对比实验

华为云开发者联盟

nlp Transformer espnet LSTM语言模型 aishell

昇思MindSpore行至2022,开源社区成就生态共赢

科技热闻

昇思MindSpore行至2022,开源社区成就生态共赢

科技热闻

java培训-JVM内存分配面试题分享

@零度

JVM JAVA开发

大数据自动管理,24 小时服务无间断,StarRocks 如何做到?

StarRocks

大数据 数据分析 StarRocks

从 OpenTSDB 到 TDengine,至数物联网平台技术改造之路

TDengine

数据库 tdengine 物联网

学生管理系统毕业架构设计

天琪实刚亮

「架构实战营」

机器使用成本下降 50%,TDengine 在同程旅行基础监控中的实践

TDengine

数据库 tdengine

TiDB 在携程 | 实时标签处理平台优化实践

PingCAP

华为公布终端云最新数据:终端全球月活用户超过7.3亿

叶落便知秋

华为

亚马逊云科技创新大会 | 云基础架构

亚马逊云科技 (Amazon Web Services)

架构

《LeetCode刷题报告》题解内容 Ⅲ

謓泽

3月月更

减少计算、简化架构——TDengine在灌区信息化平台中的应用

TDengine

数据库 tdengine 物联网

视觉Transformer中的输入可视化方法

百度Geek说

后端

星河标杆案例 | 洞见科技与智慧齐鲁「基于隐私计算的省级公共数据开放平台建设」实践

洞见科技

隐私计算 数据流通

固定资产管理系统的主要功能和优点

低代码小观

低代码 企业管理 资产管理 企业管理系统 CRM系统

100行代码实现HarmonyOS“画图”应用,eTS开发走起!

HarmonyOS开发者

HarmonyOS ETS ArKUI 3.0

一个服务器轻松存储上亿数据,TDengine 在北京智能建筑边缘存储的应用

TDengine

数据库 tdengine 物联网

如何判断线程池已经执行完所有任务了?

CRMEB

云效流水线 Flow 是什么?为什么选择云效「Flow」

阿里云云效

阿里云 云原生 持续交付 研发 云效流水线 Flow

云效持续交付流水线,免费还好用!

阿里云云效

云计算 阿里云 持续集成 持续交付 持续交付流水线

web前端培训-MySQL的索引下推解析

@零度

MySQL 前端开发

生产环境频繁内存溢出,原来就是因为这个“String类”

华为云开发者联盟

jdk JVM 内存 字符串 String类

得物技术登录组件重构

得物技术

重构 用户增长 增长 组件 用户登录

传统数据库改造难?华为云GaussDB“五心”解决

华为云开发者联盟

数据库 数字化转型 GaussDB 云数据库 华为云数据库

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