python web框架互相融合, Pyramid或取代Django
Django用久了,難免會(huì)感覺到自由度不夠。不可否認(rèn),這種自由度的犧牲能夠帶來一些好處。比如,一體化的框架(full-stack framework)能夠提供全面的solution,你不需要再為cache,session,feed,orm,auth,template等問題困擾,完全按照Django的設(shè)計(jì)哲學(xué)來使用就可以了。使用Django能夠快速開發(fā)應(yīng)用,而且技術(shù)的統(tǒng)一對(duì)于團(tuán)隊(duì)開發(fā)來說無疑是一件好事,團(tuán)隊(duì)成員無需在技術(shù)選型上進(jìn)行過多的爭(zhēng)論——Django已經(jīng)幫我們定好了,just DO it。
但是在提供全面的solution的同時(shí),Django將自己打造成了一個(gè)封閉的框架。由于所有的組件都靠自己實(shí)現(xiàn),可能在每一個(gè)方面都做得不夠好(盡管夠用)。同時(shí)為了方便使用,Django的各個(gè)組件之間耦合比較緊密,你很難將某個(gè)組件替換成你自己喜歡的庫(kù)。比如Django最為人詬病的ORM和Template,如果你想替換成SQLAlchemy和Mako,幾乎是不可能的事情。即使勉強(qiáng)使用,也會(huì)讓你非常別扭。
話說天下大事,分久必合。在python web framework 的戰(zhàn)國(guó)時(shí)代,Django幾乎做到了一家獨(dú)大。但如果其他的框架合縱聯(lián)合,未必不能與Django一爭(zhēng)高下。
現(xiàn)在這種融合的趨勢(shì)已經(jīng)顯現(xiàn),而Django如果依然固步自封,即使再?gòu)?qiáng)大,也會(huì)在歷史的塵埃中銷聲匿跡。如果你不相信,我們可以追索一下事實(shí)真相,不難看出這種融合恰恰是從更加強(qiáng)大的Zope的分裂開始的。
在《戲說WSGI》一文中,曾經(jīng)列舉了幾個(gè)python web框架。其中Zope是一個(gè)另類,因?yàn)閆ope非常厚重,適合組織大規(guī)模的開發(fā),構(gòu)建復(fù)雜的應(yīng)用。為了能夠面對(duì)更高的復(fù)雜度,Zope提供了一個(gè)組件框架ZCA (Zope Component Architure),引入了接口的概念,使得復(fù)雜系統(tǒng)可以基于接口開發(fā)。ZCA提供了適配器組件,用于裝配整個(gè)應(yīng)用的各個(gè)組成部分,還進(jìn)一步提供了可重用的工具組件,事件組件等。可以說,ZCA是Zope中最有價(jià)值的產(chǎn)品。
盡管ZCA能夠?qū)ope提供的認(rèn)證、對(duì)象發(fā)布、事務(wù)管理、授權(quán)等功能組裝起來,但是這些功能在Zope之外還是很難使用。于是有了Repoze項(xiàng)目。Repoze的目標(biāo)是將Zope的功能組件拆解出來,使得其他的python web應(yīng)用能夠使用。說到這里,不禁又要感慨一下WSGI的重要意義:WSGI定義了Web服務(wù)器和Web應(yīng)用以及Web中間件之間的交互協(xié)議,只要支持WSGI,各種web服務(wù)器、web應(yīng)用和中間件就能相互對(duì)接。而Repoze正是將Zope組件按照WSGI進(jìn)行封裝,從而遵循WSGI的python web 框架可以很容易使用這些組件。
最初,Repoze推出了自己的一個(gè)非常輕量級(jí)的web框架:repoze.bfg。在repoze.bfg中利用了ZCA的特性。于是python web framework世界中又多了一方勢(shì)力。但恰恰是這個(gè)不起眼的小勢(shì)力推動(dòng)了歷史的進(jìn)程。repoze.bfg和Pylons類似, 幾乎都是完全的策略自由(policy-free),你可以隨意的指定數(shù)據(jù)持久層,模板系統(tǒng)等外圍部分,而其核心就是約定了URL如何映射到 view 代碼以及如何調(diào)用view,在這個(gè)過程中完全遵循WSGI規(guī)范。后來repoze.cfg的開發(fā)者決定將其合并到Pylons。于是拉開了Python web框架合并的序幕。這個(gè)合并的框架叫做Pyramid。無獨(dú)有偶,原本基于Pylons的TurboGears也宣布開發(fā)基于Pyramid的分支。
至此,混亂的江湖看到了統(tǒng)一的希望,相信越來越多的python web框架會(huì)融合,或至少能夠互通。或許,隨著更加開放的框架的出現(xiàn),Django會(huì)慢慢淡出大家的視野,讓我們拭目以待。
轉(zhuǎn)載于:https://www.cnblogs.com/holbrook/archive/2012/08/29/2662032.html
總結(jié)
以上是生活随笔為你收集整理的python web框架互相融合, Pyramid或取代Django的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Error:NgdBuild:604解决
- 下一篇: devi into python 笔记(