Python四大主流网络编程框架,你知道么?

Tornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器。它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。Tornado 作为 FriendFeed 网站的基础框架,于2009年9月10日发布,目前已经获得了很多社区的支持,并且在一系列不同的场合中得到应用。除 FriendFeed 和 Facebook 外,还有很多公司在生产上转向Tornado,包括 Quora、Turntable.fm、Bit.ly、Hipmunk 及 MyYearbook 等。

相对于其他 Python 网络框架,Tornado 有如下特点。

完备的 Web 框架:与 Django、Flask 等一样,Tornado 也提供了 URL 路由映射、Request 上下文、基于模板的页面渲染技术等开发 Web 应用的必备工具。

是一个高效的网络库,性能与 Twisted、Gevent 等底层 Python 框架相媲美:提供了异步 I/O 支持、超时事件处理。这使得 Tornado 除了可以作为 Web 应用服务器框架,还可以用来做爬虫应用、物联网关、游戏服务器等后台应用。

提供高效 HTTPClient:除了服务器端框架,Tornado 还提供了基于异步框架的HTTP 客户端。

提供高效的内部 HTTP 服务器:虽然其他 Python 网络框架(Django、Flask)也提供了内部 HTTP 服务器,但它们的 HTTP 服务器由于性能原因只能用于测试环境。而 Tornado 的HTTP服务器与 Tornado 异步调用紧密结合,可以直接用于生产环境。

完备的 WebSocket 支持:WebSocket 是 HTML5 的一种新标准,实现了浏览器与服务器之间的双向实时通信。

因为 Tornado 的上述特点,Tornado 常被用作大型站点的接口服务框架,而不像 Django 那样着眼于建立完整的大型网站,所以本章着重讲解 Tornado 的异步及协程编程、身份认证框架、独特的非 WSGI 部署方式。

Flask 是 Python Web 框架族里比较年轻的一个,于 2010 年出现,这使得它吸收了其他框架的优点,并且把自己的主要领域定义在了微小项目上。同时,它是可扩展的,Flask 让开发者自己选择用什么数据库插件存储他们的数据。很多功能简单但性能卓越的网站就是基于 Flask 框架而搭建的,比如 http://httpbin.org/ 就是一个功能简单但性能强大的 HTTP 测试项目。Flask 是一个面向简单需求和小型应用的微框架。

相对于其他 Python 语言的 Web 框架而言,Flask 的特点可以归结如下。

内置开发服务器和调试器

网络程序调试是在将编制好的网站投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。有经验的开发者都知道,这是保证网站系统能够正式应用的必要步骤。

Flask 自带的开发服务器使开发者在调试程序时无须再安装其他任何网络服务器,比如 Tomcat、JBoss、Apache 等。Flask 默认处于调试状态,使得运行中的任何错误会同时向两个目标发送信息:一个是 Python Console,即启动Python 程序的控制台;另一个是 HTTP 客户端,即 Flask 开发服务器将调试信息传递给了客户端。

与 Python 单元测试功能无缝衔接

单元测试是对最小软件开发单元的测试,其重点测试程序的内部结构,主要采用白盒测试方法,由开发人员负责。单元测试的主要目标是保证函数在给定的输入状态下,能够得到预想的输出,在不符合要求时能够提醒开发人员进行检查。

Flask 提供了一个与 Python 自带的单元测试框架 unitest 无缝衔接的测试接口,即 Flask 对象的 test_client 函数。通过 test_client 函数,测试程序可以模拟进行 HTTP 访问的客户端来调用 Flask 路由处理函数,并且获取函数的输出来进行自定义的验证。

使用 Jinja2 模板

将 HTML 页面与后台应用程序联系起来一直是网站程序框架的一个重要目标。Flask 通过使用 Jinja2 模板技术解决了这个问题。Jinja2 是一个非常灵活的 HTML 模板技术,它是从 Django 模板发展而来的,但是比 Django 模板使用起来更加自由且更加高效。Jinja2 模板使用配制的语义系统,提供灵活的模板继承技术,自动抗击 XSS 跨站攻击并且易于调试。

完全兼容 WSGI 1.0 标准

WSGI(Web Server Gateway Interface)具有很强的伸缩性且能运行于多线程或多进程环境下,因为 Python 线程全局锁的存在,使得 WSGI 的这个特性至关重要。WSGI 已经是 Python 界的一个主要标准,各种大型网路服务器对其都有良好的支持。WSGI 位于Web应用程序与 Web 服务器之间,与 WSGI 完全兼容使得 Flask 能够配置到各种大型网络服务器中。

基于 Unicode 编码

Flask 是完全基于 Unicode 的。这对制作非纯 ASCII 字符集的网站来说非常方便。HTTP 本身是基于字节的,也就是说任何编码格式都可以在 HTTP 中传输。但是,HTTP 要求在 HTTP Head 中显式地声明在本次传输中所应用的编码格式。在默认情况下,Flask 会自动添加一个 UTF-8 编码格式的 HTTP Head,使程序员无须担心编码的问题。

以上讲到的 2个 Python Web 框架都是围绕着应用层 HTTP 展开的,而 Twisted是一个例外。Twisted 是一个用 Python 语言编写的事件驱动的网络框架,对于追求服务器程序性能的应用,Twisted 框架是一个很好的选择。

Twisted 是一个有着 10 多年历史的开源事件驱动框架。Twisted 支持很多种协议,包括传输层的 UDP、TCP、TLS,以及应用层的 HTTP、FTP 等。对于所有这些协议,Twisted 提供了客户端和服务器方面的开发工具。

Twisted 框架的历史悠久,其主要发行版本都以 Python 2 为基础,最新的版本为基于 Python 2.7 的 Twisted-15.4.0。Twisted 社区正在开发基于 Python 3 的版本,但目前为止尚没有基于 Python 3 的 Twisted 稳定发行版。

Twisted 是一个高性能的编程框架。在不同的操作系统平台上,Twisted 利用不同的底层技术实现了高效能通信。在 Windows 中,Twisted 的实现基于 I/O 完成端口(IOCP,Input/Output Completion Port)技术,它保证了底层高效地将I/O事件通知给框架及应用程序;在 Linux 中,Twisted 的实现基于 epoll 技术,epoll是Linux下多路复用 I/O 接口 select/poll 的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统 CPU 利用率。

在开发方法上,Twisted引导程序员使用异步编程模型。Twisted 提供了丰富的Defer、Threading等特性来支持异步编程。

Django 于 2003 年诞生于美国堪萨斯(Kansas)州,最初用来制作在线新闻Web站点,于 2005 年加入了 BSD 许可证家族,成为开源网络框架。Django 根据比利时的爵士音乐家 Django Reinhardt 命名,作者这样命名 Django 意味着Django 能优雅地演奏(开发)功能丰富的乐曲(Web应用)。

它是当前Python世界里最负盛名且最成熟的网络框架。最初用来制作在线新闻的 Web 站点,目前已发展为应用最广泛的 Python 网络框架。Django 的各模块之间结合得比较紧密,所以在功能强大的同时又是一个相对封闭的系统,但是其健全的在线文档及开发社区,使开发者在遇到问题时能找到解决方法。

Django 框架的特点

相对于 Python 的其他 Web 框架,Django 的功能是最完整的,Django 定义了服务发布、路由映射、模板编程、数据处理的一整套功能。这也意味着 Django模块之间紧密耦合,开发者需要学习 Django 自己定义的这一整套技术。Django的主要特点如下。

完善的文档:经过 10 多年的发展和完善,Django 有广泛的应用和完善的在线文档,开发者遇到问题时可以搜索在线文档寻求解决方案。

集成数据访问组件:Django 的 Model 层自带数据库 ORM 组件,使开发者无须学习其他数据库访问技术(dbi、SQLAlchemy 等)。

强大的 URL 映射技术:Django 使用正则表达式管理 URL 映射,因此给开发者带来了极高的灵活性。

后台管理系统自动生成:开发者只需通过简单的几行配置和代码就可以实现完整的后台数据管理 Web 控制台。

错误信息非常完整:在开发调试过程中如果出现运行异常,则 Django 可以提供非常完整的错误信息帮助开发者定位问题,比如缺少xxx组件的配置引用等,这样可以使开发者马上改正错误。

Django 的组成结构

Django 是遵循MVC架构的Web开发框架,其主要由以下几部分组成。

管理工具(Management):一套内置的创建站点、迁移数据、维护静态文件的命令工具。

模型(Model):提供数据访问接口和模块,包括数据字段、元数据、数据关系等的定义及操作。

视图(View):Django 的视图层封装了 HTTP Request 和 Response 的一系列操作和数据流,其主要功能包括URL映射机制、绑定模板等。

模板(Template):是一套 Django 自己的页面渲染模板语言,用若干内置的tags和filters定义页面的生成方式。

表单(Form):通过内置的数据类型和控件生成 HTML 表单。

管理站(Admin):通过声明需要管理的 Model,快速生成后台数据管理网站。

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

四个最佳后端框架推荐

本文最初发布于 Ace Infoway 博客。

在这个瞬息万变的世界中,网站和 Web 应用程序已经成为公司拥有卓越线上版图的关键。稳固的线上版图,特别是网站和应用程序,可以突破你的能力上限,带来更多的收入。是的,网站和应用程序的质量会影响到结果,所以为网站和应用程序开发选择适当的后端框架至关重要。

框架已经成为 Web 开发的重要组成部分,可以帮助你开发出丰富多彩的交互式网站和 Web 应用。对于后端(服务器端)Web 和应用程序开发,有大量的框架可供选择。

在这篇文章中,我们将讨论几个对 Web 和应用程序开发项目有帮助的后端框架。你马上就会了解到,什么是后端框架,以及 2022 年你最想用的最佳后端框架。

后端框架是服务器端编程语言的集合,帮助开发网站的后端结构。后端框架为构建动态 Web 应用提供了预先构建好的组件。使用后端框架进行 Web 开发的好处是可以降低门槛,让开发者不必从头开始构建和配置一切。

根据StackOverflow开发者调查,10.89%的专业开发者喜欢使用 Laravel,其次,37.1%的专业开发者喜欢使用.NET Framework。

下图展示了技术随时间发展的趋势:

后端框架是 Web 开发的精髓。使用框架来构建后端有很多好处,例如:

  • 可以为网站或应用程序开发提供更好的架构;
  • 框架可以帮你更快的编写 SQL,而不需要你手动编写复杂的 SQL 查询;
  • 它们有独特的架构风格(例如 MVC),可以提升代码的可用性和可维护性;
  • 可以提升应用程序和网站开发的效率;
  • 使用框架,编写较少的代码或不编写代码,就可以获得较多的特性。

选择使用哪个后端框架将决定成功的特质和网站的功能。

以下是 2022 年 StackOverflow 上关于 Web 应用开发人们提问最多的后端框架,我们将对它们做个全方位的对比:

  1. Laravel
  2. .NET
  3. Zend
  4. Codeigniter

让我们逐一进行详细地讨论。

Laravel 于 2011 年正式发布,从那时起它就是最受欢迎的 PHP 框架之一。目前大约有 1,14,640 多个活跃的 Laravel 网站。Laravel 是一个简单而优雅的 Web 开发框架,因为它的语法简洁而完备,并搭配了 Model-View-Controller 架构来开发 Web 应用程序。

举例来说,Laravel 为我们提供了一种既富有表现力又优雅的语法。Laravel 把开发变成了一个有趣的、创造性的、令人愉快的过程。Laravel 是一个非常有用的框架,它使得路由、身份认证、会话、缓存等基本操作都变得更加容易。它不仅易于使用,而且还提供了一套强大的工具,用于构建稳定的大型应用程序。

Laravel 语法的简洁性无懈可击,我们可以用它创建高性能的 Web 应用程序。这表明,Laravel 在 2022 年以及未来几年内都是很有前途的。

有不少有名的公司使用 Laravel,以下是其中的一部分:

  • MasterCard
  • Razorpay
  • Kmong
  • Bitpanda

根据 Github 的数据,Laravel 有 68k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。

  • 完美的身份验证和授权:Laravel 的主要优势之一是即插即用的认证方法,这使得用户可以通过一个快速、直观、优雅、简单的接口安全地访问你的资源。
  • 快速缓存集成:Laravel 的快速缓存集成可以给网站带来惊人的用户体验。Laravel 支持像 Memcached 和 Redis 这样的后端缓存需求,而且开箱即用。
  • 安全可靠的交易:企业在开发一个网站时,安全是首先要考虑的问题。在这方面,Laravel 是最好的,因为它的内置系统可以防止 SQL 注入、保护核心网站脚本等。它的代码库使用频繁,因此保护得很好。
  • 开源及强大的社区:Laravel 是开源的,有一个强大的社区,不断为开发者和企业提供支持。由于有强大的支持,所以你的开发工作不会受阻。
  • MVC 架构:由于 MVC 架构内置了不少功能,所以 Laravel 是 Web 应用开发的一流框架。
  • Artisan 控制台:这是 Laravel 最好的特性之一。Artisan 是 Laravel 框架内置的命令行工具,它帮助开发人员将大部分繁琐的重复性编程过程自动化。
  • 库和模块:在面向对象的框架里,Laravel 是目前最好的软件包之一。它有许多预装库,而且完全支持模块化。
  • Eloquent ORM:Eloquent Object Relational Mapping(ORM)是 Laravel 的一个特性,包含一个简单的 PHP Active Record 实现。Web 应用开发人员可以使用 PHP 语法来编写数据库查询,而不必编写 SQL 代码。而且,Laravel 的 ORM 比其他 PHP 框架的速度快很多。
  • 单元测试:Laravel 框架可以执行大量的测试,以确保程序员新做的变更不会意外地破坏 Web 应用中的任何东西。
  • 模板引擎:Laravel 框架以其轻量级模板而闻名,它可以用来创建美观的布局,然后动态地插入内容。

下图是根据 Builtwith 得出的 Laravel 使用情况统计:

2002 年,微软推出了一个软件框架.NET(dot net 的缩写)。它包括多种编码语言、库和编辑器。.NET 框架允许你创建广泛的应用,如 Web 应用、移动应用、游戏、云、物联网(IoT)等。

.NET 软件开发框架和生态系统使得开发人员可以快速开发桌面和 Web 应用。它是一个流行的免费平台,现在被广泛用于各种应用,因为它提供的编程环境可以支持大多数软件开发阶段。希望获得广泛功能(如基于 Web 的服务、桌面软件和云基础设施支持)的企业应该使用.NET。

当前,在网站开发中,大多数著名公司都在使用.NET 框架来开发 Web 应用程序。

有不少有名的公司在使用.NET,以下是其中的一部分:

  • Accenture
  • Stack Overflow
  • Starbucks
  • GoDaddy
  • Microsoft

根据 Github 的数据,.NET 有 16.8k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。

  • 降低编码量:面向对象编程消除了多余的代码,降低了开发人员的编码量。.NET 中有很多可重复使用的代码,以及很多可重复使用的元素。这可以节省开发应用程序的时间,降低开发成本。
  • 面向对象:在.NET 框架中,你看到的所有东西都是对象。你将因此拥有一个强大的工具,而且可以控制自己的应用程序。这也使得响应重复事件变得更加容易。
  • 缓存:.NET 中包含的缓存系统非常可靠,使用起来也很简单。
  • 易于维护:使用.NET,创建和维护页面都很容易,因为源代码和 HTML 在一起。
  • 节省时间:.NET 节省了大量的时间,因为它消除了大部分的编码要求。这意味着企业可以节省时间,进而缩短应用程序的上市时间。
  • 庞大的社区:.NET 有一个庞大的社区。因为有来自社区的高水平支持,所以许多公司和开发人员都在使用.NET 框架。有了这个庞大的社区,几乎任何问题都可能在其他成员的帮助下得到解决。
  • 公共语言运行时:这是所有.NET 语言(包括 C#、VB.NET、托管 C++、J#等)共享的引擎。
  • 工具支持:为了简化开发者的工作,CLR 与 Visual Studio、编译器、调试器和分析器等工具结合在一起使用。
  • 易于使用的调试支持:.NET IDE(集成开发环境)提供全面的调试功能。当发生运行时异常时,程序会终止,IDE 会突出显示包含错误的行,以及错误的具体内容和可选的解决方案。
  • 多语言支持:.NET 通过管理将源代码转换为中间语言(IL)和将 IL 转换为本地代码的编译器来支持多语言开发,并确保程序的安全和防护。
  • 安全:CLR 通过识别用户和代码,以及执行权限检查来确保系统安全。CLR 可以确定代码的标识,并授予相应的资源访问权限。安全等级是.NET 框架的一个关键特性。

Zend 是一个 PHP 框架,于 2006 年由 Andi Gutmans 和 Zeev Suraski 首次发布。Zend 是一个开源的、面向对象的框架,到目前为止,大约有 5.7 亿的安装量。由于是一个完全面向对象的框架,所以它具有诸如继承性、可重用性和灵活性等特点。

它是基于 MVC 架构的,遵循 BSD 许可。Zend 中的前端控制器设计模式也允许请求基于单个控制器类。Zend 依赖于一些包。它提供了一个包依赖管理器,简化了依赖项组织和归类。

另外,Zend 的能力并不局限于为中小型企业构建网站,这个强大的 PHP 框架也可以用于构建企业级 Web 应用。得益于 Zend 框架的模块化架构、事件管理器、服务管理器和 PHP 合成器,它可以为你提供强大的应用程序,推动企业的业务增长。

有不少有名的公司在使用 Zend,以下是其中的一部分:

  • Directus
  • Zingat
  • Catho
  • Hostinger Stack
  • Webedia

根据 Github 的数据,Zend 有 5.6k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。

  • 面向对象:Zend 是面向对象的,允许企业继承和增强预定义类的功能。
  • 高度可定制:通过 Zend 框架,你可以按自己喜欢的方式定制网站,这要得益于该框架所包含的各种定制工具。最好的方面是,你可以在更短的时间内定制一个 Zend 应用程序,而且不会有任何问题。
  • 庞大的社区:Zend 有庞大的社区支持,并在企业界得到了极大的认可,有几个受人尊敬的网站就是用 Zend 开发的。
  • 标准和指南:每位贡献者都要签署一份贡献许可协议(CLA),而且所有的工作都必须遵循同一套编码标准。这可以确保每一行代码都是高质量的,都经过了全面的测试,并且易于阅读。
  • 演示程序:Zend 的主要优点之一是它提供了多个演示程序,教你各种组件的用法。
  • 灵活的架构:大多数开发人员都希望使用灵活的平台,而 Zend 框架是目前最灵活的架构平台。这有助于用户定位和纠正在测试阶段发生的所有错误。
  • 便捷集成:Zend 框架集成了大量的库。它可以帮助开发人员跨不同的组件测试数据。
  • 结构化代码:如果要在代码中新增一个功能,你应该在上线之前进行测试。这样更容易避免错误,并鼓励使用面向对象编程。
  • 模型-视图-控制器:Zend 框架提供了 MVC 开发模式。你可以将 Web 项目划分为表现层、数据访问层、业务逻辑层等。当多个开发者和设计者在同一个在线应用项目上工作时,MVC 模型就变得非常有用。
  • 数据库集成:Zend 提供了强大的数据库集成能力,包括 DB2、MySQL、SQLite、Oracle、MongoDB 等。
  • 跨平台:Zend 支持跨平台操作系统。

下图是根据 Builtwith 得出的 Zend 框架调试器使用情况统计:

Codeigniter 是 EllisLab 于 2006 年 2 月 28 日发布的 PHP 框架。它是为那些希望有一个简单而有吸引力的工具集来构建全功能 Web 应用的 Web 开发者而创建的。CodeIgniter 是用 PHP 构建动态网站的最流行的框架之一。

Codeigniter 为企业提供了非常条理的文档。它提供了卓越的支持和稳定性。它允许使用一种简单的路由方法。它还可以把你导向缓存的网站,从而提高性能,缩短加载时间。

该框架为用户提供了完全的自由,他们可以不使用 MVC 开发范式。CodeIgniter 最好的地方在于,它允许第三方插件帮助实现复杂的功能。

有不少有名的公司在使用 Codeigniter,以下是其中的一部分:

  • Ola
  • Accenture
  • Buffer
  • SocialDog
  • Saramin

根据 Github 的数据,Codeigniter 有 18.2k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。

  • 错误处理:Codeigniter 提供了一个简单的用户接口,可以检测任何可能阻碍网站流畅操作进而影响用户体验的错误或缺陷。
  • 迁移无忧:Codeigniter 提供了充分的迁移支持。当涉及到数据库更新和迁移时,CodeIgniter 允许开发人员从一个服务器迁移到另一个。
  • 良好的社区支持:当涉及到高级服务开发时,有许多具有丰富经验的专业人员可以提供一流的支持。
  • 快速开发:Codeigniter 框架最适合于快速开发,因为只需要较少的代码就可以开发出一个网站。
  • 简单易用:由于接口简单,所以 Codeigniter 框架简单易用。使用 Codeigniter,用不同方式修改数据库也很容易。
  • 轻量级:Codeigniter 的基本系统需要的库相对比较小。其他库可以根据需要动态添加。正因为如此,该框架非常快速、轻便。
  • 搜索引擎友好的 URL:Codeigniter 生成的多个 URL 简洁规整,对搜索引擎友好。它没有使用一般的基于查询的方法,而是使用了分段的方法。
  • 模型-视图-控制器:MVC 提供了一种测试驱动的开发,这意味着开发人员可以根据需求准确地构建和测试模块。
  • 内置库:该框架提供了内置库,可以帮助开发人员完成所有任务,如电子邮件发送、处理图像、HTML/文本电子邮件等。
  • 数据传输简单:使用 Codeigniter 框架,数据传输很容易,而且不会损失任何有价值的数据。

下图是根据 Builtwith 得出的 Codeigniter 使用情况统计:

现在,你已经了解了我们上面列出的最佳后端框架。选择最适合你项目的框架。这样,在未来几年里,你一定可以从上述最佳后端框架中受益,使你的开发工作更轻松。

如果你正在寻找最好的定制化Web应用程序开发服务,那么欢迎聘请 Ace Infoway 的专家。我们有 20 多年的经验,可以协助你完成好后端开发项目。

Neha Rajvanshi 是一名技术专家,致力于为客户提供有效的服务,通过敏捷项目管理实践将他们的业务需求转化为解决方案,并展示 SaaS 产品、Web 应用程序和移动应用程序的良好实施情况。

了解更多软件开发与相关领域知识,点击访问 InfoQ 官网:https://www.infoq.cn/,获取更多精彩内容!

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。