TurboGears 好用的地方並不是在它堆砌了許多開源的 python web 專案(如不曾成功過的 subway),而是真正提出了一個整合這些 python web 開發資源的方法. 並提供相當具有 python 風格(pythonic) 的使用方式.
上一篇提到了Comet,以及Turbogears。 Turbogears是用Python實做的一套Web development framework,有點像Ruby on Rails那樣,可以讓人用Python快速建構web application。這個framework包山包海,一般web app需要用的東西全都有,而且也很容易上手。我一連用它作了2個project,都很愉快的解決掉,直到最近要作即時性非常重要的web game,才發現我需要有server主動送出資料給client的能力。 我根據Server Push and Server Sockets和XMLHttpRequest兩篇reference,在Turbogears上實做出一個簡單的Comet decorator。
傳統Web的運作方式是建立在client對server的request上。也就是說client不送request,server就沒辦法主動送資料給client。這算是先天上的限制,沒辦法解決。而最近web application的花樣越來越多了,越來越多的網站打著web 2.0的口號,要把人們需要的所有軟體全都搬到web上面來。許多軟體都有即時性的資料更新問題,例如即時通訊、遊戲、股票行情等等,都會有許多資料主動從別的地方往我們送。但傳統的web不允許這種溝通方式,那究竟要怎麼實做這些功能? 最簡單的方法是polling,由client定時去問server有沒有需要更新的資料,理論上只要問得夠頻繁,user感覺起來就會像是即時的更新一樣。但polling會造成很多無謂的網路頻寬浪費,以及server的額外負擔,所以這麼作實在不是個好選擇。 另一個方法是最近開始有要被炒熱跡象的技術: Comet。 但說穿了,Comet其實就是許多年前蠻流行的CGI聊天室所用的Server Push技術。
TurboGears -- 提供网页前端到后端整合的网站框架 python 上有无数网页开发模组可选择. 随着选择的增加, 要挑选合适的模组会花上开发者宝贵的时间精力, 众多选项的负面效果开始让 python 开发者感到喘不过气.
當開始用 MVC (Model, View, Controller) 的方式設計網站程式後, 組織網站架構的重任就落到了程式控制 (Controller) 部份的程式上.
Ok, some time ago I've covered how to configure pydev to work with Turbogears, and since them, I've been having some requests to do the same for Django, so... here we go ;-)