代码之家  ›  专栏  ›  技术社区  ›  Yuval Adam

你在二郎的氮气方面有什么经验?

  •  27
  • Yuval Adam  · 技术社区  · 14 年前

    我一直在检查 Nitrogen Project 它应该是Erlang最成熟的Web开发框架。

    二郎作为一种语言,令人印象深刻。然而,关于氮,我不太热衷于使用Erlang的非常不常见的语法(除非您是Prolog本地人)来构建UI。

    与其他人相比,你对它有什么经验? 主流 Web框架,如django或rails?

    4 回复  |  直到 12 年前
        1
  •  31
  •   Warren Young    14 年前

    到目前为止,我对氮做的很少,但我已经监视邮件列表几个月了,所以我想我有一些有用的话要说。

    对于您对Erlang和Nitrogen框架语法的关注,我认为这听起来像是一个纯粹的不熟悉的案例,而不是不适合的案例。客观地说,HTML不是一种漂亮的语言,它有很多奇怪之处。你现在已经习惯了,所以看起来还不错。给氮气/二郎一次机会,你可能会发现你很快就习惯了。

    对于您关于与其他语言和框架进行比较的问题,我想说最大的区别是,使用氮气,整个网站都直接由Erlang运行时提供服务。RubyonRails有这样的模式,但它只用于测试。许多其他框架甚至不提供在一个长期运行的流程中运行所有内容的选项。

    在一个长期运行的过程中运行整个Web应用程序及其基础架构对站点的运行方式有着重大影响:

    • 使用Apache,每个孩子都会在n个连接中被杀死,其中n=500左右,您不能说给定的孩子是否总是处理给定客户机的所有请求。由于HTTP是无状态的,但Web应用程序几乎总是需要一些客户机状态,因此作为处理新连接的一部分,Apache子级必须重建其客户机状态视图。默认情况下,这意味着返回磁盘以获取存储在该客户机上的持久数据。还有其他选择,比如 memcached 但这些并不是内置在灯型灯管的核心。有了Erlang,没有什么东西会定期终止,而且Erlang提供了标准的工具,比如提供磁盘备份到内存DBS的mnesia。

      顺便说一下,如果你熟悉 nginx 它建立在与二郎相同的原则之上,而且它的速度也是出于同样的原因。nginx和运行Web服务器的erlang实例的主要区别在于nginx不是编程环境,因此它仍然需要将大量处理委托给外部代码。这意味着它与Apache共享相同的IPC和持久状态问题。

    • 因为运行时是连续运行的,并且是一个完全功能化的编程环境,所以您可以在Erlang中构建系统的更多部分,而不是使用捆绑在一起的灯类型堆栈。这放大了上述好处。系统的各个部分可以通过消息传递和记忆而不是重量级的IPC和MySQL进行协调,所有的部分都可以持续运行,从而减少了耗时的状态重建。

    • 十几个访问持久客户机状态数据存储的Apache子系统都是基于锁的发球。这些框架都可以透明地处理锁定等问题,但它们不能隐藏的是正确执行所有这些操作所需的时间。

      Erlang是一种不纯的函数式语言,它意味着但不需要数据纯度;它也是基于多处理的思想构建的,并深入到运行时设计的核心。这两个事实意味着,在基于Erlang的服务器上等待锁的时间比在其他框架上天真地构建锁的时间要少。当然可以优化其他系统中的锁延迟,但这真的是您想要做的吗?您是想加入第一千个团队,在服务变得流行之后学习如何优化其Web堆栈,还是希望将其全部留给工具,这样您就可以花时间做别人还没有做过的事情?

        2
  •  6
  •   Community CDub    7 年前

    我也曾经担心笨拙的Erlang语法。我已经构建了一些工具来缓解日常Web编程的烦恼,也许您会发现其中一个或两个工具都有帮助:

    • ErlyDTL 是Django模板语言的Erlang实现;它在氮气中不可用,但在Zotonic、Erlang Web、Beepepeep和Chicago Boss等其他框架中可用。

    • Chicago Boss 是一个完整的堆栈erlang框架,它执行大量代码生成,这样您就可以使用函数调用访问数据字段,而不是使用erlang的冗长记录语法(例如 Person:name() 而不是 Person#person.name )

    请注意,氮气不包括数据库层,因此它不能真正与Rails或Django相比较。要全面比较数据库驱动框架,请查看我对stackoverflow问题的回答:

    https://stackoverflow.com/questions/1822518/current-state-of-erlang-web-development-frameworks-template-languages/2898271#2898271

        3
  •  4
  •   Ted Karmel    14 年前

    我要结账离开 Webmachine 如果我是你。它非常简单、快速,界面由您决定。

        4
  •  3
  •   dsmith    14 年前

    Erlang Web 也应该被认为是成熟的。它是一个MVC框架,而氮气更基于事件。这是一个偏好问题。

    除了WebMachine之外,我没有使用这里提到的其他工具,我认为它是一个很好的工具,但它不像其他工具那样是一个Web框架。它是HTTP处理器,非常适合构建一个RESTful接口。

    我还建议您给Erlang语法一次机会。二郎是我最喜欢使用的语言之一。

    推荐文章