轉(zhuǎn)自:杜文山 《快樂程序》第一輯 Zope概念和架構(gòu)
Zope框架有一些基本概念,理解了這些概念有助于充分使用Zope。
Zope涵蓋了很多Web應(yīng)用程序開發(fā)者需要處理的底層細(xì)節(jié),比如數(shù)據(jù)的持續(xù)性,數(shù)據(jù)的完整性,數(shù)據(jù)訪問控制等等,這樣就可以讓你集中精力在解決問題上。比起其它的語言或框架,Zope可以讓你充分利用Zope提供的服務(wù)來更快速的構(gòu)建web應(yīng)用程序。Zope可以讓你使用Python語言來編寫web應(yīng)用程序中的邏輯處理部分,當(dāng)然也可以用Perl。Zope還提供兩種方式,就像模板一樣,來處理文本、XML和HTML 這樣的數(shù)據(jù),一種式文本模板標(biāo)記語言(DTML)和Zope頁面模板(ZPT)。
不同于基于文件的Web模板系統(tǒng),比如ASP或PHP,Zope是高度面向?qū)ο蟮腤eb開發(fā)平臺。許多語言都支持面向?qū)ο蟮母拍?,包括編寫Zope的Python語言。常見的Web腳本語言比如Perl或PHP部分支持面向?qū)ο蟮奶匦?,通過閱讀“面向?qū)ο?#8221;這一章可以幫助深入理解這個概念,也可以通過本書中提供的例子來深入理解這個概念。
Zope之所以形成,其中一個基本的理念是:Web的基礎(chǔ)是面向?qū)ο蟮?。指向某個 Web資源的URL實(shí)際上就是對象容器中對象的路徑。HTTP協(xié)議提供了一種對象發(fā)送消息和接收回應(yīng)的方法。
Zope的對象結(jié)構(gòu)是分層次的,就是說典型的Zope站點(diǎn)是由對象組成的,對象又有可能包含其他對象。根據(jù)對象的名稱,Zope按照層次結(jié)構(gòu)通過URL映射到對象。比如,URL "/Marketing/index.html"可以用來訪問文件夾對象"Marketing"中的名為"index.html"的文檔對象。
Zope就是以這樣一種直接的方式“出版”你所創(chuàng)建的對象?;具^程如下:
http://www.zope.org:8080/Resources?batch_start=100
還比如:
/Uncles/Rick/Uncles/Danny/Uncles/Louis完整的URL就可以是:http://localhost:8080/Bob 。 更為詳盡的解釋請參考:Zope 開發(fā)指南中的對象出版一章Object Publishing
Zope可以通過完全通過瀏覽器來創(chuàng)建和處理各種對象。Zope提供的管理界面就像 Windows中的資源管理器。對象可以按照層次放在任何地方,站點(diǎn)管理者通過點(diǎn)擊對象的不同視圖來管理對象。不同的對象有不同的視圖。比如“DTML Method”對象有一個標(biāo)有“Edit”的視圖,其中可以編輯代碼,“數(shù)據(jù)庫鏈接對象”(Database Connection)提供修改連接和參數(shù)的視圖。所有的對象都有一個“安全”(Security)視圖,用于管理訪問權(quán)限控制。
Zope區(qū)別于其它應(yīng)用服務(wù)器的一個顯著特點(diǎn)是Web對象模型和Web開發(fā)模型緊密結(jié)合。從而可以讓許多不同的人都可以參與進(jìn)來, Zope允許對不同的用戶進(jìn)行安全授權(quán),從而可以讓頁面設(shè)計(jì)者,數(shù)據(jù)庫管理員,以及內(nèi)容管理員協(xié)同工作。
成功的Web站點(diǎn)需要許多人共同參與,比如應(yīng)用開發(fā)者,SQL管理員,內(nèi)容管理員,甚至是最終的用戶。此時,安全問題就變得及其重要。如何控制,以及如何分配權(quán)限?比起傳統(tǒng)的基于文件的系統(tǒng),Zope中的對象提供了豐富得多的安全許可。不同的對象可以有不同的安全限制,比如對于“SQL Method”對象,你可以允許用戶調(diào)用它,但不能更改或查看源代碼。你還可以限制用戶只能創(chuàng)建某種類型的對象,比如只能創(chuàng)建文件夾或DTML文檔,而不能創(chuàng)建“SQL Method”對象。
Zope通過“用戶文件夾”("User Folders")來管理用戶。在這個特殊的文件夾中包含用戶信息。也可以通過添加擴(kuò)展包來擴(kuò)展用戶文件夾,從而可以通過關(guān)系型數(shù)據(jù)庫或LDAP目錄來管理。添加新用戶文件夾的權(quán)限可以分派給下級文件夾中的用戶,從而可以讓你認(rèn)可的用戶來管理網(wǎng)站中的某一部分。
Zope對象存儲在一種高性能的支持事務(wù)機(jī)制的對象數(shù)據(jù)庫中,即Zope對象數(shù)據(jù)庫(ZODB).對象數(shù)據(jù)庫認(rèn)為每個Web請求是個單獨(dú)的事務(wù)。在Web請求期間,如果執(zhí)行過程中發(fā)生了錯誤,任何所做的更改都將被取消。對象數(shù)據(jù)庫還支持多級撤銷,這樣就可以讓站點(diǎn)管理員僅僅通過點(diǎn)擊“undo”按鈕撤銷更改。Zope框架中實(shí)現(xiàn)對象持續(xù)和事務(wù)的所有方式對開發(fā)者都是透明的。關(guān)系型數(shù)據(jù)庫在Zope框架中依然有效。
“獲取”(Acquisition)是Zope中非常重要的一個概念,這個概念簡單的說就是:
因?yàn)樵谒阉鲗ο蟮臅r候是按照從當(dāng)前目錄往上按照層次來獲取的,因此很容易指定生效的范圍。比如,有一個包含與體育內(nèi)容相關(guān)的文件夾“Sports”,你可以在這個文件夾中創(chuàng)建新的頁眉和頁腳文件。這樣就可以使“Sports”文件夾和下級文件夾中調(diào)用這兩個文件。而不會調(diào)用“Sports”上級文件夾中的文件。
在“獲取”一章中將詳細(xì)講述這一概念
Zope是高度可擴(kuò)展的,可以通過多種方法創(chuàng)建新的Zope對象,即可以通過用Python 語言編寫新的擴(kuò)展模塊,也可以完全通過Web來創(chuàng)建。Zope已經(jīng)包含了很多內(nèi)置的組件,這些組件可以幫助進(jìn)行擴(kuò)展。Zope當(dāng)中已經(jīng)包含了一系列框架類,這些類在創(chuàng)建新Zope對象時用來處理細(xì)節(jié)問題。
Zope已經(jīng)有了很多擴(kuò)展產(chǎn)品,這些擴(kuò)展產(chǎn)品用于增強(qiáng)Zope的功能,比如添加論壇、數(shù)據(jù)處理、XML工具,以及電子商務(wù)程序等等。這些程序大多數(shù)是由Zope愛好者編寫的,并且大多數(shù)是開放源代碼的。
Zope由一些不同的組件構(gòu)成,從而幫助你構(gòu)建web應(yīng)用程序。下圖顯示了這些基礎(chǔ) Zope組件:
Zope 架構(gòu) |
說明: