python web framework比较
1. Python web development and frameworks in 2007
http://jesusphreak.infogami.com/blog/vrp1
非常详细的比较,对于zope, web.py, 如果自己开发框架, pylons, django, TurboGears 分别从下面几个方面阐述:
- the general philosophy of the framework
- the URL dispatching system used
- the templating system used
- the object-relational mapper used
- the form handling used
- extra types of functionality
- advantages of using the framework
- disadvantages of using the framework
- the future direction of the framework and concerns I have with it
2. TurboGears and Pylons (a technical comparison)
http://blog.ianbicking.org/turbogears-and-pylons.html
3. Pylons vs TurboGears
http://pythonmag.blogspot.com/2006/02/pylons-vs-turbogears.html
从自身感受来说:
(1)zope 最强大,模块化最好,不同的component通过zcml(xml文件) 粘合,耦合度低,跟java开发的模型很接近。zope里面的一些模块比如interface独立出来后也在很多项目中得到了应用(比如twisted)。zope不是快速开发类型的,打算开始一个项目时,如我这种初学者甚至不知从何处下手。 zope book写得不够体系,虽然包括有如何开发一个component,但是不能让学习者对全局体系和开发流程有清晰的认识。
另外,有人提起过,大量zcml文件使得如果zcml文件里面有配置错误,则很难调试。
(2)django是fullstack的快速快发框架,上手很方便。这种大包大揽的方式虽然能保证一致的体系和风格,但是它自己的组件很难和其它专门的开源项目比肩,集成其它项目也比较麻烦。例如SqlAlchemy出现后,基本所有的框架都提供了对它的支持,但django就远远落在后面。
django的一些为人津津乐道的便利,比如自动管理界面等,并不是对开发代码提供多大的便利,而只是针对CMS这些应用帮助完成了一下面向最终用户的界面。
(3)我原先用turbogears,看了包括上面的文章的一些比较后,转向了pylons,迁移过程很顺利。这两个项目有太多的相似,都是利用paster自动生成代码,都是对其它组件的粘合,除了TG用cherrypy,pylons用paster作为底层,其它部分很多都是相互移植的,比如pylons的router移植到TG,TG的通用模板系统移植到pylons,TG分离出来的ToscaWidget可应用于pylons等。 由于paster是符合wsgi规范的,而目前TG所用的cherrypy 2.0不是(cherrypy3.0提供了 wsgi支持),这些造成了主要的不同。TG通过decorator提供各种功能(expose,validate等),pylons通过helper提供功能。TG的权限认证是自己做的,利用model在数据库中生成相关的权限表(通过require decorator使用),很方便很强大,而pylons因符合wsgi规范,可通过独立的基于wsgi的AuthKit 提供authentication和authorization,可提供多种认证(LDAP,配置文件等).实用工具上TG较多,不过有些outdated了(比如以前针对sqlobject,现在不支持sqlalchemy),pylons的调试非常方便,在浏览器中访问页面,可以查看调用栈,可以看变量字典,可以自己输入执行语句。 因为这两个框架太相似了,很多人提到了是否有两者合并的可能性,如果成真的话,利好包括:避免很多重复劳动,开发出更多更方便的工具集等。