Elixir和Phoenix是2022年Web应用程序的绝佳选择
- admin
- 13 Dec 2023
如何在 2022 年为应用选择最佳的 Web 编程语言和框架?这是可能吗?我相信是的,在这篇博文中,我将尝试说服您为什么 Elixir 和 Phoenix 是您正在寻找的完美组合。 ## Elixir: 生产力等于更少的成本 生产力仍然是编程语言的一个被大大低估的特性。一般来说,市场上的大多数应用程序都必须实现一些业务目标,众所周知,我们产生的成本越少
Read More如何在 2022 年为应用选择最佳的 Web 编程语言和框架?这是可能吗?我相信是的,在这篇博文中,我将尝试说服您为什么 Elixir 和 Phoenix 是您正在寻找的完美组合。
生产力仍然是编程语言的一个被大大低估的特性。一般来说,市场上的大多数应用程序都必须实现一些业务目标,众所周知,我们产生的成本越少,利润就越高。
编程劳动力并不便宜,这就是生产力很重要的原因。简而言之,如果我们可以编写更少的代码同时提供相同的功能,我们认为编程语言是高效的。这就是Ruby被赋予生命的原因,虽然从设计上讲,它不是一种可以用来创建高性能应用程序的技术,但它实际上做了一件非常好的事情——它非常高效。它实际上仍然是,这就是为什么你可以找到如此多的大型应用程序,比如Shopify是基于它的。那么…为什么不选择 Ruby 呢?
在某些情况下,生产力是有代价的,对于 Ruby 来说,这是一个性能和可扩展性问题,这就是我们如何找到这篇博文的主角 – Elixir。这种语言的一个关键假设是支持良好的可维护性和易用性,同时不会让开发人员使用在广泛使用时可能会使代码库过于复杂的机制。
然而,上述并不是 Elixir 高效的唯一原因。让我们深入挖掘其强大的生产力能力。
听起来很奇怪吧?当然,许多开发人员会不同意它,但在多年面向对象编程之后,我认为 Elixir 在易用性方面是生产力的圣杯。一旦你掌握了这种语言的基本概念,它就非常容易使用功能范式,最终很容易描述:
在函数式编程语言中,您使用不可变数据作为产生结果的函数的输入。相同的输入总是产生相同的输出。
与面向对象编程相比,函数式范式的核心假设给您信心。
这种语言的设计非常周到。Elixir 中有两个核心概念——模块和函数。一旦你学会了这些,你就可以编写代码了。
整个应用程序被组织在模块中,这些模块用作创建基于域的功能分类的容器。没有类、接口、头文件和其他我们不需要编写工作和高性能应用程序的样板文件。
在 Web 编程世界中应该被认为是一流的机制已经在这里。例如,在 Elixir 中,您可以使用:
仅举几例。简而言之,使用 Elixir,您不必担心使用旧机制来解决现代问题。
这种语言中使用的简洁明了的架构设计和现代编程技术使您可以编写更少的代码,就像在 Ruby 中一样。
Elixir 建立在 Erlang 虚拟机 (Erlang VM) 之上,并利用了它的所有优点。让我快速描述一下为什么 Erlang 会被赋予生命:
Erlang 运行时系统专为具有以下特征的系统而设计:分布式;容错;软实时;高可用;不间断的程序;热交换,可以在不停止系统的情况下更改代码。
听起来像是每个开发者的梦想,对吧?
根据Cisco的说法:“90% 的互联网流量都通过 Erlang 控制的节点”,同时,由 Erlang VM 处理的电话系统中仍有大量流量。Erlang 被设计为在高可用性、可伸缩性、容错性和性能很重要的环境类型中运行。
为什么你会关心 Web 编程中的 Erlang?好吧,一旦您的应用程序获得了一些真正的流量,它就需要轻松扩展,并且不能同时中断。这是许多初创公司创始人在开发他们的第一个最小可行产品(MVP)时没有考虑到的。
一旦您的应用程序变得流行,您不能只考虑将其切换到另一种编程语言。在这一步明智地选择意味着未来的成本要低得多,这就是 Elixir 的亮点——它不仅高效,而且还允许您扩展。你需要证明吗?Discord能够通过 Elixir 扩展到 5000000个并发用户。
如前所述,Elixir 的特性之一是出色的容错能力(继承自 Erlang)。如今,对于企业及其客户而言,停止交付因停机而导致的数字化产品或服务是不可接受的。
让我们看一些数字(来源):
更不用说最近的 Facebook 中断导致该公司损失了近 1 亿美元的收入,并导致许多用户的信任度大幅下降。
正如您所看到的,没有停机时间,这是您在构建 Web 应用程序时应该考虑的编程语言的另一个特性。Elixir 提供稳定性。
一些开发者会说 Elixir 不够成熟,它只是一种小众语言。我不同意。虽然它自 2014 年就已经存在(第一个发行说明可以在这里找到),但说它只有 7 年的历史并不合适。
Elixir 是基于 Erlang 的,它继承了它的所有优点和经验。由于 Erlang 自 1986 年就存在,可以肯定地说,与大多数著名的 Web 编程语言相比,Elixir 是最成熟和经过验证的语言。如果不考虑 Erlang,就无法描述 Elixir 的功能。
同时,也有大品牌在使用 Elixir 和 Erlang。让我们仅举几例:
使其成熟的不仅是大公司的广泛生产采用,还有编程库的可用性。现在对我来说可以肯定地说,在 Elixir 生态系统中,您几乎可以找到适用于您需要的任何用例的库。当然,可能需要为第三方服务编写一些 API 客户端代码,但无论如何您都不会面对最流行的编程语言。
这一切让我觉得Elixir毕竟是成熟的。
Phoenix 框架是 Elixir 的亮点。它以一种非常优雅的方式内置,并为您提供构建强大的 Web 应用程序和高级 API 所需的一切。一旦您了解了Phoenix 中的Plug.Conn是什么。您开始将应用程序视为具有不同职责的一组层。这很有帮助。
使用Phoenix和Absinthe,您可以构建现代 GraphQL API。由于对 WebSocket ( Phoenix Channels )的内置支持,您可以在一台机器上同时处理超过 200 万用户!这有多疯狂?
然而,真正将 Phoenix 与其他现代 Web 框架区分开来的是Phoenix Live View。这只是构建反应式实时服务器渲染 HTML 的绝佳方式。这是什么意思?这意味着在大多数情况下,您可以忘记编写 JavaScript 和 React。您可以留在 Elixir 世界中,在服务器端定义实时组件,无需 JS 代码。
有一些充分的理由声称 Elixir 是安全的。
首先,Elixir 对不可变数据进行操作,这最终意味着不会有数据处理的副作用。函数式编程语言的这一特殊特性有一些非常好的好处。它允许您以可预测的方式编写和测试代码,并为您节省大量调试时间。如前所述,函数式语言没有副作用,这是一种解脱。
其次,Phoenix 框架具有定义明确的层,由于其功能性,这些层更容易控制。您可以清楚地看到请求处理的每个步骤,这使得导航更容易,因此可以生成安全可靠的应用程序。
最后,如果您研究 Elixir 的用例,您会发现它用于金融服务(如Klarna)以及大型消息传递应用程序(如 Discord)。不会破坏或泄漏的商业大型应用程序只是 Elixir 和 Phoenix 安全性的绝佳证明。
Elixir 社区非常有帮助和支持。快速浏览一下Elixir 论坛就可以证明这一点。从我的角度来看,这一切都归结为程序员的满意度。Elixir 不仅在最受喜爱的编程语言中名列前茅,而且收入也是最高的。如果您考虑招聘,这是一个很大的优势。
你可以选择更流行的语言,但毕竟你要明白程序员的满意度和参与度才是带来结果的。
幕后的人是Elixir的力量。我有信心说 José Valim(Elixir 的创造者)是 Elixir 如此出色的语言的主要原因。他是一个非常聪明和多产的人,你会经常看到他参与关于 Github 问题或论坛的讨论。他作为 Ruby 核心贡献者的经验在创建 Elixir 的过程中带来了红利,它现在结合了各种编程语言的最佳优势。将编程语言的发展导向正确的方向并不容易。他在这一步做得很好。
Phoenix Framework 的创建者 Chris McCord 是另一个谦逊而敬业的人,他为我们带来了一些很棒的东西,比如 Phoenix Live View,你在其他地方很难找到。
查看 Google 趋势中的编程语言流行度图表并不足以为 Web 应用程序选择一种编程语言。您必须了解该技术的所有功能才能做出可靠的决定。Elixir 拥有一切——生产力、稳定性、安全性和可扩展性。它也受到程序员的喜爱,大公司在生产中使用它。
为什么您会在 2022 年为 Web 应用程序选择一种编程语言,它可以让您快速创建 MVP 但无法扩展?明智地选择,Elixir 可能就是你要找的那个。
如何在 2022 年为应用选择最佳的 Web 编程语言和框架?这是可能吗?我相信是的,在这篇博文中,我将尝试说服您为什么 Elixir 和 Phoenix 是您正在寻找的完美组合。 ## Elixir: 生产力等于更少的成本 生产力仍然是编程语言的一个被大大低估的特性。一般来说,市场上的大多数应用程序都必须实现一些业务目标,众所周知,我们产生的成本越少
Read More如果您最近一直在关注 Twitter,您可能已经看到有关 Phoenix Web 框架可以处理的并发连接数的显著增加的文字。这篇文章记录了一些用于执行基准测试的技术。 ## 它是如何开始的 几周前,我试图对连接数进行基准测试,并设法在我的本地计算机上获得 1k 个连接。我对这个数字不太确信,所以我在 IRC 上发帖,看看是否有人对 Phoenix cha
Read More我开始使用 Elixir 大约有一年了。起初,我只打算在博客中使用这种语言,认为它可以帮助我更好地说明 Erlang 虚拟机(EVM)的优势。然而,我立即被这种语言所带来的魅力所吸引,并很快将其引入了我当时正在开发的基于 Erlang 的生产系统。如今,我认为 Elixir 是开发 EVM 支持系统的更好选择,在这篇文章中,我将尝试强调它的一些优点,并消除对
Read More