Netflix或Twitter风格的Web服务应该使用REST还是SOAP?

时间:2010-07-19 22:46:50

标签: rest soap

我已经实现了两个REST服务:Twitter和Netflix。两次,我都在努力寻找将这些服务公开为REST而不是SOAP的决策所涉及的用途和逻辑。我希望有人能够了解我所缺少的内容并解释为什么将REST用作这些服务的服务实现。

  1. 实现REST服务比实现SOAP服务花费的时间更长。所有现代语言/框架/平台都存在用于读取WSDL并输出代理类和客户端的工具。实现REST服务是手工完成的 - 通过阅读文档来实现这一点。此外,在实现这两项服务时,您必须对管道中的内容进行“猜测”,因为没有真正的架构或参考文档。

  2. 为什么要编写一个返回XML的REST服务?唯一的区别是,使用REST时,您不知道每个元素/属性所代表的类型 - 您可以自己实现它,而希望有一天字符串在字段中没有出现你以为总是一个int。 SOAP使用WSDL定义数据结构,因此这是一个明智的选择。

  3. 我听说过使用SOAP你有SOAP信封的“开销”。在这个时代,我们真的需要担心一些字节吗?

  4. 我听说过用REST可以将URL弹出到浏览器中并查看数据。当然,如果您的REST服务使用简单或无需身份验证。例如,Netflix服务使用OAuth,要求您在提交请求之前对事物进行签名和编码。

  5. 为什么我们需要为每个资源提供“可读”的URL?如果我们使用工具来实现服务,我们真的关心实际的URL吗?

5 个答案:

答案 0 :(得分:193)

答案 1 :(得分:61)

答案 2 :(得分:17)

答案 3 :(得分:7)

Martin Fowler有一个post on the Richardson Maturity Model,可以很好地解释SOAP和REST之间的区别。

答案 4 :(得分:3)

WSDL和其他文档级协议是多余的。除了提供文档和提交表单之外,HTTP协议还支持更丰富的操作。

REST的支持者对这种冗余感到不舒服。