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

  • 经典的 SOAP Web 服务(所谓的 Big Web 服务)和
  • 轻型 RESTful Web 服务(所谓的 Web API)。

尽管没有任何文字说明客户端(在 Amazon Web Services 的案例研究中进行了描述)是否使用大型 Web 服务或 Web API,但 Amazon 以 Web API 的形式提供对其基础设施的访问作为替代方案这一事实必定是有意义的。

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

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


  1. 切萨雷·保塔索、奥拉夫·齐默尔曼、弗兰克·雷曼、 RESTful Web 服务与 RESTful Web 服务对比“大”网络服务:做出正确的架构决策, ,页。805-814,Jinpeng Hui,Robin Chen,Hsiao-Wen Hon,Yunhao Liu,Wei-Ying Ma,Andrew Tomkins,Xiaodong Zhang(编辑), 第十七届国际万维网会议论文集, ,ACM 出版社,中国北京,2008 年 4 月。

  2. 哈特曼、比约恩和多雷、斯科特和克莱默、斯科特 R.、 黑客、捣碎、粘合:了解机会主义设计, IEEE 普适计算 ,卷。7、没有。3、46-54(2008)。

有帮助吗?

解决方案

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

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

其他提示

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

REST 比 SOAP 更容易使用。FWIW,Google 不再使用 SOAP,一切都是 REST。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top