受到this问题和最近affair的启发,我想知道Haskell网站开发涉及什么。
答案 0 :(得分:35)
我在Haskell中完成了真正的生产Web应用程序。这是我使用的堆栈:
整个Web应用程序是一个haskell程序,编译为本机代码ghc。我编写了代码来手动执行请求路由(和反向路由)。
答案 1 :(得分:18)
首先,免责声明:我从未做过任何Haskell网络开发,所以我不会根据经验说话。
如果你看一下Hackage上的Web category,就会有很多与网络相关的软件包。
我认为大多数Haskell Web应用程序在自定义服务器上运行(可能使用Apache的mod_proxy
或IIS的高级请求路由作为前端)。但是,也有一些FastCGI绑定。
最突出的Haskell网络服务器/框架/数据存储基础设施是Happstack,由于几个原因这很有意思,最明显的是它将所有状态存储在内存中并且不使用关系数据库。 / p>
另一个更新的网络服务器界面是hack,除了1分钟的教程看起来很有趣之外我不太了解。
Haskell中有更多的Web服务器/框架,但这两个只是我所知道的最重要的。
答案 2 :(得分:13)
我使用Happstack为我们的本地Intranet创建一个简单的webapp / webservice。
只有169行Haskell代码,全部在Main.hs
中,用于定义服务器。其余的是用于演示的Javascript,以及用于测试的一些Python。
它是开源的,您可以在GitHub上查看,也许可以将其作为起点。
答案 3 :(得分:8)
有许多Web框架。查看Web类别:http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web
对于模板,HStringTemplate似乎是品牌领导者:http://hackage.haskell.org/package/HStringTemplate
运行自己的Web服务器的静态链接二进制文件(例如,happstack-server或其他Haskell Web服务器之一),Haskell二进制文件与Apache交谈,......几乎可以想到的每个组合。
没有。由于类型系统,您将获得更强大的保证应用程序没有故障。
hpaste是一个简单的快乐堆栈演示。 Tupil.com的整个业务是Haskell网络应用程序。德意志银行去年在CUFP上就其内部Haskell网络框架(基于happstack)发表了演讲。
答案 4 :(得分:6)
首先,该死的“事情”链接不是最有趣的事情之一!
现在,当我在另一个链接上发布答案时,我认为在Haskell网站上并没有发生太多事情。你有Happstack,也许还有其他一些似乎无处可去的框架。那你就得到了FastCgi。
如果你喜欢我,那么FastCgi可能足以满足你的大部分需求。我发现,大多数客户并没有真正存在规模问题(此外,对于Ruby人来说,它还不错,对吧)。
如果FastCgi不是你的速度......好吧,也许是雅马声或升力(分别是Erlang和Scala)值得一看。