库使得开发变得灵活,而框架和工具快速开发的源泉。
........
框架应该只是表达了设计者对如何开发web应用(或者只是某一类web应用)的一种看法。具体功能点由可重用的框架无关的库提供,不过要求所有的功能都由框架无关的库来提供可能也太苛刻了,毕竟框架有自己的一套思维方式,有自己的内部接口和数据类型。不过一些通用的功能点还是应该尽量设计成框架无关的库的。
........
我想这个就是web开发的本质所在了,就象消息循环之于桌面开发。而我们上面所讨论的框架和应用程序应该都属于这个框架最右边一块。虽然也有框架比如cherrypy提供filter的概念似乎和WSGI描述的中间件很象,但是我还是觉得WSGI描述的中间件绝对是框架无关的,这是两个层面上的概念。而库是可以存在于任何一个层面的。
.........
http请求从到达服务器的这一刻便开始向着纵深的方向走去,沿途被各种filter分析加工,最后到达某个方法(通常对应某个页面),在这个末端开发者思维开始横向延伸,把页面分解成一块一块(又模版系统完成),然后访问数据库,每一块取得其数据再整合成完整页面并返回,返回的数据沿纵身方向往回走被filter加工直至最后到达客户端。