Python各种WEB框架简介

jopen 9年前

1    django

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。

Django 于 2008年6月17日正式成立基金会。

2    TurboGears

一套组合框架,HTTP处理使用cherrypy,ORM可以使用SQLObject或SQLAlchemy,模板系统默认为kid,可以更换。作为一套组合框架,有着很多个不同的组件。从TG的哲学上讲这叫不重新发明轮子。但是从我Pylons的经验来看,使得各个组件可以和谐的工作在一起也是很困难的。至少我就曾经因为差不多的Pylons使用的某个组件更新版本的差异最终放弃了Pylons。

TurboGears的优点很明显,有大部头的书,文档丰富。另外,就是其版本已经到了1.0.3了,稳定性值得信赖,另外对于开源软家来说,1.0以上的版本意味着接口的稳定。从表格中可以看出,国内用TG的人很少。我最初对TG的好感也仅限于用过CherryPy一段时间。

3    Zope

Python中的巨无霸WEB开发框架,曾经是绝对的选择,后来么,因为学习成本的问题而使用略少了一些。对于初学者不太推荐,因为稍微重量级了一点,可以对比J2EE。至于稳定性,据说很多国外政府和军队的网站在用。而且基于Zope开发的Plone是世界排名第三位的CMS系统。文档么,有中文的书籍支持,英文的更不必说。当然,Zope也是一套组合的框架,一些在Python WEB开发方面的机制当初都是Zope开创的,另外在面向对象数据库等方面,Zope也拥有领先的优势。

如果将来要做Python的企业级WEB开发,绝对推荐。

4    CherryPy

一套比较简单的WEB开发框架,只含有WEB开发框架。开发很简单,是并不算是方便,因为ORM和模板等等需要自己来选择和配置。比较适合开发实验系统或为其他应用提供一个WEB管理界面。

如果需要学习TurboGears也推荐先从CherryPy学起,这样很多内部机制就好理解了。

5    Pylons

http://pylonsproject.org/

Pylons 是一个开放源代码的Web应用框架,使用 Python 语言编写。它对 WSGI 标准进行了扩展应用,提升了重用性且将功能分割到独立的模块中。

Pylons是最新的Web应用框架中的典型,类似于 Django 和 TurboGears。Pylons 受 Ruby on Rails 影响很深:它的两个组件,Routes 和 WebHelpers 是 Rails 特性的 Python 实现。

6    web.py

一套非常简单的框架,不过并不是非常简洁。只提供WEB开发框架而没有其他东西,但是内部做了对流行的ORM和模板系统的导入引用。使用方式在 WEB框架里面是比较独特的,只需要把web.py这一个文件放到工程目录里面带走即可,到其他机器上运行时也无需安装,直接可以使用。因此更加适合做其他系统的WEB管理界面。

如果有兴趣推荐读一下web.py的代码,里面有很多先进的思想对未来的编程很有帮助。

7    Twisted

Twisted是一套巨无霸的网络编程框架,其WEB开发不过是HTTP协议实现的一个附带功能,如果希望了解足够深的底层知识并控制这些底层细节,那么推荐。因为连HTTP协议的某些细节你都要照顾到。

所以呢,如果你希望提供一些超高性能的WEB接口,比如AJAX应用,XMLRPC服务器等等,那么强烈推荐,因为这个东东真的是太快了。在我的测试中AMD64 x2的机器用apache ab测试,100并发时每秒可以处理1500个HTTP请求。这速度已经没得挑了。

8    mod_python

apache-httpd服务器的Python解释器插件,允许直接控制apache服务器来提供WEB功能。速度比较快,但是速度不是强项。强项是稳定性,拖apache的福,在多进程中使用的mod_python稳定性巨牛无比,即便是死掉一个子进程对整体服务器也没什么影响。但是 mod_python一般作为如上多种WEB开发框架的Apache-httpd的API接口来使用,提供高可靠性的服务器前端。至于直接用 mod_python编程呢,提供了PSP、publisher、自定义模块等几种方式。总体来说也不难,但是大家习惯了把它当底层了,所以也就没人愿意学了。

mod_pathon 很久没有更新了,建议使用modwsgi: http://code.google.com/p/modwsgi/

文档方面,虽然google中文结果很少,但是却又两份官方文档翻译,这在这些框架里面文档的权威性仅次于Zope。反倒是其他框架的中文资料里面 hello world满天飞。国内现在仅有的两家提供Python虚拟主机的,有一家就是专门做mod_python的,当然,另外一家专门做django。