Как мне сделать RPC в Perl с Catalyst? - PullRequest
4 голосов
/ 08 февраля 2010

Я пытался найти хорошую форму RPC для стандартизации, но до сих пор я наткнулся на тонну стен и задавался вопросом, каково было представление сообществ stackoverflow.

Мой идеальный RPC мог бы обеспечить следующее:

  • Довольно широкая поддержка на других языках, так как людям не нужно писать собственный стек для использования нашего сервера
  • Подтверждение ввода
  • В идеале, какой-то способ превратить вышеуказанную проверку ввода в какую-то автоматизированную документацию для распространения
  • Чистый и поддерживаемый код

Я фанат каталитического фреймворка и предпочел бы придерживаться его, но если есть явно лучшая альтернатива для RPC-серверов, я тоже буду к этому открыт.

До сих пор я смотрел на следующее:

Catalyst :: SOAP Controller :: Не поддерживает возврат сложных структур данных, только строка («литералы»). Скорее всего, я мог бы сериализовать данные, но это выглядит очень глупо. Он также позволяет вам возвращать предварительно сформированный объект XML, но я не смог заставить его работать, и похоже, что для его работы вам потребуется заново создать много структуры данных SOAP.

Мне действительно нравится идея WSDL, но сложность общей спецификации также заставляет меня задуматься о том, насколько хорошей будет поддержка общения с другими языками.

Пользовательский POSTing XML-контроллер на основе Мы попытались откатить свои собственные вручную, аналогично тому, как мы видели, как два других проекта делали это недавно, где есть URL-адрес рассылки, на который вы отправляете XML. Это позволяет вам проверять / документировать XSD, но требует создания гораздо большего количества кода, чем мы хотим поддерживать на данном этапе.

Catalyst :: Plugin :: Server :: XMLRPC Выдал предупреждение об использовании устаревшего метода, который будет удален в будущей версии Catalyst. Нет проверки ввода или создания документа, но в остальном лучшее, что я нашел

JSONRPC Выглядит очень похоже на XMLRPC, только модуль фактически обновлен. Я, вероятно, пойду с этим дальше, если кто-то не предложит что-то лучшее Также есть два разных модуля для катализатора, которые делают JSONRPC

Ответы [ 2 ]

4 голосов
/ 08 февраля 2010

Я понимаю, что REST не чистый RPC (только подмножество), но ...

Я бы порекомендовал модули Catalyst :: Controller :: REST и Catalyst :: Action :: REST . Они часто обновляются, и документация довольно хорошая. Есть также хороший (но довольно устаревший) пример использования Catalyst :: Controller :: Rest в календаре Catalyst Advent 2006 под названием День 9 - Веб-сервисы с Catalyst :: Action :: REST .

0 голосов
/ 02 марта 2013

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 для более подробного пошагового процесса.

...