基于文档或 RPC 的 Web 服务

问题描述 投票:0回答:3

我的直觉是基于文档的 Web 服务在实践中是首选 - 这是其他人的经验吗?他们更容易得到支持吗? (我注意到 SharePoint 在其 WSDL 接口中使用 Any 作为“文档类型”,我猜这使得它基于文档)。

另外 - 人们现在是否为相同的功能同时提供 WSDL 和 Rest 类型服务? WSDL 在代码生成方面很流行,但对于 PHP 和 Rails 等前端,他们似乎更喜欢休息。

web-services rest wsdl
3个回答
30
投票
如果您使用需要服务描述 (

WSDL) 的 SOAP Web 服务,文档与 RPC 只是一个问题。 RESTful Web 服务并不是不使用 WSDL,因为服务无法用它来描述,感觉 REST 更简单、更容易理解。有些人提出使用 WADL 作为描述 REST 服务的方式。

Python、Ruby 和 PHP 等语言使使用 REST 变得更加容易。 WSDL 用于生成可以从静态语言轻松调用的 C# 代码(Web 服务代理)。当您在 Visual Studio 中添加服务引用Web引用时,会发生这种情况。

您提供 SOAP 还是 REST 服务取决于您的用户群体。这些服务是通过互联网使用还是仅在组织内部使用会影响您的选择。 SOAP 可能具有一些非常适合 B2B 或内部使用的功能(WS-* 标准),但不适合 Internet 服务。

这篇 IBM Developer 文章 描述了 SOAP 服务的文档/文字与 RPC。就互操作性(Java 到 .NET 等)而言,文档/文字通常被认为是最好的使用方式。至于是否更容易支持,那就要看你的情况了。我个人的观点是,人们倾向于让事情变得比实际需要的更复杂,而 REST 更简单的方法更优越。


5
投票

如前所述,尽可能选择文档文字而不是 RPC 编码更好。 确实,旧的 Java 库(Axis1、Glue 和其他史前的东西)仅支持 RPC 编码,但是当今最现代的 Java SOAP 库却不支持它(例如 AXIS2、XFire、CXF)。 因此,仅当您知道需要与无法做得更好的消费者打交道时,才尝试公开 RPC 编码的服务。但话又说回来,也许 XML RPC 就可以帮助这些遗留实现。


1
投票

BiranLy 的回答非常好。我想补充一点,文档与 RPC 也可以归结为实现问题。我们发现 Microsoft 更喜欢文档,而我们基于 Java 的库则基于 RPC。无论您选择什么,请确保您知道其他潜在客户也会假设什么。

© www.soinside.com 2019 - 2024. All rights reserved.