JSON-WSP或JSON-RPC

时间:2011-09-25 15:30:33

标签: json web-services rest

我们即将使用JSON对象作为传输模式来实现Web服务。我们的目的是让第三方组织连接到我们的网络,为此我们计划使用标准化协议来简化未来的集成。

对于JSON,目前有两个规范:JSON-RPC和JSON-WSP。我想知道这两者之间的任何人的看法,如果你在我的鞋子里,你会用什么?现在,我看到JSON-RPC已经存在了一段时间,并且已经实现了多种语言。 JSON-WSP还处于早期阶段,但它的目标是取代JSON-RPC(RFC正在开发中)。从长远来看,我认为JSON-WSP将是一个很好的解决方案,但我可能错了。

2 个答案:

答案 0 :(得分:5)

两个协议之间的主要区别在于JSON-WSP可以用jsonwsp/description object描述它自己的服务方法。如果您希望客户能够“了解”您的Web服务并且可能提供动态客户端用户界面,可以在更改服务方法时自动更改可视化,那么这很好。因此,服务器端更新可能很容易分发。

JSON-WSP在规范

中支持attachments

JSON-RPC支持批处理方法调用 - 在一个请求中调用多个方法。您还可以执行无响应请求(通知)

JSON-RPC是两个协议中最早的一个,因此它有更多的实现和一个大型社区。

所以我猜这一切都归结为你的需求。

如果要构建基于浏览器的应用程序,JSON-WSP使用官方javascript客户端提供了一种基于Ajax的高效机制。 JavaScript json-wsp客户端解析服务描述并使用方法将1对1映射到json-wsp方法生成代理对象:

http://ladonize.org/index.php/Python_Example#JavaScript_JSON-WSP_client

答案 1 :(得分:1)

为什么不使用REST?

如果您已经知道JSON类型的格式,请将这些格式记录为各个资源的表示形式,然后通过HTTP提供对它们的访问权限。这样,您将获得底层传输基础设施的好处(缓存可能性,出色的工具等)。

在每个资源之间使用超链接以允许客户端在它们之间导航。然后,您的API的用户将不会受到基于合同的RPC机制的束缚,这种机制对您来说很难发展,并且需要另一个供您的客户使用的工具包。使用REST只需要一个HTTP库(它们只需要一打)和一个JSON解析器(他们已经需要)。此外,您可以随后添加其他编码选项(例如,XML),而对现有客户端的影响最小。

使用JSON并不意味着必须在JSON-RPC或JSON-WSP之间进行选择。使用历史悠久的超级简单标准(如HTTP和JSON)获取API的最低公分母,并将它们发挥到最佳状态。一旦你开始在那里分层更多的规范和标准,你会发现你的API的复杂性按比例增长。