4

我一直在努力寻找一种好的 RPC 形式来标准化,但到目前为止,我遇到了很多问题,想知道 stackoverflow 社区的观点是什么。

我理想的 RPC 将提供以下内容:

  • 对其他语言的广泛支持,因为人们不应该编写自定义堆栈来使用我们的服务器
  • 输入验证
  • 理想情况下,将上述输入验证转换为某种自动化文档以分发的某种方式
  • 干净和可维护的代码

我是催化剂框架的粉丝,并且更愿意坚持使用它,但如果 R​​PC 服务器有明显更好的替代方案,我也会对此持开放态度。

到目前为止,我已经看过以下内容:

Catalyst::Controller::SOAP 似乎不支持返回复杂的数据结构,只支持 string('literals')。我可能可以在此之上序列化数据,但这似乎很hacky。它还允许您返回一个预先形成的 XML 对象,但我无法让它工作,而且看起来您需要重新创建大量 SOAP 数据结构才能使其工作。

我确实喜欢 WSDL 的想法,但整个规范的复杂性也让我想知道对与其他语言通信的支持会有多好。

自定义 POSTing 基于 XML 的控制器 我们尝试以与我们最近看到的另外两个项目类似的方式手动滚动我们自己的控制器,其中有一个您可以将 XML 发布到的调度 url。这使您可以拥有 XSD 验证/文档,但需要创建比我们现在想要维护的更多的代码。

Catalyst::Plugin::Server::XMLRPC 就使用过时的方法发出警告,该方法将在未来版本的 Catalyst 中删除。没有输入验证或文档创建,但除此之外是我发现的最好的

JSONRPC 看起来与 XMLRPC 非常相似,只是模块实际上是更新的。除非有人提出更好的建议,否则我可能会接下来使用这个。催化剂似乎也有两个不同的模块可以执行 JSONRPC

4

2 回答 2

4

我意识到 REST 不是纯 RPC(只是一个子集),但是......

我会推荐Catalyst::Controller::RESTCatalyst::Action::REST模块。它们经常更新,文档相当不错。在 2006 Catalyst Advent 日历中还有一个使用Catalyst::Controller::Rest的好(但相当过时)示例,标题为Day 9 - Web Services with Catalyst::Action::REST

于 2010-02-08T18:09:55.003 回答
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了解更详细的分步过程。

于 2013-03-02T18:42:30.927 回答