《SOA与REST:用REST构建企业级SOA解决方案》目录—导读

简介: 本书的作者们对于什么是REST,什么不是REST具有非常清晰的理解,所以,本书给你带来的知识,可以帮助你区分哪些是真正的RESTful,哪些又只是自我标榜。你将学习SOA与REST的基础知识,还会了解若干结合了SOA与REST的设计模式。你还会学到如何构建服务及服务消费者。


6f2bf3e01b314e59e7b3e9f51362358c15fcaeda

献词
SOA与REST:用REST构建企业级SOA解决方案
谨以此书献给ChristophSchittko,他毫无顾忌的审阅评注使我们在本书书稿已经提交印刷之后仍然决定改变内容结构,而后续的变化极大地提升了书稿的质量。

——Thomas Erl

献给亲爱的妻子Michelle,献给我的父母Rob和Sue,献给我的孩子Genevieve和Matthew。感谢你们多年来的支持与鼓励!

——Benjamin Carlyle

献给我的家人及我的Esperanza。

——Cesare Pautasso

向父母的牺牲与支持致敬!

——Raj Balasubramanian

对本书的赞誉
SOA与REST:用REST构建企业级SOA解决方案
“本书通过具体且实用的方式,阐释了SOA和REST领域之间的联系,简明地将其运用到日常遇到的架构挑战上。太棒了!”

——Ryan Frazier,技术战略师,微软公司

“SOA可以通过许多不同的方法实现,而REST则是潜在的实现框架中最闪亮的新方法。本书向架构师和开发人员介绍了实现RESTful SOA所需的知识,而最重要的是,它告诉人们一种通过REST实现SOA的风格:其核心是设计服务生态系统,在其中向客户提供简单的使用资源的方式,并通过服务将资源连接起来。本书无疑将有助于使SOA从Web架构的主要价值主张(分散、松耦合、连通性、自描述服务、独立于实现的服务接口)中获益。”

——Erik Wilde博士,架构师,EMC公司

“这是一部杰作,它将REST原则优雅地运用到该丛书中的工业标准SOA框架上。书中为实践者提供了有用的指导,并且在形式和精神上都与Roy Fielding论文中定义的REST约束保持一致。有关RESTful契约设计的章节使本书物有所值。本书对于任何开发REST服务的人来说都是必读的。”

——Dave Slotnick,企业架构师,Rackspace Hosting

“面向服务模式的精彩大作,它将有效地解决现实世界里的问题。REST观点和原则将完全地覆盖现代Web 2.0风格的方法。强烈推荐。”

——Sid Sanyal,IT架构师,苏黎世金融服务公司

“REST不仅仅是接口的另一种实现方法。本书为我们展示了服务组合生态系统如何随着服务组合架构设计的新机遇而变化。对于任何正在考虑REST风格服务构建应用程序架构的认真的IT架构师来说,这都是一本全面指南和必读之作。”

——Roger Stoffers,解决方案架构师,惠普公司

“面向服务和REST这两种架构风格都是现代应用程序和云计算的基石。它们都致力于交付可伸缩的、可互操作的解决方案,但是它们的不同根基使得它们并不能天然地互相配合。本书阐述了如何在企业环境中使二者协调工作。书中讨论了一组设计流程,它们使服务集合在满足SOA目标的同时又符合现有的REST约束。此外,为使REST风格满足企业级需求,它还务实地在必要之处放松了约束。”

——Christoph Schittko,云战略总监,微软公司

“这是一本鼓舞人心的书,它为下一代基于REST的面向服务的系统的设计与开发带来了深刻见解。本书务实地阐述了SOA与REST的融合,解决了工作中常见的实际问题。对于软件设计师、架构师和顾问来说,是必要的‘现代服务实现的工具’和‘强大的知识体系’。”

——Pethuru Raj博士,企业架构师顾问,Wipro顾问服务公司

“Thomas Erl的服务技术丛书一贯地使用简单的例子说明复杂的概念。在该丛书中的最新著作《SOA与REST》中,作者通过常见的SOA语言来讨论REST。《SOA与REST》对企业架构师和开发人员来说都是极好的资源!”

——Kevin P. Davis,博士,软件架构师

“不同于其他相似内容的书籍,《SOA与REST》一书中的叙述做到了完善、易读,包含了现实世界的案例研究,可同时满足开发人员和分析师的需要。对于SOA实践者及任何计划启动SOA项目的执行者来说,这都是不可或缺的资料。”

——Theodore T. Morrison,认证的SOA分析师,CSM,Geocent,LLC

“任何将REST应用程序构建为面向服务架构的IT架构师或软件工程师,要想深入理解其中原则、模式和实现概念的话,就都需要读一读这本书。它不仅包含了基本的话题,还探讨了REST与各种特定的SOA原则及模式之间的关系。”

——Sanjay Singh,认证的SOA分析师,开发经理,NorthgateArinso

“一本面向企业架构师、分析师、开发人员的权威的上乘参考书。本书不仅展示了REST的优雅、简单性和通用性,还使我们清楚地理解了REST是如何增强SOA和面向服务的,REST如何能够影响SOA设计目标,我们如何来设计和开发REST服务,我们如何解决REST集成到面向服务时所面临的独特挑战。任何以REST来构建面向服务架构的人,想要掌握这门技术,都有必要阅读本书。”

——Philip Wik,MSS Technology

“这是一本理解如何在面向服务架构中采用REST的基础而全面的书。对于任何对面向服务感兴趣的实践者来说,书中提供的许多示例和模式将是非常宝贵的资源。”

——Gustavo Alonso,计算机科学系,苏黎世联邦理工学院

“SOA和REST是分布式计算中两种非常重要的架构风格。SOA成功地在大多数企业中得到采用,而研究者和工业用户越来越多地关注REST风格。《SOA与REST》一书介绍了一种新的架构风格,巧妙地结合了SOA和REST风格,清晰地揭示了两者的协同工作,通过REST来产生成功的企业SOA策略,以及对架构设计决策提出指导。本书是使用REST来设计和实现SOA架构的最佳实践的圣经。这是一本IT实践者和研究人员的必读书籍。”

——Longji Tang,联邦快递IT高级技术顾问,CSSE博士

“REST和SOA是过去十年间在软件工业中被误解最多的两个术语。然而REST架构风格加上现代RESTful框架实现,提供了可伸缩和可靠的SOA方式。本书涵盖了关于如何将REST原则应用到小型和大型SOA开发中的全面阐述。如果你已经熟悉REST并在考虑SOA,那么你需要本书。如果你还没有在你的SOA工作中考虑REST,那么本书同样适合你。它囊括了REST和SOA的概念,还包含了设计模式与使用的时机,本书是架构师和工程师的精彩指南和优秀工具。”

——Mark Little博士,JBoss首席技术官,红帽公司

“本书精彩地介绍了如何将SOA方法论与RESTful架构风格的服务结合起来。对于SOA架构师如何更好地理解将REST集成到面向服务架构流程的含义和要求,Thomas Erl及其合著者们提供了很大的帮助。”

——Gerald Beuchelt,MITRE

译者序
SOA与REST:用REST构建企业级SOA解决方案
如今,在企业级解决方案领域,SOA这一词汇已不再陌生。几十年来,为了打通不同时期使用不同技术建设的信息孤岛之间的连接,人们一直在改进软件工程方法,也尝试过很多不同的技术手段,比如点对点(P2P)的集成、基于消息的集成(Messaging)、企业应用集成(EAI)等,它们在各自的历史舞台上发挥了重要的作用。然而,直到面向服务思想和面向服务架构的诞生,这一问题才真正得到有效解决。

与SOA不同,REST是在互联网环境中成长起来的,根据Fielding博士的论文,REST是为了解决互联网规模的软件架构所面临的问题而诞生的。尤其,当REST与HTTP标准结合起来,通过RESTful Web服务本身的优势,如无状态性和幂等性,为提高系统的可伸缩性起到重要作用。REST以其简洁性、更低的资源占用,统一接口抽象、代理服务器支持、缓存服务器支持等诸多方面的优势深受众多架构师和开发者的喜爱。

作为两种优秀的架构风格,它们都不缺乏推崇者。自然地,二者之间的论战逐渐成了技术圈的热点话题。网络上关于 SOA与 REST的论战非常之多,但是,它们大多聚焦于二者之间的差异,有的SOA的拥护者称REST不适合企业级应用,而REST的拥护者则把对SOAP协议的抱怨转嫁到SOA的身上。

Thomas Erl站了出来。他说,两种架构风格的目标有诸多相同之处,即便在企业级解决方案中,SOA和REST也能够相得益彰,通过“战术性”的REST媒介实现“战略性”的SOA的战略目标。Thomas Erl是SOA领域的大师级人物,他在SOA方面的诸多著作,尤其是其“SOA系列著作”,为架构师和开发者们提供了丰富的理论知识和实践指引。

本书全面介绍了面向服务概念、REST约束及目标,并且针对企业应用所面临的问题提出了用REST来实现SOA的设计目标和架构原则。作者提出了在分析和建模过程中的注意事项,并启发出一些新的SOA设计模式。

作为本书的译者,我们为能够翻译这样一本优秀的著作而感到荣幸。尽管我们各自都有许多工作和事情要处理,但是我们尽量利用下班后和周末的时间,兢兢业业地翻译这本书,不敢有一丝疏忽和怠慢,生怕由于自己的失误而未能准确地表达作者们的原意。

我们从2012年9月开始翻译此书,翻译分工如下。

马国耀负责翻译第4、6、7、14、15、16章及附录E,这些章节的内容包括:SOA术语和概念,REST服务契约,REST与面向服务的关系,受REST启发的设计模式,REST服务版本控制,统一契约介绍,SOA设计模式概要等。
申健负责翻译第2、5、11、12、13章及部分附录,这些章节的内容包括:案例研究背景,REST约束与目标,REST服务组合,REST高级服务组合及案例研究等。
刘蕊负责翻译第1、3、8、9、10章及部分附录,这些章节的内容包括:内容导读,服务基础知识,主流SOA方法论及REST技术,REST服务的分析与建模,REST面向服务的设计等。
在翻译过程中,我们采用迭代方法,每人各翻译完一个章节之后就进行一次审校迭代。我们采取A审校B,B审校C,C审校A(或相反顺序)的方式进行审校,所有意见不一致的地方由定期会议仲裁解决。全书最后由马国耀进行统一修订和审校。

由于译者的能力水平有限,难免存在疏忽与差错,在此恳请读者见谅,并给予批评指正。

翻译是个痛苦而辛苦的过程,翻译《云计算与SOA》的经历让我感触很深。另外,由于自己工作上进入一个新的平台以及刚出生的女儿的缘故,根本没有太多空余时间来翻译。所以,我本不打算翻译这本书的。但是,在人民邮电出版社杨海玲女士的邀请和李锟先生的鼓励之下,我快速阅读完了本书,在此之后我就再无丝毫犹豫。因为,不将本书呈现给国内的读者和广大SOA从业者,我觉得是一个遗憾。于是,就有了连续一年翻译历程。在这个过程中,我结识了申健、刘蕊两位认真而专业的译者,这一年来的沟通与交流是难忘而深刻的,感谢你们。最后,感谢家人对我一贯的支持,特别感谢我的妻子和女儿,因为翻译这本书所用的时间正是原本应该用来陪伴你们的时间。

——马国耀

回首过去忙碌的一年,看到自己在企业内完成了手机银行解决方案的重要演进,辅导了更多的敏捷团队,在企业外结识了更多的朋友,锻炼了更多的技能,并在而立之年迈出了职业生涯中新的一步。同时,看到天津软件社区变得热闹起来,南京大学天津校友会愈发壮大,女儿的轮滑也练得有模有样了。最重要的,就是有幸与马国耀、刘蕊两位战友共同完成了这本书的翻译。三个人素未谋面,仅凭着互相信任和彼此认同工作在一起,每个人都投入了大量业余时间,字斟句酌,反复推敲。还记得每天下班后虽然已经很累,却仍在夜深人静时翻译几页;还记得每次迭代互相审校之后,即使事先邮件沟通过多次,大家还是会在Skype上讨论到深夜;还记得百会工作表中数百条待定意见逐一关掉后获得的满足感。当然,我们应该可以做得更好,比如在每次迭代后都尽快拿到出版社的反馈意见,尽早做出翻译风格的调整。无论如何,这是一段存在我深深的脑海里的难忘经历,因为能与志同道合的朋友共事的机会是奢侈的。我也从两位合作者的精神和专业知识中学到了很多,感谢有你们。另外,也要感谢家人的支持和照顾,使我能够安心地投入工作。

——申健

2012年对我而言是特殊的一年,在大洋彼岸开始了一段新的生活。因为怀孕,准备生老二,赋闲在家,怕自己跟技术脱节,作为一个SOA实践者,我对REST结合SOA这一论题很感兴趣,于是加入了这段长达一年的翻译历程。我同另外两位译者并不熟悉,与申健之前不认识,国耀虽然是以前的老同事,但也仅限于邮件打过交道。一开始我对这种远程合作的模式的想象是非常松散的。但是实际上,国耀很快把翻译的工作组织的井井有条,利用百会表格交互分工安排,词汇勘误;相互进行审校;使用Skype进行定期交流,讨论所有翻译中有争议的部分;利用REST技术QQ群与潜在读者进行相关技术讨论。这种工作模式让我在忙碌的家庭琐事之余感觉到自己是个有追求的IT Professional!终于,书籍翻译完成时,我家的Max呱呱坠地,定稿前,我刚好开始了在澳洲的第一份工作,有幸参与一个大型的SOA项目,而我也有机会将阅读本书过程中得到的新知识加以运用,尤其是服务的筛选,事务的处理等相关知识。感谢本书,充实了我在澳洲的第一年,让我认识了两位朋友,拓展了REST相关的SOA知识,这段翻译历程,将会成为我的一段珍贵的回忆。

——刘蕊


SOA与REST:用REST构建企业级SOA解决方案
2002年初我第一次听到REST时,我就坚信新兴的Web服务规范和标准即将带来的价值。起初,我只是对这一方法充满好奇,尤其“统一接口”的理念,但是很快我便得出结论,虽然REST很有吸引力,但是它却几乎无法适用于企业环境。

一两年之后,我便开始欣赏REST风格的优雅和简洁性了。而且,我还认为在某些场景下REST是更好的选择,虽然一些高级的场景仍然需要使用SOAP、WSDL和WS-*。又过了一年之后,我开始发现自己在大多数情况下都更倾向于REST风格的HTTP,而非SOAP风格的Web Service,并且我已经说服了自己,并决定自称为“REST盲从者”。我开始坚信,现在仍然坚信,遵守REST架构风格的约束不仅能使公共Web上的系统变得更好,而且还适用于各种企业环境。

今天,REST已经成为主流—连同它对别的技术所产生的正面及负面的影响。我们现在向人们介绍REST方法时是相当轻松的,即便在大企业里也不例外,人们不再对此不屑一顾了。此外,让我惊讶的是,很多时候人们甚至将其视为默认选择。

所以,REST社区应该感到高兴和满足,并对我们在公共Web上及企业内构建出各种优秀的系统开发及集成充满期待。但是,这里仍然存留着两个问题:一是,并非所有声称RESTful的架构都是名符其实的;二是,SOA常常被看成由WS-*风格的Web Service组成的架构,因此与REST不相容。

“REST”名称的误用
遵循REST原则,应用Web技术(如HTTP和URI),使用超媒体格式(如HTML),就能使系统变得可演进、动态且稳定,并且可以通过新的未预见的方式连接系统。可是,真正称作“RESTful”的构建系统或集成系统的方式需要一种全新的设计方法,它不同于大多数开发人员过去所使用的方法。若选择REST方法而非分布式对象、RPC或WS-*时,需要通过资源、媒体类型、超媒体及统一接口来表述整个接口域。你将发现,对这些概念理解得越深入,就越能轻松地坚持REST的内在约束,越容易挖掘REST的价值。

因为WSDL/SOAP/WS-*架构的一个根本设计决定是“传输独立性”,所以通过它们构建的系统很难成为RESTful的,几乎无人反对这一说法。但是,即便没有出现XML或SOAP,Web的底层理念也很容易遭到违反。互联网上充斥这样的例子:通过HTTP GET或POST实现的管道(Tunnel)方法调用,忽视缓存和超媒体,将构成URI的字符串当作开发用的API。使用JSON、HTTP和“简洁”的URI不一定意味着系统就是RESTful的。不要想当然地把任何宣称为“RESTful API”的东西都当作典范。

评判SOA
“SOA”这个标签已经被完全炒作殆尽了。在我看来,这主要由于很多人将它与Web Service技术(最初它是支持SOA的流行方法)紧密关联的缘故,而且此现象仍然在继续。网络上许多有关SOA与REST的比较大多将它们强行地变成类似于苹果与橘子之间的比较。所以,我们有必要回过头来看看SOA最初的动机。

在任何公司里,整体IT环境都是由许多单独的系统构成的。这些系统运行在不同技术之上,最初通过不同的工具建设而成。有些来自与商业厂商,有些是企业内建的。一段时间后,你会想把它们连接起来,因为这么做的价值是显而易见的。你可以采用点对点的集成方式,通过文件、共享数据库或其他集成解决方案,从某个系统中导出一些数据,定期地导入到另一个系统中。这么做的结果是,你将得到一个脆弱的、不易于管理的IT环境。

因为系统集成的工作非常困难,所以你(或为你服务的厂商)会使其变得越来越臃肿,直到你不得不付出巨大的代价来改变。尽管引入集中式的集成中间件起初看起来非常诱人,但它却不是个好办法。你将依赖于一家厂商,它有可能被另一家收购,或者破产,或在你与竞争对手(它采用的是另一家产品,而且更时新)合并之后变成遗留系统。

那么,你该怎么做呢?你应该合理地解决这一问题,通过在接口层限制不同技术的数量来减少集成系统所需的工作。为实现这一目标,你可以选择一种较好的接口抽象方法,将大型应用系统分解成更细粒度的功能模块。这样,你就无需依赖于单个厂商,不论它是中间件厂商还是应用系统厂商,你期望功能便于使用(及重用)。应该不会有人否认这是一个合理的方法。

对我而言,这就是SOA的本质:它是一个运用于企业内一组应用而非单个应用的系统软件架构;它重点关注网络和系统间的接口,而非实现;它进行一切必要的标准化,确保流畅的交互和偶尔的重用;别无其他。几年前,我们发表SOA宣言时,重点关注的是内在互操作性,我认为,这才是真正象征着SOA和面向服务的特性,也正是它促使了SOA与REST原则的对齐。

在我看来,面向服务是非常值得追求的一个目标,而RESTful HTTP是当前看到的实现这一目标的最佳方法。任何其他架构都不具备如此广泛的支持,便利地支持重用,以及相同的对持续演变的支持。然而,在SOA环境中使用REST仍然处于初级阶段,到目前为止,尚很难找到成熟的最佳实践与模式。

本书的贡献
本书的作者们对于什么是REST,什么不是REST具有非常清晰的理解,所以,本书给你带来的知识,可以帮助你区分哪些是真正的RESTful,哪些又只是自我标榜。你将学习SOA与REST的基础知识,还会了解若干结合了SOA与REST的设计模式。你还会学到如何构建服务及服务消费者。

构建RESTful系统和集成场景的工作非常需要指引,而且该指引不应该只满足于短期的成效,而应更加注重于长期的收益。我坚信本书的作者们是你能够找到的最佳指引。我非常肯定,你也将会相信REST与SOA非但不冲突,反而是完美的搭档。

——Stefan Tilkov, innoQ

致谢
SOA与REST:用REST构建企业级SOA解决方案
Gustavo Alonso,苏黎世联邦理工学院(ETH Zurich)计算机科学系
Gerald Beuchelt,MITRE
Kevin Davis
Jean-Paul De Baets,比利时政府
Roy Fielding
Ryan Frazier,微软公司
Michael Grube,诺德斯特姆公司(Nordstrom)
Dolly Kandpal,Qamlo信息服务
Jana Koehler
Ivana Lee,Arcitura教育
Mark Little,红帽公司
Damian Maschek,德国铁路公司
Theodore Morrison,Geocent公司
Pethuru Raj博士,Wipro咨询服务公司
Ian Robinson
Sid Sanyal,苏黎世金融服务集团
Al Scherer,佛莱特高等教育集团
Christoph Schittko,微软公司
Sanjay Singh,NorthgateArinso
Dave Slotnick,Rackspace
Roger Stoffers,惠普公司
Longji Tang博士,联邦快递公司
Clemens Utschig-Utschig,勃林格殷格翰公司(Boehringer Ingelheim Pharma)
Philip Wik,MSS
Erik Wilde,EMC
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

目录
前言
第 1 章 介绍
1.1节关于本书
1.2节推荐阅读
1.3节本书的组织方式
1.4节约定
1.5节附加信息
第 2 章 案例研究背景
2.1节如何使用案例研究
2.2节案例研究背景之一:中西部大学联盟(MUA)
2.3节案例研究背景之二:KioskEtc有限公司
第一部分 基础知识
第 3 章 服务简介
第 4 章 SOA术语和概念
第 5 章 REST约束和目标
第二部分 REST风格的面向服务
第 6 章 REST服务契约
第 7 章 用REST实现面向服务
第三部分 REST环境下面向服务的分析与设计
第 8 章 主流SOA方法论和REST
第 9 章 REST服务分析与服务建模
第 10 章 面向服务的设计和REST
第四部分 REST服务组合
第 11 章 REST基础服务组合
第 12 章 REST高级服务组合
第 13 章 REST服务组合之案例研究
第五部分 补充
第 14 章 SOA与REST的设计模式
第 15 章 REST服务版本控制
第 16 章 统一契约概要
第六部分 附录
附录A 案例研究结论
附录B 支持Web的工业标准
附录C REST约束参考
附录D 面向服务原则参考
附录E SOA设计模式参考
附录F 状态的概念和类型
附录G 带注解的SOA宣言
附录H 其他资源
书中提到的模式的作者
关于序的作者
关于作者

欢迎来到异步社区!

相关文章
|
2月前
|
运维 监控 数据管理
Apollo与微服务架构:构建可扩展的应用程序
Apollo与微服务架构:构建可扩展的应用程序
|
4天前
|
存储 监控 API
SOA简介
SOA简介
12 1
|
12天前
|
运维 监控 自动驾驶
构建可扩展的应用程序:Apollo与微服务架构的完美结合
构建可扩展的应用程序:Apollo与微服务架构的完美结合
32 10
|
7月前
|
XML 缓存 API
分布式系统核心:REST风格的架构,REST成熟度模型及REST API管理
正如前文所述,正确、完整地使用REST是困难的,关键在于RoyFielding所定义的REST只是一种架构风格,它并不是规范,所以也就缺乏可以直接参考的依据。好在Leonard Richardson补充了这方面的不足。
|
XML JSON Java
架构之:REST和HATEOAS
架构之:REST和HATEOAS
|
Java 数据格式 网络架构
主流RPC框架详解,以及与SOA、REST的区别
什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
1593 0
|
前端开发 测试技术 网络架构