歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

Zope的概念和架構

  原文: [url]http://nocache.czug.org/docs/zope/zopebook/Zope_e7_9a_84_e6_a6_82_e5_bf_b5_e5_92_8c_e6_9e_b6_e6_9e_84[/url] 轉自:杜文山 《快樂程序》第一輯 Zope概念和架構 1. 基本概念 * 1.1. Zope是一種框架 * 1.2. 面向對象 * 1.3. 對象出版 * 1.4. 通過Web進行管理 * 1.5. 安全與授權 * 1.6. 本地對象持續和事務(Persistence and Transactions) * 1.7. 獲取(Acquisition ) * 1.8. Zope是可擴展的 2. 基礎Zope組件 1. 基本概念   Zope框架有一些基本概念,理解了這些概念有助於充分使用Zope。 1.1. Zope是一種框架   Zope涵蓋了很多Web應用程序開發者需要處理的底層細節,比如數據的持續性,數據的完整性,數據訪問控制等等,這樣就可以讓你集中精力在解決問題上。比起其它的語言或框架,Zope可以讓你充分利用Zope提供的服務來更快速的構建web應用程序。Zope可以讓你使用Python語言來編寫web應用程序中的邏輯處理部分,當然也可以用Perl。Zope還提供兩種方式,就像模板一樣,來處理文本、XML和Html 這樣的數據,一種式文本模板標記語言(DTML)和Zope頁面模板(ZPT)。 1.2. 面向對象   不同於基於文件的Web模板系統,比如ASP或PHP,Zope是高度面向對象的Web開發平台。許多語言都支持面向對象的概念,包括編寫Zope的Python語言。常見的Web腳本語言比如Perl或PHP部分支持面向對象的特性,通過閱讀“面向對象”這一章可以幫助深入理解這個概念,也可以通過本書中提供的例子來深入理解這個概念。 1.3. 對象出版   Zope之所以形成,其中一個基本的理念是:Web的基礎是面向對象的。指向某個 Web資源的URL實際上就是對象容器中對象的路徑。HTTP協議提供了一種對象發送消息和接收回應的方法。   Zope的對象結構是分層次的,就是說典型的Zope站點是由對象組成的,對象又有可能包含其他對象。根據對象的名稱,Zope按照層次結構通過URL映射到對象。比如,URL "/Marketing/index.html"可以用來訪問文件夾對象"Marketing"中的名為"index.html"的文檔對象。   Zope就是以這樣一種直接的方式“出版”你所創建的對象。基本過程如下: 1. 浏覽器給Zope服務器發送請求。請求的URL格式為:protocol://host:port/path?querystring, 比如: http://www.zope.org:8080/Resources?batch_start=100 2. Zope把URL分解成:"host(主機)", "port(端口)" "path(路徑)" 和 "query string(查詢參數)"。(http://www.zope.org, 8080, /Resources 和 ?batch_start=100, respectively) 3. Zope根據路徑(path,即/Resources)在對象數據庫中定位對象。 4. Zope用傳遞過來的參數來執行這個對象。 5. 如果對象執行的結果返回數值,那麼數值就被發送回浏覽器。一般是返回 HTML,文件數據或圖形數據。 6. 浏覽器解釋收到的數據並顯示。   Zope對象的URL由包含這個對象的文件夾和對象的id組成,用/符號分開。比如: /Uncles/Bob,就調用Uncles目錄中的Bob。   還比如: /Uncles/Rick /Uncles/Danny /Uncles/Louis   完整的URL就可以是:http://localhost:8080/Bob 。 更為詳盡的解釋請參考:Zope 開發指南中的對象出版一章Object Publishing


1.4. 通過Web進行管理   Zope可以通過完全通過浏覽器來創建和處理各種對象。Zope提供的管理界面就像 Windows中的資源管理器。對象可以按照層次放在任何地方,站點管理者通過點擊對象的不同視圖來管理對象。不同的對象有不同的視圖。比如“DTML Method”對象有一個標有“Edit”的視圖,其中可以編輯代碼,“數據庫鏈接對象”(Database Connection)提供修改連接和參數的視圖。所有的對象都有一個“安全”(Security)視圖,用於管理訪問權限控制。 1.5. 安全與授權   Zope區別於其它應用服務器的一個顯著特點是Web對象模型和Web開發模型緊密結合。從而可以讓許多不同的人都可以參與進來, Zope允許對不同的用戶進行安全授權,從而可以讓頁面設計者,數據庫管理員,以及內容管理員協同工作。   成功的Web站點需要許多人共同參與,比如應用開發者,SQL管理員,內容管理員,甚至是最終的用戶。此時,安全問題就變得及其重要。如何控制,以及如何分配權限?比起傳統的基於文件的系統,Zope中的對象提供了豐富得多的安全許可。不同的對象可以有不同的安全限制,比如對於“SQL Method”對象,你可以允許用戶調用它,但不能更改或查看源代碼。你還可以限制用戶只能創建某種類型的對象,比如只能創建文件夾或DTML文檔,而不能創建“SQL Method”對象。   Zope通過“用戶文件夾”("User Folders")來管理用戶。在這個特殊的文件夾中包含用戶信息。也可以通過添加擴展包來擴展用戶文件夾,從而可以通過關系型數據庫或LDAP目錄來管理。添加新用戶文件夾的權限可以分派給下級文件夾中的用戶,從而可以讓你認可的用戶來管理網站中的某一部分。 1.6. 本地對象持續和事務(Persistence and Transactions)   Zope對象存儲在一種高性能的支持事務機制的對象數據庫中,即Zope對象數據庫(ZODB).對象數據庫認為每個Web請求是個單獨的事務。在Web請求期間,如果執行過程中發生了錯誤,任何所做的更改都將被取消。對象數據庫還支持多級撤銷,這樣就可以讓站點管理員僅僅通過點擊“undo”按鈕撤銷更改。Zope框架中實現對象持續和事務的所有方式對開發者都是透明的。關系型數據庫在Zope框架中依然有效。 1.7. 獲取(Acquisition )   “獲取”(Acquisition)是Zope中非常重要的一個概念,這個概念簡單的說就是: * Zope對象可以被包含在其它對象中(比如文件夾)。 * 對象可以“獲取”它們的容器對象的屬性和行為。   所有的Zope對象都支持獲取,這樣就提供了管理各種資源的非常強大的方式。比如,經常使用的SQL查詢語句或者一小段HTML代碼,可以在某個文件夾中定義,通過”獲取“這樣一種機制就可以讓下級文件夾自動調用。如果這個SQL查詢進行了修改,不用擔心下級文件夾,這個修改對所有下級文件夾都有效。   因為在搜索對象的時候是按照從當前目錄往上按照層次來獲取的,因此很容易指定生效的范圍。比如,有一個包含與體育內容相關的文件夾“Sports”,你可以在這個文件夾中創建新的頁眉和頁腳文件。這樣就可以使“Sports”文件夾和下級文件夾中調用這兩個文件。而不會調用“Sports”上級文件夾中的文件。   在“獲取”一章中將詳細講述這一概念 1.8. Zope是可擴展的   Zope是高度可擴展的,可以通過多種方法創建新的Zope對象,即可以通過用Python 語言編寫新的擴展模塊,也可以完全通過Web來創建。Zope已經包含了很多內置的組件,這些組件可以幫助進行擴展。Zope當中已經包含了一系列框架類,這些類在創建新Zope對象時用來處理細節問題。   Zope已經有了很多擴展產品,這些擴展產品用於增強Zope的功能,比如添加論壇、數據處理、XML工具,以及電子商務程序等等。這些程序大多數是由Zope愛好者編寫的,並且大多數是開放源代碼的。 2. 基礎Zope組件   Zope由一些不同的組件構成,從而幫助你構建web應用程序。下圖顯示了這些基礎 Zope組件: [myimg]upload/zopearchitecture.png[/myimg]   說明: ZServer? 這是Zope內置的Web服務器,用於提供內容服務。這個web服務器還通過FTP、 WebDAV?和XML-RPC協議提供服務。 Web Server(Web服務器) Zope還可以和現有的Web Server結合在一起,比如Apache或者Microsoft IIS,以及其它支持通用網關接口(CGI)的Web服務器。 Zope Core(Zope核心) 這是Zope的核心引擎,它控制如何顯示,以及控制管理界面和對象數據庫。 Object Database(對象數據庫) 使用Zope的時候,大多數情況下是在處理存儲在Zope對象數據庫中的對象。 Relational database(關系型數據庫)

數據不一定要存儲在Zope對象數據庫中,Zope中可以使用其它的關系型數據庫,比如 Oracle, PostgreSQL?, Sybase, mysql?等等。 File System(文件系統) Zope還可以使用存儲在服務器文件系統中的文檔和其它文件。 ZClasses? 可以通過使用Web管理界面來添加新的對象。ZClasses?就是這種對象。 ProdUCts(產品) Zope中還可以通過在Zope服務器中的文件系統裡安裝“產品”文件來添加新的對象。



Copyright © Linux教程網 All Rights Reserved