| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Написание веб сервиса |
| Автор: infarch 11.3.2010, 15:12 |
| Возникла необходимость написать веб сервис на Перл. И желательно это сделать так, чтобы wsdl файл создавался автоматически (а может еще какие файлы нужны?). С таким делом я раньше не сталкивался, так что прошу совета у тех кто знает что к чему. Интересует все: какие модули лучше использовать с точки зрения поддержки последних спецификаций soap, как создавать wsdl файл и так далее. Главное - результат должен получиться полностью работоспособный, чтобы клент с помощью visual studio и c# мог без проблем это использовать, даже не заметив никакой разницы (... надеюсь что это возможно). Буду очень благодарен за подсказки. |
| Автор: dron000 11.3.2010, 15:53 |
| Смотри на HTTP::Request , LWP::UserAgent; XML::Simple , ну а дальше от объема передаваемых и обрабатываемых данных и специфики того что именно нужно. |
| Автор: infarch 11.3.2010, 16:22 |
| У меня основная проблема - автоматическое создание wsdl файла на основе имеющихся классов. Если это решу, то дальше проще пойдет. Хотя есть и другой момент - совершенно неохота вручную парсать входной xml и формировать выходной. Я понимаю что перл это не java+axis и не c#. Но вот никак не могу поверить что такого еще никто не писал |
| Автор: mvsgt 11.3.2010, 16:23 |
| Я бы не делал web-сервисы на перле вообще. Java, C++, C#. Проблемы будут в совместимости это раз, два - стандарты SOAP 1.1 ещё как-то реализованы (и то не полностью), а SOAP 1.2 вообще фрагментарно. На CPAN есть два или три приличных модуля, посмотрите их описание (поиск по SOAP и WSDL). И валидация схем, вроде , вообще отсутствует. |
| Автор: infarch 11.3.2010, 16:37 | ||
Куда деваться, клиент хотят перл Была еще одна идея - превратить имеющийся джава веб сервис в фронт-енд для функций перл. Как считаете, выйдет из этого нечто путное? |
| Автор: mvsgt 11.3.2010, 18:08 |
| теоретически выйдет, практически я бы отказался от перла. С вебсервисами он может внезапно наткнуться на непреодолимые препятствия. У меня всё проще - сообщения ява получает и пишет в базу, а перл их разбирает потом и сам через SOAP отправляет ответные сообщения. Но это не всегда то что нужно, у меня это очень хорошо подходило под общую архитектуру. |
| Автор: infarch 11.3.2010, 18:26 |
| А как это перл у вас отвечает на сообщения которые приняла джава? Можно маленький пример? |
| Автор: mvsgt 11.3.2010, 19:11 |
| Java разбирает сообщения и пишет в базу, перл читает сообщения из базы. Получается хорошая система - надёжная java+tomcat, которые не падают, и сомнительный перл, который можно отлаживать и править без потери входящих сообщений. JAVA часть такая простая, что быстро отлаживается и о ней забываем. А обработчик на перле удобно отлаживать, так как входные данные для него - таблицы в базе, которые можно заполнять как угодно. |
| Автор: infarch 12.3.2010, 11:02 |
| Тоесть получается так - джава пишет в базу, перл это дело отслеживает, обрабатывает и пишет в базу респонс, а джава его отдает назад. Так? А не очень тормозит? Может можно как-нибудь через память наладить взаимодействие?.. |
| Автор: mvsgt 12.3.2010, 12:37 |
| я смотрел - нагрузка на систему микроскопическая, когда сообщений нет. Фаза записи сообщений в базу мне всё равно нужна по условиям задачи, так что единственное что надо - смотреть в таблицу очереди входящих сообщений, а это небольшая нагрузка. Отсылка сообщений у меня на перл переложена, но по-хорошему надо на яве писать. Вообще у меня устойчивое ощущение, что в более-менее сложных проектах перлу не место. |
| Автор: infarch 12.3.2010, 12:57 |
| Новый проект я бы на перле не начинал. Но и имеющийся переписывать тоже не тянет Но вот скажите мне, как вы перлом отвечаете на зарос который приняла джава? Хоть пару строк приведите в пример, пожалуйста. Ведь теоретически, если томкат принял запрос, то он на него должен и отвечать. У вас идет запись в базу, а что потом? пока перл тот запрос обработает, уже может другой придти. |
| Автор: mvsgt 12.3.2010, 14:16 |
| Моя система - часть международной системы, там на каждое полученное сообщение можно ответить "Success" или "Fail" (упрощённо), настоящий ответ отправляется в отдельном сообщении. Обработка запросов делается долго, поэтому ответ можно давать через какое-то время. Поэтому перл и не участвует в диалоге клиент->SOAP->сервер, а только сервер->SOAP->клиент. Обе стороны поддерживают SOAP сервера. |
| Автор: infarch 12.3.2010, 14:28 |
| Становится понятнее |