5

在使用 Web API(RESTful 服务)访问远程基础设施时,我看到了一个争议。如果您能发表评论,我将不胜感激。来自文章“RESTful Web 服务与“大”Web 服务:做出正确的架构决策”的建议[1] 是使用 Web API 而不是临时集成(a la' mashup)和快速原型设计。[2] 中的实证研究表明,在重用现有信息和功能的场景中遵循了这些建议。但是,通过 Web API 重用基础架构并不能很好地适应 ad hoc 集成的任务。我的印象是,基础设施通常在我拥有的资源不能很好地扩展以解决我想要解决的问题的场景中被重用:大量数据、高带宽、高并发。尽管如此,亚马逊通过以下方式提供对其基础设施(存储空间、消息队列)的远程访问:

  • 经典的 SOAP Web 服务(所谓的大 Web 服务)和
  • 轻量级 RESTful Web 服务(所谓的 Web API)。

尽管没有任何书面说明客户(在亚马逊网络服务的案例研究中描述)是使用大网络服务还是网络 API,但亚马逊以网络 API 的形式提供对其基础设施的访问作为替代方案的事实必须是有意义的。

你知道他们的动机是什么吗?你知道人们为了快速原型设计而重用基础设施的情况吗?或者也许是为了测试?换句话说,如果我想重用 Amazon 提供的基础设施,我应该在哪些示例情况下使用 SOAP 或 REST 哪种 API 样式?

编辑:在这种情况下,作为基础设施,我的意思是:存储空间、计算能力、互联网带宽。因此,我想知道这些资源是否在临时集成中被重用。


  1. Cesare Pautasso、Olaf Zimmermann、Frank Leymann,RESTful Web 服务与“大”Web 服务:做出正确的架构决策,第 805-814 页,Jinpeng Huai、Robin Chen、Hsiao-Wuen Hon、Yunhao Liu、Wei-Ying Ma , Andrew Tomkins, 张晓东(主编),第 17 届国际万维网会议论文集,ACM 出版社,中国北京,2008 年 4 月。

  2. Hartmann, Bjorn & Doorley, Scott & Klemmer, Scott R., Hacking, Mashing, Gluing: Understanding Opportunistic Design , IEEE Pervasive Computing , vol. 7,没有。3, 46-54 (2008)。

4

3 回答 3

2

理解使用哪个版本的关键在于理解一件事——如果您需要在具有深度嵌入对象层次结构的 Web 上执行复杂的操作,那么您实际上被迫使用 Web 服务。REST 在执行简单操作时非常有能力,但复杂的操作超出了它的范围。

我通常喜欢将 RESTful 系统设想为可以通过浏览器命令栏调用命令来测试的系统。RESTful 应用程序真的很容易测试,并且通常非常适合通过模拟进行测试。

于 2009-12-16T14:10:15.557 回答
1

我认为,当人们谈论通过 RESTful Web 服务利用现有基础架构时,他们的意思是他们可以使用为 Web 设计的现有东西,而不必使用专门为 Web 服务构建的软件。例如,如果我有一个使用 REST 的 Web 服务,我可以利用 HTTP 缓存代理之类的东西,在哪里获得与 SOAP 等效的功能,我需要一些专门的东西。

于 2009-12-16T14:11:08.880 回答
1

REST 比 SOAP 更容易使用。FWIW,Google 不再使用 SOAP,全是 REST。

SOAP 的唯一优点是您可以立即使用对象。使用 REST,您需要一个框架(如 JAX-RS)来为您创建这些对象,或者手动解析它们。

REST 的另一个巨大优势是,您实际上可以在访问日志中看到请求。大多数 SOAP 请求 POST 到完全相同的端点,因此很难确定您要做什么。另一方面,REST 通常发布到特定的端点,因此您实际上可以从您的网络浏览器中访问它们,而无需花哨的应用程序。

于 2009-12-17T07:29:15.727 回答