Haskell网站开发的生态系统是什么?
受到这个问题和最近的事情的启发,我想知道Haskell web开发涉及到什么。
- 有没有Haskell网页框架或模板引擎?
- 如何托pipe一个Haskell网站工作,有适合的networking服务器?
- 对于通常在Web开发中常用的快速开发和基于原型的工作stream,Haskell是否太复杂?
- 有没有现有的Haskellnetworking应用程序的例子?
首先,一个免责声明:我从来没有做过任何Haskellnetworking开发,所以我不会从经验中发言。
如果您查看Hackage上的Web类别 ,则有许多与Web相关的软件包。
我认为大多数Haskell Web应用程序运行在一个自定义服务器上(可能使用Apache的mod_proxy
或IIS的高级请求路由作为前端)。 但是,也有一些FastCGI绑定。
最突出的Haskellnetworking服务器/框架/数据存储基础设施是Happstack ,有几个原因很有意思,最明显的是它将所有状态存储在内存中,而不使用关系数据库。
另一个更新的Web服务器界面是黑客 ,除了1分钟的教程看起来很有趣之外,我不太了解它。
Haskell中还有更多的Web服务器/框架,但这两个只是我所知道的头脑中的那些。
我在Haskell中完成了真正的生产Web应用程序。 这是我使用的堆栈:
- PostgreSQL数据库后端
- HDBC Postgres连接到它
- XHTML来生成Html。 这是一个有趣的语法,但至less你有lambda-抽象。
- Fastcgi将后端连接到lighttpd ,执行Web服务。
整个Web应用程序是一个单一的haskell程序,编译为本地代码ghc。 我写了代码来手动请求路由(和反向路由)。
我已经使用Happstack为我们的本地Intranet创build一个简单的webapp / webservice。
- 它使用事务日志将数据存储在内存中进行恢复(Happstack标准)。 你不会在任何地方的代码中findSQL。
- 没有模板。 通常用模板做什么,我用Javascript做。 只需以JSON格式获取数据,并将其放入DOM。
Haskell代码只有169行,全部在Main.hs
中定义了服务器。 其余的是用于演示的Javascript,以及一些用于testing的Python。
它是开源的,你可以在GitHub上查看,也可以用它作为起点。
- 有没有Haskell网页框架或模板引擎?
有许多网页框架。 查看Web类别: http : //hackage.haskell.org/packages/archive/pkg-list.html#cat :web
对于模板,HStringTemplate似乎是品牌的领导者: http ://hackage.haskell.org/package/HStringTemplate
- 如何托pipe一个Haskell网站工作,有适合的networking服务器?
静态链接的二进制文件运行自己的Web服务器(例如happstack服务器或其他Haskellnetworking服务器之一),Haskell二进制文件与Apache交谈,…几乎所有你能想到的组合。
- 对于通常在Web开发中常用的快速开发和基于原型的工作stream,Haskell是否太复杂?
不会的。你会得到更强大的保证,由于types系统,应用程序没有错误。
- 有没有现有的Haskellnetworking应用程序的例子?
hpaste是一个简单的演示happstack。 Tupil.com整个业务是Haskellnetworking应用程序。 德意志银行(Deutsche Bank)去年在CUFP上就内部的Haskellnetworking框架(基于happstack)进行了演讲。
首先,该死的,如果这个“外遇”环节不是最有趣的事情之一!
现在,当我在另一个链接上发布了一个答案的时候,我认为Haskell网站并没有太多的发展。 你有Happstack,也许还有一些其他的框架,似乎没有去任何地方。 那么你有FastCgi。
如果你喜欢我,那么FastCgi可能足够满足你的大部分需求。 我发现,大多数客户并没有真正的规模问题(而且,对ruby人来说也是足够好的)。
如果FastCgi不是你的速度,那么可能是雅可比(Erlang和Scala),值得一看。