计算机程序员喜欢争吵。我想这在任何职业中都是正确的,但对于程序员来说无疑是正确的。不相信我?只需询问程序员您是否应该使用 SOAP 或 REST 设置您的 Web 服务。然后喝杯咖啡,因为这将是一段时间。备份和解释什么是 Web 服务可能会有所帮助。 Web 服务是机器通过万维网彼此联网并中继信息以更改数据的一种方式。基本上,这是计算机与其他计算机对话的一种方式。而在 Web 上,这一切都始于 XML。 XML 是由 W3C 的 11 位贡献者于 1997 年开发的,其灵感来自于对真正语义网络的梦想。 1997 年的网络允许发布人类可以理解的文档。从设计上讲,这非常容易和宽容。但是计算机无法以相同的方式理解简单的 HTML 网络文档。语义网的目标是通过添加一个新的层来改变这一点,计算机可以在其中相互交谈,并且网络本身可以成为一个以编程方式连接的集体知识网络。 XML 是解决方案。标记语言可用于创建机器可读和人类可读的 Web 文档。为了使这成为可能,它提供了一种使用内置类型和严格、可执行的规则来构建数据的简单方法。为了使计算机可读的部分工作,语言本身必须远没有 HTML 那么宽容。例如,错误意味着根本没有加载页面。但许多人认为这是一种力量。无论如何,XML 于 1998 年 2 月作为 W3C 推荐标准正式发布。但是对于许多开发人员来说,XML 在允许计算机相互通信方面做得还不够。因此,Microsoft 的一些员工聚在一起开始研究简单对象访问协议 (SOAP)。 SOAP 标准化了服务器之间的通信,最终关闭了客户端(用户看到的)和服务器(数据来自哪里)之间的循环。然而,由于政治和内讧,微软内部的事情有点停滞不前。 Dave Winer 是 SOAP 的一名员工,他对此并不关心。他最终发布了自己的轻量级 SOAP 版本,称为 XML-RPC。它并不包括所有内容,但足以让服务器使用 HTTP、Web 标准协议和 XML 标记语言与客户端通信。一段时间后,SOAP 终于能够在 IBM 找到一个强大的盟友。 Microsoft 和 IBM 一起通过 W3C 推动了 SOAP 规范,并于 2000 年 5 月 8 日成为官方推荐。那时,SOAP 已经在一些地方使用,但其官方标准化使更大的组织有信心采用该规范。新技术。
SOAP 有很多规则。大多数人实际上认为这是一件好事。标准化 Web 服务意味着可以更轻松地从一个项目跳到另一个项目并在其上构建独立的模块。 SOAP 开发人员知道他们已经解决了难题,因此他们可以自由地将注意力集中在细节上。最后,SOAP 帮助开发人员创建了 API、编程接口,以及让用户从 Web 服务器检索和更新数据的中间链接。很快,SOAP 就开始为一些最大的组织运行 API,例如 Oracle、HP 和 Sun。然而,Roy Fielding 对 SOAP 方法有一些问题。 SOAP 发布时,Fielding 正在与 Tim Berners-Lee 合作制定 HTTP 的最新规范,即我之前提到的该协议 1.1 版。同时,他为 Web 服务开发了自己的一套原则,称为 Representational State Transfer,或 REST。他于 2000 年在加州大学欧文分校发表了第一个 REST 规范作为他的博士论文。菲尔丁并不提倡僵化。事实上,REST 并不是一套完整的技术,而是一组试图利用内置 HTTP 方法(您可能听说过的方法,如 GET、POST 和 DELETE)的设计原则的集合。 REST 的主要思想是,对于每条数据,URL 将保持不变,但操作会根据使用的方法而改变。例如,向“http://yoursite.com/posts”请求 GET 可能会返回一个简单的帖子列表,但对相同 URL 的 POST 请求会创建一个新帖子。但回到 SOAP。随着 2000 年代的继续,它获得了很多动力。与此同时,网络本身也在增长。它开始开放。 Salesforce、Ebay 和雅虎等新兴公司创建了所谓的开放 API。这允许地球上的任何开发人员(不仅仅是内部开发人员)以编程方式连接到这些站点并访问他们的数据。所有这些 API 都使用了 SOAP。但是现在在 Sun 的 Fielding 获得了 REST 布道者社区的支持并开始反击。 Fielding 和他的支持者认为 REST 更简单、更优雅,专为 Web 构建。他们强调系统在面对严格的 SOAP 标准时的灵活性。当然,SOAP 倡导者也有话要说。他们呼吁 REST 支持者认为他们认为过于简单化了。
REST 的人也回应了。这些新形成的开放 API 是他们的目标,他们能够取得一些进展。很快,像亚马逊、雅虎和谷歌这样的公司转向了 REST。许多其他公司也紧随其后。尽管如此,双方都宣称他们是胜利者,强调了他们的采用点——企业中的 SOAP 和开放 API 中的 REST——并没有强调他们已经失败的地方。最终,事情平息了。开发人员又开始鼓吹实用性,指出 SOAP 可能是比 REST 更好的选择的时代,反之亦然。批评者稍稍让步,人们又回到了做最好的事情上。但在技术方面,没有什么比教条更易变的了。每月两次发送关于网络历史、构建它的不可思议的人以及您从未听说过的所有网站、代码和浏览器的快讯。阿诺·劳雷特。 “你真的知道为什么你更喜欢 REST 而不是 RPC 吗?” API 杂工。 2015 年 5 月 5 日。https://apihandyman.io/do-you-really-know-why-you-prefer-rest-over-rpc/ 约翰·穆瑟。 “开放 API – 2011 年市场状况”。幻灯片共享。 2011 年 5 月 5 日。http://www.slideshare.net/jmusser/open-apis-state-of-the-market-2011 Paul Krill。 “REST 与基于 SOAP 的 WS-* Web 服务对微软来说没什么大不了的。”计算机世界。 2009 年 6 月 6 日。http://www.computerworld.com/article/2524720/app-development/rest-vs--soap-based-ws---web-services-war-no-big-deal-to-微软.html
Russell Kay,“代表性状态转移 (REST)”,Computer World 41,第 32 期(2007 年 8 月 8 日),40 Roy Fielding。 “消息:回复:[rest-discuss] 用于 REST 的 RFC?。”休息讨论邮件列表。 2006 年 11 月 11 日。https://web.archive.org/web/20091111012314/http://tech.groups.yahoo.com/group/rest-discuss/message/6757 Don Box。 “走到十字路口……”唐盒子。 2006 年 3 月 3 日。https://web.archive.org/web/20060411190721/http://pluralsight.com/blogs/dbox/archive/2006/03/18/20235.aspx