【问题标题】:What is the ecosystem for Haskell web development? [closed]Haskell Web 开发的生态系统是什么? [关闭]
【发布时间】:2009-08-10 06:16:45
【问题描述】:

this 问题和最近的affair 启发,我想知道 Haskell Web 开发涉及什么。

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

【问题讨论】:

  • 我不认为这是重复的。另一个问题是关于学习 Haskell 作为第一语言,以进行 Web 开发。这个问题专门询问存在哪些框架、模板引擎和 Web 服务器。也许这个问题可以重做?
  • 这正是我将其从另一个问题中分支出来的原因,该问题主要是获得有关学习其他语言的建议的答案。这个问题有不同的关注点,特别是 Haskell 生态系统中以网络为中心的项目。 :-/
  • 我想要这个打开
  • @deceze 我稍微修改了你的问题。具体来说,我使标题与其他问题更加不同。
  • @Tom 谢谢!希望这能更好地区分它。

标签: haskell


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    首先,免责声明:我从来没有做过任何 Haskell Web 开发,所以我没有经验。

    如果您查看 Hackage 上的 Web category,就会发现有很多与网络相关的软件包。

    我认为大多数 Haskell Web 应用程序在自定义服务器上运行(可能使用 Apache 的 mod_proxy 或 IIS 的高级请求路由作为前端)。不过,也有一些 FastCGI 绑定。

    最突出的 Haskell 网络服务器/框架/数据存储基础设施是 Happstack,它之所以有趣有几个原因,最明显的是它将所有状态存储在内存中并且不使用关系数据库。

    另一个较新的网络服务器接口是hack,除了 1 分钟的教程看起来很有趣之外,我不太了解。

    Haskell 中有更多的网络服务器/框架,但这两个只是我知道的。

    【讨论】:

      【解决方案3】:

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

      • 它将数据与用于恢复的事务日志一起存储在内存中(Happstack 的标准配置)。您不会在任何地方的代码中找到 SQL。
      • 没有模板。通常使用模板做什么,我用 Javascript 做。只需获取 JSON 格式的数据,并将其放入 DOM。

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

      它是开源的,您可以在GitHub 上查看它,也许可以以此为起点。

      【讨论】:

      • 第 82 行,您忘记了结束引号。
      • Haskell 允许在标识符中使用引号。可悲的是,github 的语法高亮超出了这一点。
      【解决方案4】:
      • 是否有任何 Haskell 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 网络应用程序。德意志银行去年在 CUFP 上就其内部 Haskell Web 框架(基于 happstack)发表了演讲。

      【讨论】:

      • 嗯,Tupil 也做了很多 iPhone 应用程序开发(在 Objective C 中)。他们不只是做 Haskell 网络应用程序。
      【解决方案5】:

      首先,该死的,如果那个“外遇”链接不是有史以来最有趣的事情之一!

      现在,虽然我在另一个链接上发布了答案,但我认为 Haskell 网络领域并没有发生太多事情。你有 Happstack,也许还有一些其他的框架似乎无处可去。那么你就有了 FastCgi。

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

      如果 FastCgi 不是你的速度......好吧,也许 yaws 或 lift(分别是 Erlang 和 Scala)值得一看。

      【讨论】:

      • 博恩先生在这件事情上很努力。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多