Подтвердить что ты не робот

SOAP-сервисы в Haskell?

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

В настоящее время я пишу их на Java, и это не так уж плохо. Но я думаю, что моя жизнь может быть проще, если я смогу написать эти услуги в Haskell. Поиск в Google, похоже, когда-то был у кого-то другого, и он начал проект под названием "HAIFA". Однако похоже, что HAIFA не поддерживался в течение нескольких лет, и я не мог найти никаких других инфраструктур, поддерживающих сервисы обслуживания, написанные в Haskell в качестве веб-сервисов SOAP.

Кто-нибудь знает какие-либо другие структуры, которые позволят мне легко писать веб-сервисы на основе SOAP с помощью Haskell?

Если нет, кто-нибудь сделал это вручную (например, используйте библиотеки XML из хака для обработки входящих запросов soap-rpc и создайте ответы, совместимые с soap-rpc)? Трудно было сделать? Любые ошибки? Это стоило усилий?

4b9b3361

Ответ 1

Поскольку HAIFA мертв, в настоящее время в Haskell нет эквивалентных рамок для веб-сервисов SOAP. Поэтому я бы посоветовал вам использовать несколько наборов фреймворков. Может быть, подходит Yesod + shoap. Я считаю такую ​​тенденцию в области SOAP WS framework в Haskell из-за плавного перехода на технологии REST/JSON. Также могут быть эти две статьи полезны для вас http://www.cin.ufpe.br/~haskell/hwsproxygen/files/HWSProxyGen.pdf а также http://www.jofcis.com/publishedpapers/2010_6_9_2859_2867.pdf

Ответ 2

Если вам просто нужно отправить ванильные XML/SOAP-сообщения, вы могли бы просто открыть соединения и прочитать/написать Aeson. Но если SOAP-сервисам нужна поддержка WS-Security, WS-Addressing и т.д., Вам будет лучше использовать существующую инфраструктуру. Например: https://metro.java.net/

Отказ от ответственности: я участвовал в Metro.

Было бы здорово иметь структуру SOAP в Haskell.