2009-11-24 1 views
2

В настоящее время я имею дело с базой кода, которая содержит несколько десятков классов, сгенерированных с помощью SOAP :: WSDL. Однако, работая с Moose, я теперь думаю, что создание этих классов во время выполнения на мета уровне (то есть не на файлы на диске, а непосредственно на объекты) может быть лучшей идеей (полностью исключая причины производительности на данном этапе).Является ли внедрение SOAP-клиентов в Perl с использованием метапрограммирования разумным?

  1. Этот подход разумный? Идея состоит в том, чтобы избежать изменений в сгенерированном коде, а также избегать повторного генерации его через некоторое время.

  2. Если да, есть ли готовые к использованию модули Perl, которые создают классы из WSDL?

ответ

1

Чтобы ответить на второй вопрос, вначале нет основанного на лосях, который превратит WSDL в набор классов. Однако вы могли бы создать что-то на основе XML :: Toolkit. Для полного раскрытия XML :: Toolkit - это мой модуль, в котором есть инструменты для преобразования потоков SAX в классы Moose и наоборот. Для классов, отличных от Moose Perl, существует XML :: Compile, который, я считаю, может скомпилировать SOAP wsdl -> Perl.

Чтобы ответить на первый вопрос, мой опыт работы с XML :: Toolkit говорит о том, что хранение классов в памяти во время выполнения является сложным. Игнорируя накладные расходы на производительность, вам нужно много вещей, которые нужно держать в голове, которые накачаны из WSDL. Это был бы интересный эксперимент, но я не знаю, насколько долго он будет поддерживаться.

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

 Смежные вопросы

  • Нет связанных вопросов^_^