Описание Perl-интерфейсов с WSDL - PullRequest
3 голосов
/ 13 августа 2010

Я искал способы добавления сервера SOAP на основе Perl в наши системы. Каждый раз, когда я смотрю @ инструменты SOAP в Perl, я разочаровываюсь тем, что, как кажется, требуется больше ресурсов для разработчиков, чем людям в мире VS.net. (А я давно ищу)

Из рассмотрения других вопросов здесь, похоже, что XML :: Compile :: SOAP , кажется, популярный инструмент в последнее время. Я разработал способ, с помощью которого мой код служил бы службой через него, но мне также пришлось вручную массировать файл .WSDL, который я начал с Pod :: WSDL .

Есть ли более прямой подход, которого я не нахожу ни на CPAN, ни где-либо еще? Pod :: WSDL по умолчанию выплевывает rpc / encoded, что, как я понимаю, больше не является «лучшим» способом. В документах говорится, что документ / литерал еще не поддерживается, и, читая исходный код, вы можете увидеть части кода, которые делают документ / литерал, но он не работает напрямую с XML :: Compile :: SOAP, В идеале я добавляю несколько аннотаций к нашему коду в атрибутах POD или perl5, нажимаю кнопку и получаю WSDL, который я могу передать в пакет XML :: Compile.

Заранее спасибо.

1 Ответ

1 голос
/ 15 октября 2010

Насколько я знаю, лучшего подхода нет.По крайней мере, для простых сервисов.

Я обнаружил, что если я пишу свои веб-сервисы с RPC-мышлением, тогда SOAP :: Lite смешно прост в использовании.

  • Пишем небольшую Perl-программус подпрограммой в том же файле
  • Рефакторинг в стиле OO, параметры и возвращаемые значения как объекты perl.
  • Перемещение подпрограммы в отдельный модуль, тестирование.
  • Перемещение модуля подпрограммы на сервер,Скопируйте туда и объектные модули передачи данных.
  • Добавьте диспетчер SOAP :: Lite на сервер (несколько строк).
  • Добавьте несколько строк SOAP :: Lite в начало Perl-программы (клиент).Готово.

Это правда, что при этом используется стиль SOAP RPC / Encoded, который не пользуется популярностью.Однако, если вы добавите немного разметки POD, вы можете сгенерировать WSDL, который (после массажа) .Net клиенты могут с радостью потреблять (по крайней мере, я тестировал с Mono и сторонний тестировал с MS C #)

КакВы говорите, что выход Pod :: WSDL требует массирования, я помню, что мне пришлось исправить одно пространство имен как часть моего процесса сборки.

Недостатком является то, что большая часть расширенной обработки XML, связанной с SOAP, по-видимому, отсутствует илине очень хорошо интегрированы, и что SOAP :: Lite и Pod :: WSDL кажутся немного унылыми.

Но для простого удаленного вызова метода, передавая объекты Perl, я считаю, что это на несколько порядков проще, чем Java-фреймворки.У меня был удар.Ваш пробег может меняться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...