Differences between revisions 3 and 4
Revision 3 as of 2008-09-16 14:20:59
Size: 3239
Editor: HuangYi
Comment:
Revision 4 as of 2008-09-16 14:58:33
Size: 3689
Editor: HuangYi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 63: Line 63:
关于骨架便说到这为止了,至于让这些框架活起来的那口气,还待我细细道来 ... 当然这些只是几个最最基础的框架组成元素了,对于一个成熟的完善的框架来说,
还有许多必备的组件,比如cache、session、国际化(i18n)、用户验证、权限控制等等。
框架们往往还有一些自己独具的特性,比如django的app概念,
强悍的后台管理程序,turbogears 的 toolbox ,与 ajax 的优秀集成等。
这些,可以称之为肉了。

关于骨架和肉我们便说到这里为止,至于让这些框架活起来的关键的那口气,还待我细细道来 ...
Rendering of reStructured text is not possible, please install Docutils.

:status: 草稿 ;HuangYi; 100%;

.. contents::

====================
Python Web 框架概览
====================

在 Python 的世界,web 框架百家争鸣,
但基本统一于 MVC 这样一个抽象的大模式之下。

其实会觉得在这些框架中 MVC 也许并不是最重要的特质。MVC 只是
个骨架, DRY(Dont Repeat Yourself)、COC(Convention Over Configuration) 的原则,
在追求纯粹、灵活和实用性之间微妙的权衡,设计的哲学,才是这些框架的灵魂。

但是从骨架讲起,总是比较容易理清思路的。

多少年来,MVC模式不断演化,各种变种相继出现然后消失。在 Python 的世界里,
这种种的变数,在近年却难得地达到了某种新的统一。 ::

                                Model数据模型
    URL分发器  Controller控制器
                                Template模板

上图便是我们说的骨架了。当http请求进入 web 应用程序的疆域,
URL分发器首先根据提供的资源地址,
找到相应负责的控制器,控制器这里是核心的业务逻辑,
或是查询 Model 数据,在将数据填充到模板,
最终产生适当格式的资源的呈现(比如HTML);
或是处理表单,再通过 Model 持久保存数据,等等。

在搭建 Web 框架这样一座宏伟大厦的过程中,python开发者特别重视轮子的重用。
几个主流现代的框架中,组成它们的骨架和肉往往是一些独立的可重用的组件。
所以说 python 开发者都是聪明人:框架多样,可以形成激励不断创新的良性竞争;
重用性好,又可以节省昂贵的人力资源。

===========  =================  ===========  ===========  ==============
 框架        URL分发器          模板         ORM          Form 库       
===========  =================  ===========  ===========  ==============
 Django      Django             Django       Django       Django       
-----------  -----------------  -----------  -----------  --------------
 TurboGears  Object Publisher   Genshi       SQLAlchemy   ToscaWidgets 
-----------  -----------------  -----------  -----------  --------------
 Pylons      Routes             Mako         SQLAlchemy   ToscaWidgets 
-----------  -----------------  -----------  -----------  --------------
 CherryPy    Object Publisher   --           --           --            
===========  =================  ===========  ===========  ==============

Python web 框架的骨架是灵活的,CherryPy 那一栏似乎有好几个骨架缺失,但
实际上其实是把选择的权利交给了你。而其他框架虽然似乎都已经替你做好
了选择,实际上只要你愿意,有很多组件你都是可以很灵活地进行替换的。

当然这些只是几个最最基础的框架组成元素了,对于一个成熟的完善的框架来说,
还有许多必备的组件,比如cache、session、国际化(i18n)、用户验证、权限控制等等。
框架们往往还有一些自己独具的特性,比如django的app概念,
强悍的后台管理程序,turbogears 的 toolbox ,与 ajax 的优秀集成等。
这些,可以称之为肉了。

关于骨架和肉我们便说到这里为止,至于让这些框架活起来的关键的那口气,还待我细细道来 ...

ObpLovelyPython/WebFrameworks (last edited 2009-12-25 07:14:01 by localhost)