我一直在努力寻找一种优秀的RPC来进行标准化,但到目前为止,我遇到了大量的墙壁,并且想知道stackoverflow社区的观点是什么。
我理想的RPC会提供以下内容:
我是催化剂框架的粉丝,并且更愿意坚持使用它,但如果有一个明显更好的RPC服务器替代方案,我也会对此持开放态度。
到目前为止,我已经看过以下内容:
催化剂::控制器:: SOAP 似乎不支持返回复杂的数据结构,只支持字符串('literals')。我可能会在此基础上序列化数据,但这似乎非常hacky。它还允许您返回一个预先形成的XML对象,但我无法使其工作,看起来您需要重新创建大量的SOAP数据结构才能工作。
我确实喜欢WSDL的想法,但整体规范的复杂性也让我想知道与其他语言通信的支持程度如何。
自定义POSTing基于XML的控制器 我们尝试以类似于我们最近看到的两个其他项目的方式来推广自己,其中有一个你发布XML的调度URL。这使您可以获得XSD验证/文档,但是需要创建比我们此时想要维护的代码更多的代码。
催化剂::插件::服务器:: XMLRPC 发出有关使用将在未来版本的Catalyst中删除的已弃用方法的警告。 没有输入验证或文档创建,但除此之外我发现的最好
JSONRPC 看起来非常类似于XMLRPC,只是模块实际更新了。除非有人提出更好的建议,否则我可能会继续下一步 似乎还有两个不同的催化剂模块用于JSONRPC
答案 0 :(得分:4)
我意识到REST不是纯粹的RPC(只是一个子集),而是......
我会推荐Catalyst::Controller::REST和Catalyst::Action::REST模块。它们经常更新,文档也相当不错。在标题为Catalyst::Controller::Rest的2006 Catalyst Advent日历中使用Day 9 - Web Services with Catalyst::Action::REST也有一个很好(但相当过时)的例子。
答案 1 :(得分:0)
FWIW,Catalyst :: Controller :: SOAP确实支持返回复杂数据。查看文档http://search.cpan.org/~druoso/Catalyst-Controller-SOAP-1.23/lib/Catalyst/Controller/SOAP.pm,它将向您展示您可以使用WSDL来描述您的服务。另外,请参阅http://daniel.ruoso.com/categoria/perl/soap-today.html.en以获取更详细的分步过程。