Python▲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 , 使程序员无须担心编码的问题 。
底层自定义协议网络框架——Twisted
以上讲到的 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
Django 于 2003 年诞生于美国堪萨斯(Kansas)州 , 最初用来制作在线新闻Web站点 , 于 2005 年加入了 BSD 许可证家族 , 成为开源网络框架 。 Django 根据比利时的爵士音乐家 Django Reinhardt 命名 , 作者这样命名 Django 意味着Django 能优雅地演奏(开发)功能丰富的乐曲(Web应用) 。
它是当前Python世界里最负盛名且最成熟的网络框架 。 最初用来制作在线新闻的 Web 站点 , 目前已发展为应用最广泛的 Python 网络框架 。 Django 的各模块之间结合得比较紧密 , 所以在功能强大的同时又是一个相对封闭的系统 , 但是其健全的在线文档及开发社区 , 使开发者在遇到问题时能找到解决方法 。


推荐阅读