動態內容
對象發布允許你生成動態內容。
不象HTML頁面或CGI程序,Zope是以對象的方式來看待一個web應用的。對象是小的內容與行為的混合體。Zope允許你將對象編寫在一起來生成強大而又靈活的對象集。這些對象集可以對web請求進行應答。結果就是動態內容。
這一點與通常所創建的web站點有很大的區別。僅僅將一組HTML頁面和CGI腳本放在一起來生成一個web站點,并不能生成任何協作。當 HTML頁面和CGI腳本被收集進一個web站點時,它們的行為沒有什么不同。HTML頁面仍然發送同樣的靜態內容,CGI腳本仍然執行著同樣的處理。站點的元素之間不進行通信,而且當改變其中一個元素時,你需要手工更新其它的元素。
Zope卻不這樣。每個Zope對象感覺上是“聰明的”,它們是自適應的并且可以同其它對象進行通信。Zope對象是協同工作的。對象可以從其它的對象獲得信息和作為。將對象聯系在一起的方式決定了對于它們哪些服務和內容是有效的。(閱讀What is Acquisition?可以了解更多的內容)接著對象適當地根據給定的上下文對象和內容表現自已。這就是發布(publishing)處理。
使用URL來引用對象
那么一個Zope對象是如何被發布的呢?通過URL請求。
為了在Zope中引用一個對象,你要使用URL。這一點與一個web服務器引用HTML文件的方式非常相似。這里有一個URL例子:http://www.example.com/Users/Barney/Song
對于一個正常的web服務器來說,這個URL的意思是返回位于Users目錄下的Barney目錄下的名為Song的文件。對于Zope來說,這個URL意思是發布位于Userd對象內的名為Barney的對象內的名為Song的對象。
那么有什么不同嗎?
對于Zope來說,每個對象都是動態的,例如,如果Song對象可以通過不同的方式來演唱,你只需要向URL增加額外的信息就可以請求一種不同的行為。如:
http://www.example.com/Users/Barney/Song/sing?audience=children&repeat:int=5
這個URL告訴Zope發布Song對象,通過調用它的sing方法,使用參數(audience="children", repeat=5)。
另外,上下文對象影響著對象是如何被發布的。所以在我們的例子中,Users對象可能定義了一個HTML頁眉和頁腳,同時Barney對象可能定義所有的文本為綠色。所以當Song對象發布自身的時候,在Barney和Users對象中的事實導致了歌詞以綠色文本顯示,并且帶有一個標準的HTML 頁眉和頁腳。如果你將Song對象移到另一個位置,它將根據不同的上下文對象顯示也不一樣。
每一個Zope對象都是動態的,并且可以使用不同的方式來發布,從而展現不同的行為。
(責任編輯:銘銘)