我想在一个较小的项目上尝试Haskell,它应该非常适合它。
我想将其用作小型ajax应用程序的后端。

Haskell后端应该能够进行身份验证(基本,表单等),跟踪用户 session (除了用户名之外那里没有多少数据)并能够基于uri和请求类型将请求分派(dispatch)给处理程序。根据请求参数,它还应该能够将响应序列化为xml和json格式。

我想这些处理程序非常适合Haskell,因为该服务基本上是无状态的,但是我不知道故事的其余部分从哪里开始。

搜索黑客并没有给我太多提示。

纯Haskell服务器的解决方案将是首选。

最佳答案

我最近编写了一个供内部使用的生产质量Web服务。我使用了以下软件包:

  • CGIFastCGI —用于基本的Web服务器接口(interface)
  • UrlDisp —用于基于URL的调度
  • HDBCHDBC-mysql —用于数据库访问
  • hexpat —用于XML解析(某些请求/响应基于XML)
  • parsec —用于解析配置文件(在服务器端)
  • binary和/或cereal —用于二进制数据解析(某些请求/响应基于二进制)(尽管我现在可能现在使用attoparsec)

  • 另外,对于其他项目,我也在使用:
  • xhtml — XHTML组合器库

  • 这些都不是可用于Haskell的最高级别的组件,但是它们都很可行且相当完整。我避免使用更高级别的抽象,因为我需要将其适应于现有的大型系统中,并且这些包的工作方式与我在其他Web服务项目中使用的类似组件相同。

    我将该服务作为Apache2 w / mod_fcgid的基于fastCGI的处理程序运行。这似乎是可靠且有效的设置。我想与服务一起编译的基于Haskell的服务器可能会更快,但这在很少工作的情况下还是很合理的。我在2.6 GHz四核Linux服务器上每秒收到1,400个请求。

    有几台Haskell纯服务器。尽管它们都非常相似,但大多数都为服务代码提供了自己的API。看一眼:
  • hackhack-handler-simpleserver(具有用于调用写入CGI / FastCGI Directl的代码的适配器:hack-handler-cgihack-handler-fastcgi)
  • Happstack
  • hyena(使用wai接口(interface),请参阅wai-extra)。

  • 这可能要花费很多。让我们知道怎么回事!

    同时,如果您想了解更多信息,可以访问HaskellWiki

    关于rest - Haskell作为REST服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2585344/

    10-11 22:33
    查看更多