不查則已,一查驚人

PEP 333 點出了這個問題,進而定義 WSGI 規範,希望 web application framework 和 web server 之間能有一套共同運作的準則,允許同一套 framework 在大多數的 web server 上運作。

整理這份資料的起因是對於 Twisted 的好奇。Twisted 是一個 Python-written 的 event-driven networking framework,twisted.web 是其中的 web server,可以被 web application framework 使用。nevow 是採用 twisted.web 的 templating system。

nevow 有趣的地方在於 Stan,Stan 讓使用者以這種方法來產生 XML 資料:

import random
from nevow import rend, tags

class Greeter(rend.Page):
    def greet(self, context, data):
        return random.choice(["Hello", "Greetings", "Hi"]), " ", data

    docFactory = loaders.stan(
    tags.html[
    tags.head[ tags.title[ "Greetings!" ]],
    tags.body[
        tags.h1(style="font-size: large")[ "Now I will greet you:" ],
        greet
    ]
])

twisted 真正吸引人的地方是能以非同步的方式,讓程式同時擁有各種網路通訊的能力,並且不限於 IP 網路。如果我要寫一個能開啟 TCP/IP 通訊介面的程式,twisted 是非常好的選擇。

Quixote 則是一個完整的 web application framework,forecastwatch.com 是用 Quixote 開發的。

PythonPaste 是另一個 web application framework,還在開發中。看來它對 server management 和 application framework 作了一些結合。

TurboGears,這個很紅,因為 slashdot 上有人拿它來和 ROR 相提並論 (然而在 Python 裡有 Zope, mod_python,程式庫又多得不得了,想不透在人氣上怎麼是 Python 反過來在追 ROR)。它除了有話題性之外,也是一個很有趣的 "MegaFramework",由 CherryPy: 主要的 framework, SQLObject: 物件化 SQL 資料庫存取程式庫, Kid: 模板語言, MochiKit: JavaScript 程式庫等要項所組成。

TurboGears 雖然仍在 alpha,但 CherryPy 則是已經活了三年的計畫,整套 megaframework 完整且強大,相當地吸引人。

昨天還玩了玩 snakelets。這套 application server 比較沒有意思,但在上面有 frog (blog system) 可以用,算是特色。然而我用了一下最新版,不知道是否時區設定不同,syndication 頁面竟然跑出 traceback; COREBlog 究竟還是成熟得多。

Posted by yungyuc at 22:21, 0 comment, 0 trackback.
Change to page (10 entries in each page): 1
© hover year to navigate month: powered by django