我的直觉是在实践中首选基于文档的 Web 服务——这是其他人的经验吗?他们更容易支持吗?(我注意到 SharePoint 在其 WSDL 接口中使用 Any 作为“文档类型”,我猜这使它基于文档)。
另外 - 人们现在是否为相同的功能同时提供 WSDL 和 Rest 类型的服务?WSDL 在代码生成方面很受欢迎,但对于 PHP 和 Rails 等前端,它们似乎更喜欢休息。
我的直觉是在实践中首选基于文档的 Web 服务——这是其他人的经验吗?他们更容易支持吗?(我注意到 SharePoint 在其 WSDL 接口中使用 Any 作为“文档类型”,我猜这使它基于文档)。
另外 - 人们现在是否为相同的功能同时提供 WSDL 和 Rest 类型的服务?WSDL 在代码生成方面很受欢迎,但对于 PHP 和 Rails 等前端,它们似乎更喜欢休息。
仅当您使用需要服务描述 ( WSDL )的 SOAP Web 服务时,文档与 RPC 才是一个问题。RESTful Web 服务不使用 WSDL,因为服务不能用它来描述,感觉就是 REST 更简单,更容易理解。有人提出WADL作为描述 REST 服务的一种方式。
Python、Ruby 和 PHP 等语言使使用 REST 变得更容易。WSDL 用于生成可以从静态语言轻松调用的 C# 代码(Web 服务代理)。在 Visual Studio 中添加服务引用或Web 引用时会发生这种情况。
您是否提供 SOAP 或 REST 服务取决于您的用户群。这些服务是通过 Internet 使用还是仅在您的组织内部使用会影响您的选择。SOAP 可能有一些非常适合 B2B 或内部使用的特性(WS-* 标准),但对于 Internet 服务来说却很糟糕。
这篇IBM DevelopWorks 文章中描述了 SOAP 服务的文档/文字与 RPC 。就互操作性(Java 到 .NET 等)而言,文档/文字通常被认为是最适合使用的。至于是否更容易支持,这取决于您的情况。我个人的观点是,人们倾向于让这些东西变得比它需要的更复杂,而 REST 更简单的方法更胜一筹。
如前所述,最好尽可能选择 Document Literal 而不是 RPC 编码。确实,旧的 Java 库(Axis1、Glue 和其他史前的东西)仅支持 RPC 编码,但是在当今最现代的 Java SOAP 库中不支持它(例如 AXIS2、XFire、CXF)。因此,只有在您知道需要处理无法做得更好的消费者时,才尝试公开 RPC 编码的服务。但话又说回来,也许只有 XML RPC 可以帮助这些遗留实现。
BiranLy 的回答非常好。我想补充一点,document-vs-RPC 也可以归结为实现问题。我们发现微软更喜欢文档,而我们基于 Java 的库是基于 RPC 的。无论您选择什么,请确保您知道其他潜在客户也会假设什么。