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


