【问题标题】:Considering an Erlang web framework to learn and use in production考虑在生产环境中学习和使用 Erlang Web 框架
【发布时间】:2010-12-20 04:21:17
【问题描述】:

我几天前开始学习 Erlang,它绝对是一门非常有趣的语言,非常适合 Web 开发(至少是后端)。我将尝试并最终选择一个 Erlang Web 框架来用于我的下一个项目。由于 Erlang 是“@​​987654321@”,因此很难决定使用哪个框架(即缺乏文档和博客文章)。到目前为止,我的 googleing 已经返回了 3 个结果,我想知道任何有 Erlang 经验(尤其是 Erlang Web 开发)的人请评论每个框架的优缺点并添加任何缺少的框架。

项目要求:

  1. 网络应用程序
  2. 数据库
  3. HTTPs
  4. 存储文件(例如图像)
  5. PDF 操作
  6. 动态逻辑比较(例如 LHS == RHS 等)

Erlang 网络框架:

  1. Nitrogen(目前首选)
  2. Erlyweb
  3. BeepBeep
  4. Chicago Boss
  5. Erlang Web
  6. webmachine

Erlang 数据库:

  1. Mnesia(目前首选)
  2. CouchDb
  3. MongoDB

问题:

  1. 氮气

    • JavaScript 生成

      由于 Nitrogen 生成 JavaScript 代码并将其嵌入到页面中,从而增加了页面大小。我不确定是否有可能以某种方式从原始 html 中“分离”生成的 JavaScript 代码(以某种方式它可以被浏览器缓存)以减少通过网络传输的数据。但我认为一般的事件模型和自动连线事件非常适合应用程序类型,但不太适合内容/面向公众的类型。

【问题讨论】:

  • 我可能对“Erlang Web 框架”的定义有误,但 Erlang Web 和 Yaws 也应该存在。还有这个新的 Zotonic CMS,它可能对你有好处。
  • 说到数据库,Mnesia 是唯一可以用作“纯 Erlang”的数据库。将 CouchDB 破解为“仅限 Erlang”并非易事,而且似乎不是他们的主要目标。所以你不妨想想所有其他新时代的数据库,例如 MongoDB、TokyoCabinet 等。每个数据库至少有两个或三个 Erlang“驱动程序”。另外,Erlang 配备了 ODBC,所以...
  • 我注意到这没有被提及,但我遇到了它 - chicagoboss.org
  • 几周前我在谷歌搜索时见过芝加哥老板,但不知何故,我完全忘记了写这个问题的时间!这可能是那个项目的名称,我只是拒绝认为它是一个 Erlang Web 框架!!! ^_^
  • @Zed,Yaws 不是用 Erlang 编写的 Web 服务器吗? MochiWeb 也是如此。

标签: web-applications frameworks erlang


【解决方案1】:

This 博客文章比较了几个 Erlang Web 框架。

【讨论】:

  • 我真的很想看看 Nitrogen 与 BeepBeep 之间的比较。
【解决方案2】:

就我个人而言,我使用 mongodb(因为它具有原生 erlang 驱动程序和其他优点)和 webmachine 用于 URL 调度。我喜欢拥有非常简单的线框 HTML 并且主要将 JSON 从 webmachine 和 mongodb 输送到前端以由 JQuery 或其他任何东西处理的想法。然而,另一个有趣的前端是卡布奇诺。

【讨论】:

  • 我认为 Web 开发的未来将是前重后重。 Front Heavy 表示使用 SproutCore 等工具的完整 JavaScript 客户端。 Back Heavy 意味着企业级平台,例如 Erlang。我正在学习 Erlang 并探索网络堆栈来学习,到目前为止,这是我的选择: * JavaScript 作为前端:因此 Nitrogen 似乎不太适合。 * Webmachine/Mochiweb:用于 URL 调度和 Web 服务器 * ErlyDTL:用于 HTML 模板语言 * Riak:作为后端数据库
【解决方案3】:

我正在使用 CouchDb。这是我写的a quick start guide。它是俄语的,但代码示例很清楚。我之所以选择这个数据库引擎,是因为它是用 Erlang 编写的,并且有关于不同开发语言的良好文档、示例和库。

我正在使用 BeepBeep,因为它是我发现的最轻量级的框架。 Earlyweb 对我的任务来说太大了。

【讨论】:

  • 如果您通过 HTTP 与 CouchDB “编写在 Erlang 上”进行通信,对您有什么好处?
  • 拥有一个“统一的技术堆栈”对于操作/监控来说非常好(该死,感觉很流行)。
  • 当我可以查看 CouchDb 源代码时,更容易理解它是如何工作的。
  • 确实会很好,如果您不必在单独的虚拟机中运行它们,使用 JSON over HTTP 在两者之间进行通信。此外,如果您查看 CouchDB 依赖项列表,它与任何东西都远非“统一”:)
  • 我相信 Mnesia 是用 Erlang 编写的。我也相信 Mnesia 和 Erlang 是“统一的”。 www.mdstud.chalmers.se/~md1matso/erlanglinkfaulttolerance.pdf
【解决方案4】:

VoltDB (http://voltdb.com/) 是一个开源和商业数据库、ACID、可扩展和非常高的吞吐量(是领先 OLTP DBMS 的 50 倍)。 VoltDB 最近由 Henning Deidrich 开发了 erlang 客户端 API。只需加入论坛并找到 henning。

【讨论】:

  • 不,我不认为这是垃圾邮件。这是真的。
【解决方案5】:

正如前面的回答所说,VoltDB 提供了大规模的高性能 OLTP 功能(事务和 ACID)。 http://community.voltdb.com/getinvolved#svn

提供了一个 Erlang 客户端库

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2011-10-25
    • 2021-11-12
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多