Zope能和Apache+PHP+MySQL進行比較是因為它即是http服務器,又是數據庫,又包含腳本編程語言。現在向大家推薦Zope是因為它的功能更豐富,建立應用更容易,效率比PHP高幾倍。現在的服務器端編程環境有IIS+ASP+sqlserver、Apache+PHP+MySQL、和現在的Zope,相比較Zope對於文檔出版更專業。
我曾經用過dw和frontpage編網頁,就感覺frontpage的導航系統比較好,還有它能生成圖形化的標題,和各種專業化的模板。dw的導航系統幾乎不能用,但dw的網頁制作更專業,dw的模板也有自己獨特的地方。曾經想過將frontpage和dw相結合,但感覺很別扭。當網站的資料多了最迫切的需要是把資料放到數據庫中,這樣容易統一管理。常常奇怪大型的網站常常有統一的外觀,豐富的導航系統,豐富的相關鏈接。肯定在網站的後面有專業的網站管理軟件和專業的技術人員的支持。因此我常常尋找可以用的網站管理系統。在linuxfab.cx網站發現了Zope,終於找到了我想要的東西。
每當向人們推薦Zope的時候,總有人說我用PHP很好不用換,或說用ASP很好。ASP和PHP比較相似,都是可以在HTML中加入腳本語言。相比來說,我比較欣賞ASP,它是基於vb的,同時因為它有獨立的腳本引擎,也可以支持Perl、Javascript等腳本。這樣大家可以用自己熟悉的語言來編程不要另學新的語言。而PHP就比較奇怪,本來和Perl很相似,為什麼不干脆用Perl來實現在頁面的嵌入還要專門發明一種語言,來增加大家的學習負擔,PHP雖然語言稍微清楚了一些,但沒有根本的不同,卻把Perl的精華模式匹配丟掉了。Perl也比較奇怪,為什麼不象jsp一樣推出相同的功能?因此心理上對PHP比較討厭,雖然它和數據庫的緊密結合,以及能生成圖象的功能比較好。Zope雖然在網站管理上很出色,但它同時也是一個很好的編程環境。它支持Python和Perl,Python現在的發展勢頭很強,善於編制大的程序,是一個語法非常豐富的面向對象的數據庫,在很多方面可以代替c和JAVA,編程效率要高很多,很有吸引力。我學完了Python正找不到使用的機會,Zope正好給了我使用Python的機會,也讓我領教了Python的強大。->Zope整個程序都是用Python編的!
Zope是一個面向對象的數據庫,是一個文檔管理的數據庫,是一個強大的http服務器,是一個完善的開發環境。從本質和出發點來說,Zope是一個文檔管理數據庫。它有大量的文檔管理功能。
先說Zope做為http服務器的優勢:
雖然Zope是個數據庫,它的所有文檔都放到數據庫中而不是放到文件系統,但它卻完成了一個類似文件管理器的管理界面和一個ftp接口,完全可以當作一個一個大家熟悉的文件系統來使用,管理習慣很熟悉。
而Zope又是一個面向對象的數據庫,面向對象的數據庫和一般的數據庫很不一樣,它不象關系數據庫一樣基於表格,而更象文件系統一樣是樹狀結構的。從對象的角度來說,記錄的各個域值就是對象的各個屬性。它超越關系數據庫的地方是能適應各種數據類型,每種數據類型都是一種對象,不但有各種屬性,還有各種操作特定數據類型的方法。常常聽說對象數據庫,通過Zope才具體接觸了對象數據庫。(ingresql和userland的產品也是對象數據庫)
Zope的特點是把文件和文件夾作為基本的對象,每個文件和文件夾都可以隨意增加屬性,同時,文件夾下面的文件和文件夾又是父文件夾的屬性。通過增加腳本文件的形式,可以為文件和文家夾增加方法。比如,一個文件可以加入“作者”、“分類”、“難度等級”等屬性,文件夾也可以加入“顯示此文件夾下所有文件內容”的方法。
Zope還有它獨特的方法來實現了對象級的繼承。這個方法就是“獲取”。比如文件系統的結構是/a/b/c,c是一個文件,在c中如果要引用一個變量v,如果c的屬性中沒有v,就到b的屬性中找,然後找b下是否有叫v的文件,然後找a的屬性,然後找a中的文件,然後找/目錄的屬性,找根下的文件。如果v是b的屬性,就不用特別用a.b.v來引用。這樣,c文件中就會從各級文件夾繼承豐富的變量環境。一個典型的例子是,如果在根目錄下放置了文件standard_HTML_header,就可以在任何目錄下的文件引用它來表現每個網頁的共性的東西。如果在某個目錄下需要自己特有的網頁效果,只要在這個目錄下放一個特有的standard_HTML_header就可以了。這樣,這個目錄下的文件就會獲得這個目錄下的header,而不是根目錄下的header,從而實現了每個欄目的個性。
獲取的形式還可以是:c.m,m可以是方法,也就是腳本文件,比如用m來使c有另外一種表現形式。m文件可以放到b文件夾下,也可以放到a文件夾下,c.m的表達方法都成立。這樣,我在根目錄下放了m,網站的所有文件都有了方法m。
用url也可以支持這種獲取,比如用