Haskell Web开发的生态系统是什么?[关闭]


80

这个问题和最近的事情启发,我想知道Haskell Web开发涉及什么。

  • 是否有Haskell Web框架或模板引擎?
  • 托管Haskell网站将如何工作,是否有合适的Web服务器?
  • 对于通常用于Web开发的常规快速开发和基于原型的工作流程,Haskell是否过于复杂?
  • 是否有现有Haskell Web应用程序的示例?

11
我不认为这是重复的。另一个问题是询问有关将Haskell作为第一语言进行网络开发的知识。该问题专门询问存在哪些框架,模板引擎和Web服务器。也许这个问题可以重做?
汤姆·洛霍斯特

2
这就是为什么我将其从另一个问题中分支出来的原因,该问题主要是获得有关学习其他语言的建议的答案。这个问题有不同的重点,特别是针对Haskell的生态系统中基于Web的项目。:-/
deceze

7
我想要这个开放时间
CiscoIPPhone

@deceze我对您的问题做了一些修改。具体来说,我使标题与其他问题更加不同。
汤姆·洛霍斯特

@汤姆,谢谢!希望这可以更好地区分它。
deceze

Answers:


18

首先,免责声明:我从未做过Haskell Web开发,所以我不会凭经验说话。

如果您在Hackage上查看Web类别,则有很多与Web相关的软件包。

我认为大多数Haskell Web应用程序都在自定义服务器上运行(可能使用Apachemod_proxy或IIS的Advanced Request Routing作为前端)。但是,也有一些FastCGI绑定。

Haskell最著名的webserver / framework / datastorage基础结构是Happstack,其有趣的原因有很多,最明显的是它将所有状态存储在内存中,并且不使用关系数据库。

另一个较新的Web服务器界面是hack,除了1分钟的教程看起来很有趣之外,我对其了解不多。

Haskell中还有更多的网络服务器/框架,但这两个只是我脑海中最清楚的部分。


36

我已经在Haskell中完成了实际的生产Web应用程序。这是我使用的堆栈:

整个Web应用程序是一个单独的haskell程序,已编译为本地代码ghc。我编写了代码来手动执行请求路由(和反向路由)。


14

我已经使用Happstack为我们的本地Intranet创建一个简单的webapp / webservice。

  • 它通过事务日志将数据存储在内存中以进行恢复(Happstack的标准配置)。在任何地方的代码中都找不到SQL。
  • 没有模板。我通常会用Java模板处理模板。只需获取JSON格式的数据,然后将其放入DOM中即可。

只有169行Haskell代码(全部位于Main.hs中)定义了服务器。其余的是用于演示的Javascript,以及一些用于测试的Python。

它是开源的,您可以在GitHub上检出它,也可以将其用作起点。


1
第82行,您忘记了右引号。
雷恩

10
Haskell允许在标识符中使用引号。不幸的是,github的语法突出显示超出了这一点。
午餐2009年

9
  • 是否有Haskell Web框架或模板引擎?

有许多Web框架。在“ Web”类别中查找:http : //hackage.haskell.org/packages/archive/pkg-list.html#cat :web

对于模板,HStringTemplate似乎是品牌领导者:http ://hackage.haskell.org/package/HStringTemplate

  • 托管Haskell网站将如何工作,是否有合适的Web服务器?

运行自己的Web服务器(例如happstack-server或其他Haskell Web服务器之一)的静态链接的二进制文件,与Apache对话的Haskell二进制文件,...几乎可以想到的每种组合。

  • 对于通常用于Web开发的常规快速开发和基于原型的工作流程,Haskell是否过于复杂?

不会。由于类型系统,您将获得更强大的保证,以确保应用程序不会出现故障。

  • 是否有现有Haskell Web应用程序的示例?

hpaste是happstack的简单演示。Tupil.com的整个业务是Haskell Web应用程序。德意志银行去年在CUFP上发表了有关其内部Haskell Web框架(基于happstack)的演讲。


好吧,Tupil还进行了大量iPhone应用程序开发(在Objective C中)。他们不仅仅做Haskell Web应用程序。
汤姆·洛霍斯特

7

首先,该死的链接是否不是有史以来最有趣的事情之一!

现在,虽然我在另一个链接上发布了答案,但是我认为Haskell网站上没有发生太多事情。您已经有了Happstack,也许还有其他一些似乎没有用的框架。然后,您有了FastCgi。

如果您喜欢我,那么FastCgi可能足以满足您的大多数需求。我发现,大多数客户并没有真正的规模问题(此外,它对Ruby人士来说足够好了,对)。

如果FastCgi不是您的速度...那么,也许偏航或升降(分别是Erlang和Scala)值得一看。


骨先生努力做到这一点。
丹尼尔(Daniel)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.