Haskell как сервер REST

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

Бэкенд Haskell должен смочь сделать аутентификацию (основной, форма, безотносительно...), отслеживать сеанс пользователя (не много данных там за исключением имени пользователя) и отправить запрос обработчикам на основе типа запроса и uri. Это должно также смочь сериализировать ответ и на xml и на json формат, в зависимости от параметра запроса.

Я предполагаю, что обработчики идеально подходят для Haskell, так как сервис является в основном не сохраняющим состояние, но я не знаю, где запустить для остальной части истории.

Поиск hackage не дал мне, много подсказывает.

Решение для чистого haskell сервера было бы предпочтено.

26
задан Marko 6 April 2010 в 14:24
поделиться

3 ответа

Недавно я написал веб-службу производственного качества для внутреннего использования. Я использовал следующие пакеты:

  • CGI & FastCGI - для базового взаимодействия с веб-сервером
  • UrlDisp - для диспетчеризации на основе URL
  • HDBC и HDBC-mysql - для доступа к базе данных
  • hexpat - для синтаксического анализа XML (некоторые запросы / ответы были основаны на XML)
  • parsec - для синтаксического анализа файла конфигурации (на стороне сервера)
  • binary и / или cereal - для разбора двоичных данных (некоторые запросы / ответы были основаны на двоичном коде) (хотя сейчас я, вероятно, использовал бы attoparsec )

Также, для другого проекта я также использую:

  • xhtml - Библиотека комбинатора XHTML

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

Я запускал службу как обработчик на основе fastCGI для Apache2 с mod_fcgid. Это выглядит надежно и эффективно. Я полагаю, что сервер на основе Haskell, скомпилированный вместе с сервисом, мог бы быть быстрее, но это было довольно разумно с очень небольшой работой. Я получил> 1400 запросов в секунду на сервере Linux с четырьмя процессорами, 2,6 ГГц.

Существует несколько чистых серверов Haskell. У большинства из них есть собственные API-интерфейсы для кода вашей службы, хотя все они очень похожи. Взгляните на:

Это, наверное, слишком много для размышлений. Сообщите нам, как это происходит!

Между тем, если вам нужна дополнительная информация, вы можете посетить HaskellWiki .

16
ответ дан 28 November 2019 в 07:20
поделиться

Я не уверен, насколько низкоуровневый уровень вы пытаетесь достичь. Если вы хотите написать свой собственный сервер, вы можете начать с чего-то вроде этого: http://lstephen.wordpress.com/2008/02/14/a-simple-haskell-web-server/

В качестве альтернативы, если вы ищете готовый фреймворк, вы можете попробовать HApps: http://happs.org/

Существует также порт Ruby-On-Rails. Turbinado или что-то в этом роде.

Наконец, есть несколько учебников по началу работы с CGI. Я использовал вот этот: http://www.haskell.org/haskellwiki/Practical_web_programming_in_Haskell (Он также был предложен в ответе @mdm)

Удачи!

2
ответ дан 28 November 2019 в 07:20
поделиться

Практическое веб-программирование на Haskell . Есть несколько модулей, которые вам пригодятся: Text.XHtml и Network.CGI.

1
ответ дан 28 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: