【周一通勤电台 · 特辑】六千字漫谈2022后端框架流行趋势

2022-03-15 19:59:24 浏览数 (1)

原文地址:MOST POPULAR BACKEND FRAMEWORKS IN 2021-2022 [PROS AND CONS, WHAT TO CHOOSE] 原文作者:Oleksii Glib

0. 阅读完本文你将会学会

  • 后端框架的意义
  • 如何选择后端框架
  • 网页应用开发的流行后台框架
  • 移动应用开发的流行后台框架

1. 前言

这篇文章基于我对后端框架的了解以及研究,提供了2021-2022年度以及未来一年内可能流行的后台框架

笔者目前是从事的是后端Java开发,这篇文章中不仅包括Java的流行框架,还会有其他后端语言的框架。

对于后端开发人员来说,了解市场上最流行的后端框架永远不会有坏处。一方面,作为开发者来说,了解其他的后端语言的流行框架有助于你开展第二程序语言的学习。另一方面,作为团队leader,对后端程序框架的更多了解可以让你在为下一个项目组件专业团队时考虑需要哪些专业技能。

所以,请继续耐心阅读,体验下最流行的后台框架。

2. 后端框架是什么?我们为什么使用它们?

谈到前端以及后端,我们通常会说,任何应用程序的功能其实很大程度上都是依赖于它所构建的组件的具体情况。这些组件,通常是库和框架,它们以多种方式相互作用,所以它们的的组合被称为栈(Stack)。

那么。如何为你的技术栈选择最合适的后端开发框架在很大程序上影响着着项目的成败,为什么这么说?

框架是一个用特定编码语言预先编写和测试的代码包,任何开发人员能够在此基础上进行快读开发。由于这一特性,开发不需要每次从头开始“造轮子”,这样极大地加快了开发速度。

3. 如何选择最好的后端框架

你绝对可以使用任何语言和任何框架来开发一个应用程序。然而,某些语言和框架更适合于提供特定功能。

  • Python是构建大数据分析平台和训练人工智能模型的最佳选择。
  • Node.js、.NET和Java是构建可在后台持续运行的企业级软件的首选。
  • Python和PHP最适合中小型应用开发(好吧,它们也能完成大型项目的工作,只是通常不是首选)。

但是,当你为下一个应用程序选择一种语言时,决定性因素不应该是它的受欢迎程度。

首先,考虑你的团队提供的技术专长水平。例如,你不应该要求你的PHP专家使用Node.js来编写一个应用程序。最合适的框架是Sails.js,因为它将允许你的PHP开发人员使用他们熟悉的逻辑,同时用另一种语言(JavaScript而不是PHP)构建项目结构。

其次,你必须考虑用该框架编写的代码的透明度和易读性。如果你的开发人员能编写出干净的代码, 那么新的队友在进入项目时就不会有什么问题。

第三,你应该选择一个具有最佳支持的框架。我们在这里谈论的不是社区规模。很多时候,底层语言的更新会迫使框架更新--你的应用变得无法操作,直到最新的框架版本出现,应用被相应更新。这可以通过坚持使用最流行的后端框架来避免--它们通常是最稳定的。

4. 后端框架的好处

现在让我们简单介绍一下使用框架进行移动应用后端开发的好处(这也适用于Web开发)。

  • 节约时间 显然,当开发者可以从预先写好的功能中创建应用功能时,开发过程所需的时间就会大大减少。这也导致了更少的错误,从而缩短了开发周期,提高了最终产品的质量。
  • 可扩展性 所有的框架功能都是预先测试过的,可以快速而毫不费力地进行扩展。这使得创建一个能充分解决需求高峰的应用程序更容易,并能根据需要扩大组件的规模。
  • 稳健性 有了框架,我们可以使用开箱即用的代码并在此基础上进行开发。这使开发人员能够以清晰和精简的结构提供强大的功能,而无需造轮子。
  • 安全性 大多数框架都是开源的,每个框架背后都有一个庞大而热情的社区,因此安全问题得到了充分的解决。世界知名的网站和应用程序,如Instagram、Pinterest、Shopify、Coursera和Reddit都是使用Django、Ruby on Rails、Laravel、Node.js和ASP.NET构建的。我们最好相信这些家伙会认真对待安全问题。
  • 整合 构建一个独立的应用程序并不像用新功能充实现有的应用程序那样可行。后台开发框架确保使用RESTful API或GraphQL集成要简单得多。这样,你实际上可以使你的新应用程序成为繁荣的软件生态系统的组成部分之一,并提高用户体验。

现在,我们已经知道了后端框架带来的好处如此之多,那么我们如何从众多的后端框架中选择最适合未来的网络应用的框架呢?

5. 网络应用开发后台框架Top 5

下面是我为大家所列出的五个最受欢迎的后台网络框架,虽然下面的条目几乎可以覆盖整个网络开发的需求,但是你仍然可能会使用其他一些框架,这取决于你的产品的具体情况。

5.1 Django for Python

Django是Python中最常用的后端框架之一。它是一个开源的MVC框架,用于构建数据库驱动的、高性能的、功能丰富的网站和应用程序。Django使用Python进行所有操作,并确保极大的可插入性和代码可重用性,这使得编码减少,开发周期缩短。

1. Django框架的优点

  • 快速学习,易于使用。Django的上手程度很简单,建立它的唯一目的是为了加快开发周期。
  • 强大的功能。Django大量开箱即用的应用功能,大大减少了从头开始创建一个应用的工作量。
  • 深入的安全性。Django内置了对SQL注入、交叉脚本、请求伪造和其他类型安全问题的保护。它还默认处理用户认证,允许用户安全地存储他们的密码。
  • 高可扩展性。Django是Python专注于可扩展性的缩影,使运行在它上面的网站能够轻松地满足其高需求的峰值。
  • 多功能性。就像Python本身一样,Django适合开发广泛的应用程序,从网上学习平台到社交媒体、大数据管理工具。

2. Django框架的缺点

  • Django ORM。ORM(Object Relational Mapper)为各种开发问题提供了一套解决方案,但是也同时做出了限制。如果你想或必须以非常规的方式做任何事情,ORM就会成为短板,而不是得力的工具。
  • 单一的部署。再一次,由于使用ORM,你必须在软件开发的所有方面遵循某些模式,包括部署。有时你需要添加特定的功能,只是为了让Django正常工作,即使你的应用程序实际上不需要它们。
  • 需要有深入的系统知识。Django是一个端到端的开发框架,这意味着你需要提前规划每一个小功能,以避免在开发中期进行昂贵的返工。因此,虽然使用Django开发应用程序很容易,但你需要额外的时间来事先规划一切。

然而,总的来说,Django是快速和可预测地开发各种类型的应用程序和网站的最佳选择。

5.2 Lavarel for PHP

Laravel是一个开源的MVC框架,用于构建、部署和运行基于Symfony的PHP应用程序。它有一个专门的依赖性管理器和模块化包,简化了所有操作。加上与任何关系型数据库和应用部署工具轻松互动的能力,你一定会明白为什么Laravel是领先的PHP框架。

1. Lavarel框架的优点

  • 易于认证。通过内置的访问管理工具,实施用户认证很简单。
  • 基于API的邮件发送。使用Laravel, 你可以得到与所有主要的邮件服务的API集成, PHP邮件驱动, 以及多渠道信息发送的通知。这大大简化了通知和邮件的实施。
  • 简单的数据缓存。Laravel通过内置的文件缓存驱动,提供Redis,Memcached和其他流行的缓存工具的内存缓存。
  • 方便的日志处理。Laravel支持多个日志处理程序,并默认启用异常/错误处理。
  • 广泛的测试。由于内置的PHPUnit支持和预先配置的phpunit.xml文件,Laravel可以进行深入的单元测试。它还提供用户模拟功能,如表单输入,链接点击,应用程序请求等。

2. Lavarel框架的优点

  • 陡峭的学习曲线。虽然Laravel学习起来很简单,但很难掌握。很多功能都过于复杂,只能以一种方式工作,你很难自己搞清楚。所以,虽然有很多Laravel的开发者,但很少有人能够真正地使用Laravel来发挥它的潜力。
  • 没有内置的支持。Laravel经历了一些成长的痛苦。例如,第5版与第4版有很大的不同,两者之间不可能有无缝的过渡。由于框架中几乎没有内置的支持,开发人员必须不断地涉猎Laravel的开发者文档。

尽管如此,Laravel绝对是构建PHP应用的最佳选择,这要归功于它是一个稳健,强大,功能丰富的MVC框架。 值得一提的是,还有Zend框架, 它非常适合于传统项目,同时被认为是过时的,被Laravel取代。然而,相当多的项目运行在Zend上,这使得它仍然是一个可行的选择。

5.3 Ruby on Rails

Ruby on Rails是一个MVC框架,用于构建基于Ruby的服务器端应用程序,具有默认的数据库结构、网页和服务。由于使用XML和JSON格式进行数据传输,使用HTML/CSS和JavaScript进行界面,Rails确保了使用Ruby快速而深入地开发网络应用。

最值得注意的RoR特征是主动记录模式、不重复和CoC(Convention over Configuration,即约定大于配置)开发范式。

1. Ruby on Rails框架的优点

  • 开发速度。由于RoR带有各种各样的内置插件和模块,开发人员在创建应用程序时可以使用大量的插件。这大大减少了编写模板代码所需的时间。
  • 一致性。由于遵循上述标准,RoR使程序员能够对大多数开发方面进行标准化,如文件存储。这有助于保持项目的透明度和一致性,同时降低开发的复杂性。
  • 成本效益。Ruby on Rails是一个开源的框架,所以它完全可以免费使用。要获得额外的功能,你可以购买Gems--来自GitHub的专用模块,但大多数RoR开发者已经有了这些模块,所以你不需要为授权支付任何费用。

2. Ruby on Rails框架的缺点

  • 运行时性能。虽然各种响应速度和数据库请求基准可能显示Ruby on Rails的性能不如Django,但这并不是一个主要限制。如果你不用每秒处理数百万个请求,RoR就可以做得很好。此外,在大多数情况下,服务器架构和网络基础设施会比框架能力本身更早地成为瓶颈。
  • 严格的依赖关系。由于许多RoR功能是标准化的,它们之间的依赖关系也是严格定义的。RoR可以以一种方式配置,而且只能以一种方式运行。这极大地加快了标准功能的开发,但在实现独特功能时可能会限制开发人员的灵活性。
  • 错误的成本高。再一次,在项目中期调整一些架构决策对RoR来说是相当昂贵的,因为由于其标准化的结构,各种组件之间的依赖性很强。例如,大量使用Active Record将导致对数据库模型的极大依赖,这对未来规模化的应用性能是不利的。 总而言之,Ruby on Rails是快速开发各种具有标准功能的主流应用程序的绝佳选择。

5.4 Java的Spring Boot

Spring框架是一个开源的反转控制(IOC)容器,用于使用Java EE开发应用程序。它大大减少了开发基于Web的Java应用程序的工作量。该框架可以提供对Tomcat和Jetty的嵌入式支持。它还提供了对依赖关系和配置文件特定属性的简单管理。

1. Spring Boot框架的优点

  • 懒人初始化。由于根据需求预先配置Bean,开发者可以大大减少应用程序启动所需的时间。
  • 没有模板式的配置。由于Java的特殊性,根本不需要进行模板式的代码开发。
  • 自动的应用程序健康检查。一个内置的Liveness状态不断检查应用程序是否有反应,是否能够执行其功能。如果不是,它会自动重新启动,提供无缝和令人满意的用户体验,不会出现崩溃。

2. Spring Boot框架的优点

  • 复杂性。作为所有Java开发的症结,过度的配置复杂性是Spring开发者必须克服的一个挑战。这可能会拖慢开发过程。
  • 平行机制。Spring为达到各种目标提供了各种各样的选择,从一开始就选择最好的选择并不总是很明显。这可能会导致需要进行代码重构。 一般来说,Spring在有经验的Java开发者手中会是一个很好的工具,但如果没有事先深入考虑就使用,可能会有很大的惩罚。

5.5 Windows和.NET的ASP.NET

ASP.NET核心是Windows和.NET基金会合作创建的一个开源的模块化网络。它是开发.NET应用程序的事实上的黄金标准,并与整个.NET框架生态系统的大量工具一起工作。它使用C#代码,在Windows、Linux和Mac平台上提供一致和积极的用户体验。

1. ASP.Net框架的优点

  • 编码更少。开发人员必须实现更少的语句,并且可以在很大程度上依赖ASP.NET核心的预配置功能,这就加快了应用程序的开发。
  • 跨平台。这个框架使用相同的C#代码库,在几个主要平台上提供流畅和可预测的用户体验。
  • 迅捷的维护。有经验的.NET开发者只需几条语句就能优化Core框架,以确保顶级的应用性能和可维护性。

2. ASP.Net框架的缺点

  • 供应商锁定。由于微软控制着.NET框架,开发者对其行为的控制力较弱,必须遵循核心开发者施加的限制。
  • 许可证。与纯粹的开源框架不同,一些基本的核心模块,如Visual Basic,都有许可费用。如果你需要更多的高级功能,费用就会迅速堆积起来。 ASP.NET核心是开发基于Windows和.NET的网络和移动应用程序的首选框架,因为它能确保用户获得流畅和无摩擦的跨平台体验。

这一章节涵盖了五个最流行的后端框架,但还有更多的语言和替代品,所以最终的框架选择取决于项目的具体要求。只要记住,我们选择的框架必须对我们的团队来说是方便和可用的,允许创建干净的代码,并且容易更新而不会在过程中崩溃。

6. 移动应用开发后端框架Top 4

这一章节笔者将会为iPhone和Android开发者创建一个最流行的移动应用程序的后台框架列表。

这个移动后端框架的列表并不详尽,它只是展示了最常见的选择。这里有一个有趣的事实--Python/Django、Ruby on Rails、React/React Native和PHP/Laravel也可以轻松地作为移动开发的后端框架。

6.1 Flutter on Dart

Flutter是一个建立在Dart语言上的开源平台,正在迅速流行起来。它的主要特点是及时的代码执行,无需临时层的即时渲染,以及与机器代码互动的特定设计部件。

所有这些都确保了跨平台应用程序的快速开发,这些应用程序不仅可以在iOS和Android上运行--Flutter也涵盖了Windows、Linux、Mac。

1. Flutter框架的优点

  • 热重载。Flutter引擎允许将您的代码更改应用于正在运行的应用程序,而不需要每次都重新启动以测试每个小的更新。这就节省了相当大的开发时间,有助于保持开发人员的理智和积极性。
  • 设计小部件。Flutter提供了与许多平台合作的定制部件(从谷歌的Material Design到Cupertino的iOS人机界面指南),所以一个代码库在任何地方都能同样运行。
  • 简洁的开发。您可以获得明显缩短的上市时间,这不仅是因为单一的代码库,而且还得益于许多小功能和Flutter开发工具,使开发人员能够创建一个更干净、更简单和更简洁的代码。

还有更多的好处,但为了简洁起见,我们只说Flutter是一个面向未来的框架,允许你为许多设备和操作系统创建漂亮的应用程序。

2. Flutter框架的缺点

  • 不太原生。虽然Flutter应用程序在任何平台上看起来和运行都一样好,但它们并不完全具有原生的外观和感觉。这主要是只有iOS的纯粹主义者才会注意到的,但还是值得一提的。
  • 相当年轻。Flutter只有几年的历史,并且正在快速发展。它总是有可能以一些奇怪的方式发展,尽管谷歌的持续支持使得这种情况发生的可能性大大降低。
  • 兼容性。随着新的iOS和Android功能的发布和SDK的更新,Flutter每次都会被大修。这可能会造成反向兼容性问题。但是,作为现在大家最喜欢的工具之一,在谷歌的大力支持下,Flutter会尽可能频繁地接受更新,以确保Flutter应用程序不会崩溃。

所有这些都使Flutter成为快速构建强大的跨平台应用程序的最佳选择,即使它们没有完全的原生外观和感觉。

6.2 Google Firebase

谷歌Firebase是谷歌开发移动和网络应用的旗舰产品。由于它是一个基于云的特定供应商的产品,具有多种优点,只有两个缺点——供应商锁定和定价。这一小节中,我们不打算深入讨论其优点和缺点的细节。

Firebase带有基于谷歌的服务,用于实时数据库访问、崩溃报告、云存储、认证等。即使是免费计划,Firebase也提供了网络/移动应用功能所需的一切。 在开发iOS应用程序时,你需要确保以下功能。

  • 实时数据库访问
  • 在所有设备上进行实时同步
  • 电子邮件和推送通知
  • 社交登录
  • API控制台
  • 深入分析 所有这些都得到了Firebase的支持,这使得它成为移动应用最好的云托管后台开发框架之一。 6.3 Express/Koa for Node.js

如果你喜欢建立一个跨平台的应用程序,Node.js可能是最好的选择。它是一个更大的JS包的开源部分,这意味着你在开发移动应用的前端和后端部分时将有很多工具可以使用。

Express和Koa是Node.js的移动后端开发框架。

它们非常相似,所以我们将只介绍Express,它是一个MEAN后端开发框架,与Angular.js前端和MongoDB数据库耦合,以确保功能丰富和稳定的应用性能。

1. Express框架的优点

  • 简单的学习曲线。由于JavaScript是最流行的编程语言之一,许多开发人员都很了解它,这使得开始使用Node.js进行服务器端开发相当容易。
  • 高性能。由于运行谷歌的V8 JavaScript引擎,将Node.js代码解释为机器代码,应用程序以近乎原生的性能运行。
  • 单一代码库。由于所有的浏览器都支持JavaScript,用Express框架开发跨平台的应用程序是快速和具有成本效益的。一个单一的代码库可以重复使用,在任何平台和任何浏览器中运行你的应用程序。

2. Express框架的缺点

  • 低计算能力。Node.js应用程序每次都必须将代码解释为机器代码,这意味着它们不能很好地处理资源密集型任务。
  • 异步编程。Node.js的这一特点会使应用代码在各种设备和浏览器版本之间的维护变得相对困难,而这个问题可能需要大量的开发工作来处理。

最后,Express和Koa可以成为使用Node.js快速开发跨平台移动应用程序的良好选择。

6.4 React Native

React Native,简称RN,是一个用JavaScript编写的开源平台,最初由Facebook开发。

早在2018年,React Native经历了一次重大的努力,重新架构了该框架,以使其更加通用并摆脱其缺点。

1. React Native框架的好处

  • JSI(JavaScript接口)。它允许RN与任何JS引擎顺利工作,主要是Hermes。
  • 对C#主机对象的引用。RN现在可以直接调用本地模块,省略了中间的渲染层,这大大提高了你的应用程序的性能。
  • 通过共享代码库进行快速开发。"一次编写,到处使用 "是一种JS范式,确保新的应用程序开发得非常快,并在所有平台上共享相同的代码库。
  • 知名度。将RN应用程序发布到Play Market和App Store很容易。

2. React Native框架的坏处

  • 复杂的更新。将RN更新到最新版本是相当复杂的,这意味着你的应用程序需要复杂的更新过程。
  • 独占性。当使用RN开发一个网络应用时,你不能使用任何本地模块的库,所以要准备好大量的定制开发。
  • 没有复杂的设计。如果你的应用程序需要复杂的设计或多层互动,RN的工具非常少,所以最好去找一个本地框架。

总而言之,React Native是构建具有近乎原生用户体验的跨平台应用程序的一个不错的选择。

正如我们在文中所看到的,有相当多的后端框架可以用来开发网页应用以及移动应用。为你的项目选择一个最好的框架可能是一个挑战,我们需要好好考虑这件事情。

感谢收看本期的翊君@周一通勤电台。如果你觉得还不错的话,快给我三连支持一下吧,咱们下期不见不散呐。

0 人点赞