Я недавно написал качественный веб-сервис для внутреннего использования.Я использовал следующие пакеты:
- CGI & FastCGI - для базового интерфейса веб-сервера
- UrlDisp -для диспетчеризации на основе URL
- HDBC & HDBC-mysql - для доступа к базе данных
- hexpat - для анализа XML (некоторыезапросы / ответы были основаны на XML)
- парсек - для разбора файла конфигурации (на стороне сервера)
- двоичный & / или cereal - для разбора двоичных данных (некоторые запросы / ответы основаны на двоичном коде) (хотя я бы, вероятно, использовал attoparsec сейчас)
Кроме того, для другого проекта,Я также использую:
- xhtml - библиотека комбинаторов XHTML
Ни один из этих компонентов самого высокого уровня не доступен для Haskell, но онивсе вполне работоспособно и достаточно полно.Я избегал высокоуровневых абстракций, поскольку мне нужно было встроить их в существующую более крупную систему, и эти пакеты работают так же, как аналогичные компоненты, которые я использовал в других проектах веб-служб.
Я запустил службу как fastCGIоснованный обработчик для Apache2 w / mod_fcgid.Это кажется надежной и эффективной установкой.Я полагаю, что сервер на основе Haskell, скомпилированный вместе со службой, может быть быстрее, но это было довольно разумно при минимальной работе.Я получаю> 1400 запросов в секунду на четырехъядерном процессоре, 2,6 ГГц, на сервере Linux.
Существует несколько чистых серверов Haskell.Большинство из них имеют свои собственные API для кода вашего сервиса, хотя все они довольно похожи.Взгляните на:
Это, вероятно, много, чтобы пережевать.Дайте нам знать, как это происходит!
Между тем, если вам нужна дополнительная информация, вы можете посетить HaskellWiki .