Zope的優點和Apache+PHP+MySQL的比較(轉)
Zope的優點和Apache+PHP+MySQL的比較(轉)[@more@]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也可以支援這種獲取,比如用來呼叫方法m。同樣,m的變數環境就是/a/b/c。
總結:Zope作為http伺服器,可以使伺服器中的檔案和資料夾有屬性和方法等豐富的附加資訊。便於檔案的查詢和管理和表現等操作。同時,它又提供方便的檔案操作。
Zope的現在的缺點是,不能直接使用外部檔案,還要透過ftp複製到資料庫中。現在有對這方面的補救措施,但不是Zope預設的。希望Zope將來能象操作自己的物件一樣操作外部檔案和其他網站的檔案。
Zope作為資料庫的優勢:
從上面的論述,大家對Zope作為資料庫的表現有了大概的印象。Zope和其他資料庫相比,它是一個物件導向的文件資料庫。
不像MySQL,Zope有可視的管理介面,Zope的所有的管理工作都是透過web來完成的。web介面的優點是跨平臺,可以遠端操作,便於介面的定製。 Zope的管理介面和一個檔案管理器類似,當點選一個檔案後,有可以用同樣的web介面來進行檔案的編輯和新增屬性、安全管理等。Zope的指令碼除錯也是用web完成的。
Zope作為資料庫,有強大的使用者許可權管理功能,它的使用者和許可權管理非常強大,可以在某個資料夾下進行新增使用者的操作,也分別對特定的物件都有自己的安全許可權管理。
網站中資料庫中主要的資料是文件,Zope作為文件資料庫,有強大的文件管理功能,有版本管理、歷史記錄功能,有全文檢索功能。同時整合了文件的編輯環境和管理環境,管理文件象在檔案管理器中一樣方便。這些都是一般的資料庫所不具備的。
如果,資料庫中有上萬條記錄,Zope的效率會比傳統資料庫要低,但Zope有大量的介面卡來連結各種資料庫。來實現純表格操作和大量的記錄操作。
Zope作為程式設計和定製環境的優勢:
Zope 有dtml(動態模板標記)語言來嵌入HTML中,實現網頁的動態化。簡單地使用地形式就可以插入動態內容。由於可以方便地加入屬性和方法以及“獲取”功能,文件具有極為豐富的變數環境。可以比一般的客戶端包含提供更強大的功能。又有的形式來方便地獲取多個檔案地內容。在dtml中還可以嵌入Python 表示式。這樣,不用程式設計就具有強大的動態網頁功能,實現導航功能等也輕而易舉。這些功能的實現比PHP等語言要容易的多。
如果要加入複雜的功能,可以用指令碼模組來實現函式和複雜操作,然後在dtml中呼叫指令碼模組,這樣,實現了邏輯和表現的分離。在Zope中允許用Python、Perl和 sql做指令碼語言,各種指令碼可以相互呼叫,這樣實現了多語言的混合程式設計,實現了.NET要實現的混合程式設計的目的。Zope為指令碼語言提供了統一的Zope API。用這種方式(以dtml為媒體)Perl在unix中也可以實現嵌入HTML的效果。Perl愛好者有福了。在這裡可以直接用sql運算元據庫,免去了把sql嵌入其他語言的麻煩。
Zope提出了zclass的概念,在一個product中捆綁了針對特定用途資料的一系列的屬性和方法,甚至編輯和檢視介面、特定許可權、幫助等。比如把任務作為一個zclass,任務有任務的發出人、任務的執行人、任務的開始時間、完成時間、任務的內容等屬性,也可以有一個任務的建立和完成的方法。這樣當呼叫建立方法時給執行人發一封信,當呼叫完成方法時,給發出人發一封信。同時要有任務的web編輯介面,發出任務和修改任務的許可權定義。當建立了這樣一個zclass,就可以在任何資料夾中加入一個任務例項,Zope先檢查使用者是否有新建任務的許可權,然後調出任務的編輯介面填入任務的各種屬性,也有“建立”和“完成”按鈕來呼叫方法。透過zclass可以方便地為Zope增加新功能。這種product 的概念是PHP等語言所沒有的功能,而透過product,Zope可以思路清晰地完成一項複雜地功能。
同時,在product的實現中,不但可以呼叫Zope API,還可以直接呼叫Zope本身的各種模組來實現更復雜的功能。因為Zope是開放原始碼的,又是Python實現的,當程式設計中遇到難題時,可以隨時參考Zope的原始碼,方便的呼叫Zope模組和函式,甚至可以修改Zope程式碼,這些也是其他程式設計環境所沒有的。
Zope的使用者管理、版本管理等功能也是透過product來實現的,因此,Zope有一個標準的、開放的開發環境。
最近剛讀了一篇文章,它用dos和windows的關係來類比Apache和Zope,在Apache中所有的東西都要自己來搞,如果不是自己搞,也要集合很多不同的程式來完成自己的任務,並且每個人的選擇是不同的,這樣,造成了相互之間沒有共同語言,就像要編dos程式,要先自己到各處抓一些圖形程式、列印程式、聲音程式、安裝程式等,來集合在一起,這樣很容易出毛病。而在Zope中,有很多統一的API,當你完成一個product時,使用者管理、許可權管理、管理介面、編輯介面等這些都是Zope自帶的,有API可用,就不用自己亂忙了。比如象zwiki,幾乎不用它,Zope本身就是一個協同工作的產品自帶使用者管理和版本管理,這些就不用浪費時間白手起家了。文章中有一句話很好:“最差的統一程式設計介面也比沒有統一好”。到cmf,Zope更提供了極為豐富的API。
最後,如果對Zope還有什麼不滿意,還可以使用cmf(內容管理框架,Zope的二級開發平臺)來建立、管理網站,開發新功能。cmf對Zope的使用者管理、文件管理、product進行了大量的擴充套件來實現更加高階的功能。關於cmf的功能,需要另外寫一篇文章來敘述。
我曾經用過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也可以支援這種獲取,比如用來呼叫方法m。同樣,m的變數環境就是/a/b/c。
總結:Zope作為http伺服器,可以使伺服器中的檔案和資料夾有屬性和方法等豐富的附加資訊。便於檔案的查詢和管理和表現等操作。同時,它又提供方便的檔案操作。
Zope的現在的缺點是,不能直接使用外部檔案,還要透過ftp複製到資料庫中。現在有對這方面的補救措施,但不是Zope預設的。希望Zope將來能象操作自己的物件一樣操作外部檔案和其他網站的檔案。
Zope作為資料庫的優勢:
從上面的論述,大家對Zope作為資料庫的表現有了大概的印象。Zope和其他資料庫相比,它是一個物件導向的文件資料庫。
不像MySQL,Zope有可視的管理介面,Zope的所有的管理工作都是透過web來完成的。web介面的優點是跨平臺,可以遠端操作,便於介面的定製。 Zope的管理介面和一個檔案管理器類似,當點選一個檔案後,有可以用同樣的web介面來進行檔案的編輯和新增屬性、安全管理等。Zope的指令碼除錯也是用web完成的。
Zope作為資料庫,有強大的使用者許可權管理功能,它的使用者和許可權管理非常強大,可以在某個資料夾下進行新增使用者的操作,也分別對特定的物件都有自己的安全許可權管理。
網站中資料庫中主要的資料是文件,Zope作為文件資料庫,有強大的文件管理功能,有版本管理、歷史記錄功能,有全文檢索功能。同時整合了文件的編輯環境和管理環境,管理文件象在檔案管理器中一樣方便。這些都是一般的資料庫所不具備的。
如果,資料庫中有上萬條記錄,Zope的效率會比傳統資料庫要低,但Zope有大量的介面卡來連結各種資料庫。來實現純表格操作和大量的記錄操作。
Zope作為程式設計和定製環境的優勢:
Zope 有dtml(動態模板標記)語言來嵌入HTML中,實現網頁的動態化。簡單地使用地形式就可以插入動態內容。由於可以方便地加入屬性和方法以及“獲取”功能,文件具有極為豐富的變數環境。可以比一般的客戶端包含提供更強大的功能。又有的形式來方便地獲取多個檔案地內容。在dtml中還可以嵌入Python 表示式。這樣,不用程式設計就具有強大的動態網頁功能,實現導航功能等也輕而易舉。這些功能的實現比PHP等語言要容易的多。
如果要加入複雜的功能,可以用指令碼模組來實現函式和複雜操作,然後在dtml中呼叫指令碼模組,這樣,實現了邏輯和表現的分離。在Zope中允許用Python、Perl和 sql做指令碼語言,各種指令碼可以相互呼叫,這樣實現了多語言的混合程式設計,實現了.NET要實現的混合程式設計的目的。Zope為指令碼語言提供了統一的Zope API。用這種方式(以dtml為媒體)Perl在unix中也可以實現嵌入HTML的效果。Perl愛好者有福了。在這裡可以直接用sql運算元據庫,免去了把sql嵌入其他語言的麻煩。
Zope提出了zclass的概念,在一個product中捆綁了針對特定用途資料的一系列的屬性和方法,甚至編輯和檢視介面、特定許可權、幫助等。比如把任務作為一個zclass,任務有任務的發出人、任務的執行人、任務的開始時間、完成時間、任務的內容等屬性,也可以有一個任務的建立和完成的方法。這樣當呼叫建立方法時給執行人發一封信,當呼叫完成方法時,給發出人發一封信。同時要有任務的web編輯介面,發出任務和修改任務的許可權定義。當建立了這樣一個zclass,就可以在任何資料夾中加入一個任務例項,Zope先檢查使用者是否有新建任務的許可權,然後調出任務的編輯介面填入任務的各種屬性,也有“建立”和“完成”按鈕來呼叫方法。透過zclass可以方便地為Zope增加新功能。這種product 的概念是PHP等語言所沒有的功能,而透過product,Zope可以思路清晰地完成一項複雜地功能。
同時,在product的實現中,不但可以呼叫Zope API,還可以直接呼叫Zope本身的各種模組來實現更復雜的功能。因為Zope是開放原始碼的,又是Python實現的,當程式設計中遇到難題時,可以隨時參考Zope的原始碼,方便的呼叫Zope模組和函式,甚至可以修改Zope程式碼,這些也是其他程式設計環境所沒有的。
Zope的使用者管理、版本管理等功能也是透過product來實現的,因此,Zope有一個標準的、開放的開發環境。
最近剛讀了一篇文章,它用dos和windows的關係來類比Apache和Zope,在Apache中所有的東西都要自己來搞,如果不是自己搞,也要集合很多不同的程式來完成自己的任務,並且每個人的選擇是不同的,這樣,造成了相互之間沒有共同語言,就像要編dos程式,要先自己到各處抓一些圖形程式、列印程式、聲音程式、安裝程式等,來集合在一起,這樣很容易出毛病。而在Zope中,有很多統一的API,當你完成一個product時,使用者管理、許可權管理、管理介面、編輯介面等這些都是Zope自帶的,有API可用,就不用自己亂忙了。比如象zwiki,幾乎不用它,Zope本身就是一個協同工作的產品自帶使用者管理和版本管理,這些就不用浪費時間白手起家了。文章中有一句話很好:“最差的統一程式設計介面也比沒有統一好”。到cmf,Zope更提供了極為豐富的API。
最後,如果對Zope還有什麼不滿意,還可以使用cmf(內容管理框架,Zope的二級開發平臺)來建立、管理網站,開發新功能。cmf對Zope的使用者管理、文件管理、product進行了大量的擴充套件來實現更加高階的功能。關於cmf的功能,需要另外寫一篇文章來敘述。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-955359/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL、NoSQL和NewSQL的優缺點比較SQL
- kookeey、Luminati 和 Smartproxy 海外代理的特點和優缺點分析比較
- Apache與Nginx的優缺點比較ApacheNginx
- Apache與Nginx的優缺點、效能比較,到底選擇哪個比較好?ApacheNginx
- 字串大小寫轉換和字串的比較字串
- 浮點數的比較
- 優先佇列的比較器佇列
- ==和equals方法的比較
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- Go和Python比較的話,哪個比較好?GoPython
- [轉載] 一篇比較好的 Cypress 特點介紹文章
- TreeMap和HashMap的元素比較HashMap
- js 深比較和淺比較JS
- Go 與 C++ 的對比和比較GoC++
- MySQL二進位制日誌的三種格式優缺點比較MySql
- 主流的CRM系統盤點比較
- [C#] string 和 StringBuilder 的比較C#UI
- tbase和postgres-xl的比較
- EXCEL,POI,EASYEXCEL的使用和比較Excel
- 類和類之間的比較
- mongodb和hbase的簡單比較MongoDB
- powershell中的where和foreach比較
- Mysql中的Datetime和Timestamp比較MySql
- jQuery的prop和attr方法比較jQuery
- BigDecimal的equals() 和 compareTo() 方法比較Decimal
- Oracle date 型別比較和String比較Oracle型別
- 微軟的Serialize和Newtonsoft的SerializeObject比較微軟Object
- MySQL 中的 distinct 和 group by 的效能比較MySql
- C#比較兩個字串的相似度【轉】C#字串
- Java™ 教程(比較字串和字串的部分)Java字串
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- MySQL 的 timestamp 和 datetime 型別比較MySql型別
- C++宏和函式的比較C++函式
- Dalvik 和 Java 位元組碼的比較Java
- Integer的比較
- not in 和 not exists 比較和用法
- Java的位元組碼和ABAP load的比較Java
- Android系統編譯指令make 、mmm、mm優缺點比較Android編譯