标准的web服务器接口,相当于WSGI/Rack for Haskell



有(事实上的)编程语言的标准web服务器接口,例如Python的WSGI, Ruby的Rack。Haskell也有类似的东西吗?我发现了两个试验,Hack和HSGI,但我不确定哪一个(或另一个)在Haskell领域更受欢迎。

等待Haskell大师的建议!

Haskell事实上的标准是WAI (Web Application Interface)。它由流行的Haskell web框架Yesod支持,并且在Hackage上有几个围绕这个接口构建的包。

人们普遍认为目前有三个主要的Haskell web框架:Happstack, Yesod和Snap(按时间顺序排列)。每个框架都有自己的web服务器。其他web服务器也曾尝试过,但似乎都没有成功。Happstack计划在不久的将来更换网络服务器(可能是Yesod使用的Warp)。所以这留给我们两个现代主流的web服务器在Haskell: Snap和Warp(也是按时间顺序)。

Warp符合wai包中定义的接口,这似乎是在尝试定义一个标准的web服务器接口。然而,WAI仅被当前主流的Haskell web服务器之一所使用,所以我根本不明白如何能够令人信服地证明它是一个真正的标准。只有当标准化的玩家真正被区分开来时,你从标准化中获得的边际收益才有用,而在Snap和Warp的例子中,我不相信它们是如此。我能想到的唯一区别Warp和Snap的地方是,在简单的pong基准测试中,Warp比Snap表现得更好。但我从来没有听到有人抱怨Snap太慢,所以Warp的速度似乎并没有真正区分它。

此外,WAI在Snap或Warp出现之前就出现了。当Snap问世时,我们对界面应该是什么样子有不同的看法,这使得WAI不适合我们。WAI也从那时开始发展,这进一步支持了它不成熟的论点。毕竟,如果一个标准不断变化,那它还有什么用呢?

如果新的Haskell web服务器具有各种不同的功能和创新,那么我确信共性将从中出现,从而可以开发出真正的标准。但在此之前,我认为web服务器的选择是相当无关紧要的。Warp和Snap都是很好的web服务器,不应该在你使用哪个框架的更大选择中扮演重要角色。

最新更新