API样式元素:REST vs SOAP

日期: 2012-02-28 作者:Stephanie MannJack Vaughan翻译:张培颖 来源:TechTarget中国 英文

尽管近年来Web服务开发不断扩张,但是这个领域缺少通用实践和方法论的简明目录。欢迎阅读《服务设计模式(“Service Design Patterns” (Addison-Wesley, 2012))》以及SearchSOA.com的主编Jack Vaughan同这本书的作者Robert Daigneau的对话,他们主要探讨了业务和开发、REST和SOAP。Daigneau曾担任Monster.com架构总监这样卓越的职位,同时也是富达投资集团(Fidelity Investments)的应用开发经理。现在他担任BlueMetal Architects的服务器开发总监。

  在过去十年中,SO……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

尽管近年来Web服务开发不断扩张,但是这个领域缺少通用实践和方法论的简明目录。欢迎阅读《服务设计模式(“Service Design Patterns” (Addison-Wesley, 2012))》以及SearchSOA.com的主编Jack Vaughan同这本书的作者Robert Daigneau的对话,他们主要探讨了业务和开发、REST和SOAP。Daigneau曾担任Monster.com架构总监这样卓越的职位,同时也是富达投资集团(Fidelity Investments)的应用开发经理。现在他担任BlueMetal Architects的服务器开发总监。

  在过去十年中,SOA和服务开发,实际问题“你怎么做”服务已经有些变成可重复的流程了。但是这件事还是有点艺术性。在《服务设计模式》中有回归的样子。在这本书中,Rob Daigneau着手创造技术的整理,我们多年来都在尝试在服务的基础上开发和集成。

  使用软件设计模式作为连接线,该书成为Addison-Wesley出版的模式友好马丁福乐签名系列(Martin Fowler Signature Series)的一部分。Daigneau鉴别出一些再发问题,在内容中涵盖到,指出了解决它们的办法,使这本书成为服务设计团队非常有用的参考。

  Web服务API正在进行广泛的扩展,包括大量基于REST的方法。这与最初的流行概念SOAP RPC API是不二法则大不相同。正如《服务设计模式》中列举的,资源和消息API也变得非常普遍。

服务设计模式

  API样式:RPC、消息和资源

  对于企业架构师和开发者试图确定正确的API样式,Daigneau的书中建议在其使用的上下文环境内部逐一检查。RPC API、消息API和资源API都有不同的方法。架构师该问的问题是哪一种API样式对于既定问题能够更好的工作,Daigneau在最近的一次播客采访中告诉SearchSOA.com。他也给出了下面的解释,以及对于权衡这些选择的建议。

  RPC API是大部分开发者比较熟悉的一个。这种方法中,我们本质上用外部接口创建一个服务,这个服务接口是托管在服务器上的程序的派生物。我们可以在远程程序执行的时候发现消息并识别它们。RPC消息中也有几套元素,根本上是直接映射到后端远程程序的参数上。这样就可以在客户端和服务之间创建相当健壮的耦合。

  消息API实际上是有点试图打破这种耦合。我们可能在网络上向一个服务发送命令、通知或者其他程度的信息,同时避免直接同这些远程程序耦合。在这样的案例中,不是用来自远程程序的一个接口创建一些服务,“我们只是创建一个独一无二的接口。”这个消息应该按需运载关于具体话题、执行对话、事件等的消息。当这个消息由具体的URI接收时,这个服务将询问消息内容,从而根本上按照路由将其发送给正确的处理程序。在服务和实际的执行程序之间实际上有一个迂回。现在客户端和服务器端(比RPC API样式更多)之间发生了独立演化。但是,你可能已经猜到了,也要求大量更多的技能。你必须在一中低水平上真正理解一些事情。你可能使用SOAP和WSDL或者你可能不适用SOAP或者WSDL。因此,开发的时间可能比RPC样式长一些,但是,消息API能够促进这种发展。资源API使用请求的URI和HTTP服务器方法来决定需求的是哪一个媒体类型。这种样式粘附在所谓的REST架构风格上。在这样的实例中,JSON越来越多地被用来处理数据。资源API在处理大范围的客户端混合。

  工作流模型到运行时系统

  即便架构师和开发人员已经找到面向服务应用开发和集成的最佳技术,其他挑战也会存在,我们在同Daigneau谈到BPM的时候就谈到这一点。开发端和业务端交汇的时候挑战还是存在。问题是熟悉的,就是当今集成中的“想法和表现”之间的代沟。

  事实上,在设计时建模和运行时会发生什么之间还是存在一些裂口,根据Daigneau所说。这种代沟到处都存在,但是在BPM的世界中会更加生动地显现出来,因为业务模型要转换到运行时系统中。

  BPEL是这个领域的玩家,被用作一项服务编排器,但是注意到现在更多地是转到BPMN,BPMN是一种建模表示法。“很多人期望我们彻底地将建模工具交给业务分析师,他们可以点击按钮,最终,代码就能生成,如同魔法般变到我们现实的生活中来,”Daigneau说,“我认为我们已经知道这样并不能很好的工作。在高层次想法和实现这些事情的最佳方法之间存在裂口。很多要做的事情都必须伴随着软件服务本身的属性进行。”

  这些服务的本质是什么呢?在技术层面上调用服务非常昂贵,他回答。他们要求序列化、反序列化、网络上的数据传输和延迟。他们还让这个问题处理部分失败等等。因此通常,工作流中可能收回什么,必须由开发者以一种显著不同的方式实现,Daigneau表示。但是当今的BPMN 2.0,也让我们看到了模型魔法化实现的另一种努力。

作者

Stephanie Mann
Stephanie Mann

Jack Vaughan
Jack Vaughan

TechTarget新闻记者和网站编辑,主要关注数据管理领域的技术趋势和动态。

翻译

张培颖
张培颖

云计算网站编辑

相关推荐

  • API样式及云计算API选择教程

    据Gartner的副总裁兼应用架构、集成与开发分析师Daniel Sholler介绍当今主流软件的变革是围绕着应用程序接口进行的。这些“集成接口”的性质正在发生微妙的改变。API设计正变得与用户界面设计一样的重要。REST架构的普遍性使得它可以在各种广泛的场合下工作,且其流行性也已经在一大群程序员当中得到了证实。在这本技术手册中我们将着重看一下API公共数据选择、公开API,以及REST和SOAP的选择,同时也将涵盖云计算API的内容。

  • 播客:服务设计模式一席谈

    随着移动、云计算和SaaS平台持续蔓延,企业架构师和开发者逐渐转向Web服务来符合不同的信息需求。但是但提到设计这些Web服务时,事情就发生变化了。

  • 中间件主要功能逐个数

    中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层次上……

  • 云API纷争再起 选择RPC还是REST?

    之前一篇新闻报道了William Vambenepe的问题“如果云计算的先驱者们都不使用REST,它对于云计算还重要吗?”报道发表之后,William作出了进一步的反馈……