欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
為什么要選擇Zope 3

為什么要選擇Zope 3

#原著(zhù):Jim Fulton(CTO of Zope Corporation)#來(lái)源:http://www.zopemag.com/Issue010/Section_Articles/article_WhyZope3.html#翻譯:alang 2005/08/28  (alang.yl # gmail.com)- - - - - - - - - - - -By Jim Fulton  | February 12, 2005

1. 介紹

Zope3 的第一版在11月7日(2004年)發(fā)布了。這是Zope3項目史上的一個(gè)重大里程碑?;蛟S很多人都想知道如果他們將要使用Zope3話(huà),到底對他們意味著(zhù)什么,以及"為什么要選擇它"?需要嗎?不需要嗎...我將試圖回答這個(gè)問(wèn)題,或者至少,我提供足夠多的信息,讓人們自己來(lái)回答這個(gè)問(wèn)題。

首先,我將追思Zope3的歷史,講述它一路走來(lái)的原由。

2. 歷史:Zope和前身

Zope最初是設計給非技術(shù)用戶(hù)使用的,讓他們很容易就能管理信息,創(chuàng )建動(dòng)態(tài)的web應用。有幾種途經(jīng)可以達到這個(gè)目的,比如:

  • 一個(gè)通過(guò)Web來(lái)管理數據、模板和腳本的環(huán)境
  • 提供SQL方法和數據庫連接,讓它可以很easy的使用關(guān)系數據
  • 一個(gè)內嵌的索引機制,讓它可以很easy的提供搜索功能
  • 獲取機制,提供一個(gè)簡(jiǎn)單的方法可以從層層目錄中共享信息;還有
  • ZClasses,提供一個(gè)基本的方法,來(lái)創(chuàng )建新的content類(lèi)型,并且/或者擴展已有的content類(lèi)型以提供新的方法或者模板

上面的這些方法,對于大多數的web應用來(lái)說(shuō)工作得非常好了。實(shí)際上,有一些老土的、非技術(shù)人員開(kāi)發(fā)的內容管理系統(content-management systems),僅僅使用了我說(shuō)的第一個(gè)方法。

2.1. 使用Python給Zope帶來(lái)的變化

然而,許多開(kāi)發(fā)者并不滿(mǎn)足于一個(gè)只是預先寫(xiě)好對象、通過(guò)web來(lái)定制的工具。對于這些開(kāi)發(fā)者來(lái)說(shuō),必須有一整套開(kāi)發(fā)工具和APIs的集合提供才行。比如他們才能構建額外的文件系統庫,使用Python靈活的APIs。

對于Zope2的Python開(kāi)發(fā)者們來(lái)說(shuō),已經(jīng)有了一些顯著(zhù)的變化:

  • 1.Zope2這個(gè)framework非常復雜,這在很大程度上應歸咎于應用領(lǐng)域的固有復雜性。Zope有許多特性,涵蓋了從事務(wù)管理、安全性到標準元數據等方方面面。新Zope應用通常需要所有這些功能都協(xié)同工作。繼承機制通常用來(lái)管理復雜事物,但是延伸的范圍并不廣。為了只提供最基本的功能,一個(gè)名叫 SimpleItem的類(lèi)被提出來(lái)了。這個(gè)名字提醒人們,一個(gè)對象只需要提供最基本的功能就行了,而不要做過(guò)多額外的事,盡管這個(gè)基本類(lèi)本身還有許多基類(lèi)。這些基類(lèi)為了方法的重載或者提供配置數據等不同的目的而被定制得專(zhuān)用化了。搞清楚哪些是要被重載的,哪些是要配置的,以及這些繁多的基類(lèi)如何互相調用,這工作太難了。(真的是不可能的任務(wù))

  • 為了盡可能簡(jiǎn)單的提供豐富的功能(特別是對于非技術(shù)用戶(hù)而言),Zope做了許多自動(dòng)化的工作。這對于簡(jiǎn)單的應用是非常好的,但是對于那些更復雜些的應用,反而是一種障礙了。主要表現在以下方面:
    • 隱式獲?。╥mplicit acquisition); 還有
    • 文檔模板標記語(yǔ)言(Document Template Markup Language ,DTML)所用的名字空間堆棧
    • 利用這些便利性,用戶(hù)可以不必嚴格的寫(xiě)明到哪里查找就能獲得數據。大多數情況下這工作得很好,但是如果出現不可預料的命名沖突,它就很難查明相沖突的名字在哪里。就算它能運行,也很難說(shuō)清楚它為什么能運行。
    • 3.Zope提供了一種非常方便的安裝第三方產(chǎn)品(products)的機制。不幸的是,它很難適用于所有的產(chǎn)品。在傳統的Zope產(chǎn)品中,一個(gè)對象的所有功能都是它自己的類(lèi)或者基類(lèi)提供的。改變這些產(chǎn)品行為的唯一方式,是去修改或者子類(lèi)化它們。修改產(chǎn)品并不是一個(gè)好主意,因為這讓維護升級變得很困難。子類(lèi)化也是令人討厭的,因為它會(huì )讓基類(lèi)和子類(lèi)之間耦合性得過(guò)于緊密了。(這就是眾所周知的脆弱的基類(lèi)問(wèn)題。)Zope的CMF(Content- Management Framework)的一個(gè)最大的貢獻在于它的工作機制,它能把呈現和業(yè)務(wù)邏輯分離,能與目標類(lèi)無(wú)關(guān)的進(jìn)行管理,并且可以很容易的實(shí)現用戶(hù)化/定制。換句話(huà)說(shuō),這可以讓呈現和業(yè)務(wù)邏輯在不修改源碼和不使用繼承的情況下就能被用戶(hù)化/定制。

在2000年的晚些時(shí)候,Zope公司的工程師們想出了能讓Zope更好的為開(kāi)發(fā)人員服務(wù)的方法。主要是以下幾個(gè)方面。

  • 建立一個(gè)更好的模板系統,讓開(kāi)發(fā)者和網(wǎng)頁(yè)設計師們能更容易的協(xié)同工作。在那個(gè)時(shí)候,Zope只有一個(gè)叫DTML的模板語(yǔ)言。DTML有一個(gè)大多數模板系統都會(huì )有的問(wèn)題,那就是模板本身不是合法的web頁(yè)面,不能用HTML編輯工具來(lái)編輯更新。一個(gè)設計師可以先做一個(gè)網(wǎng)頁(yè),但是在程序員插入代碼讓它變成動(dòng)態(tài)頁(yè)面后,它就失去控制了。我們工作的結果是設計出了一個(gè)更好的模板系統——ZPT(Zope Page Templates),已經(jīng)在2002年發(fā)布了。
  • 提供一個(gè)組件模型,讓定制產(chǎn)品更容易。意思就是說(shuō),要把產(chǎn)品功能分解成更精練的、可以單獨升級的零部件。
  • 用一些像傳統model-view-controller (MVC)或是文檔視圖(document-view)的架構,讓呈現與業(yè)務(wù)邏輯完全的分離。

Python就是Zope的"秘密武器"。Zope正與市場(chǎng)上的眾多基于Java的方案在競爭。為什么相比于基于Java的應用服務(wù)器,用Zope開(kāi)發(fā)應用更具生產(chǎn)力?主要原因就是因為我們有Python。盡管有上面的這些吹捧(牛B),然而對于Python程序員來(lái)說(shuō),Zope并沒(méi)有太多的吸引力。(說(shuō)的的確是實(shí)情。Jim還是有自知之明的。譯注) 為了讓Zope對Python程序員產(chǎn)生更大的魅惑,為了讓我們更好的撬動(dòng)Python的力量,這就是我們開(kāi)發(fā)Zope3的最大的原因所在。

2.2. 接下來(lái)的歷史

在經(jīng)歷了幾次頭腦風(fēng)暴之后不久(或許與之并無(wú)關(guān)聯(lián)),Zope公司雇傭了核心的Python開(kāi)發(fā)團隊,Python Labs,他們帶來(lái)了新的敏銳的洞察力。(請讀者們回想一下Guido是什么時(shí)候在Zope公司呆過(guò)?譯注)

正如上面提到的,那些頭腦風(fēng)暴的一個(gè)早期成果就是ZPT了。它讓開(kāi)發(fā)者和(網(wǎng)頁(yè))設計者的協(xié)同工作成為了可能。

我們意識到,一個(gè)類(lèi)MVC的framework是需要一個(gè)組件架構的,于是我們研究了一下,它(的功能之一)應該支持業(yè)務(wù)邏輯和呈現的分離。

在一個(gè)無(wú)狀態(tài)的環(huán)境比如HTTP里面,使用組件架構是一個(gè)大的挑戰。在無(wú)狀態(tài)環(huán)境下,每一次request所需要的組件都要被裝配,這意味著(zhù)組件裝配必須要很容易的就能進(jìn)行。

請注意CMF也提供了一些組件系統的特點(diǎn)。業(yè)務(wù)代碼已經(jīng)被從內容對象中分離了,并且分成了tools和skins。Tools是提供特定業(yè)務(wù)功能的組件。 Skins是提供呈現和業(yè)務(wù)分離的,重點(diǎn)在呈現上。雖然CMF能滿(mǎn)足我們的一些需求,并且也示范了把業(yè)務(wù)邏輯和呈現從數據管理中分離的一些好處,但是我們還想看看,我們能不能把事情做得更好。具體的來(lái)講,我們想要用對象來(lái)擴展功能,而不是用一個(gè)個(gè)的模板和腳本。CMF依賴(lài)獲取機制(acquisition),這意味著(zhù)所有的模板和腳本都共享著(zhù)一個(gè)共同的命名空間(namespace),而不管內容的類(lèi)型是什么。名字最好要包含類(lèi)型信息,并且要小心謹慎的?。ㄒ蝗痪涂赡苤孛?。

我們考慮了一個(gè)初步的組件分類(lèi),分成內容,視圖和業(yè)務(wù)組件,大至對應著(zhù)MVC。還設計了一個(gè)通過(guò)注冊和橫切(traversal)組件的方法來(lái)進(jìn)行組件裝配的機制(component-assembly mechanism)。組件裝配基于對象的連結,通過(guò)接口(interfaces)。

我們創(chuàng )建了最初的原型,讓組件裝配的想法能夠付渚實(shí)施。這給未來(lái)的工作激發(fā)了足夠強的希望。

在早期原型工作之后,我們編出了關(guān)于組件如何工作的更詳細的故事,設立了一個(gè)簡(jiǎn)短的培訓課程,用幻燈片來(lái)演示組件處理的流程。這個(gè)演講是虛構的,描述了還沒(méi)有寫(xiě)出來(lái)的軟件(的工作機制)。Python Labs團隊就埋頭至力于定出開(kāi)發(fā)流程(應該指的是詳細設計。譯者注),并且提供反饋/建議。我把這個(gè)演講進(jìn)行了許多次,不斷根據反饋來(lái)更新我的培訓課程。實(shí)際上,這個(gè)培訓課程已經(jīng)成了組件架構的第二個(gè)原型了。

在做詳細設計的過(guò)程中,確定了一個(gè)主要的目的(超越了組件開(kāi)發(fā)),要提供一個(gè)可以吸引Python程序員們的開(kāi)發(fā)模式。Zope 2的Python產(chǎn)品有太多的Zope特有的配置信息混雜在其中,這讓這些python代碼拒人于千里之外,既難讀又難懂。

在作這種努力的過(guò)程中,我們覺(jué)得可以通過(guò)確立Zope將會(huì )是什么樣的公開(kāi)的想法/思路,來(lái)極好的改善開(kāi)發(fā)體驗。我們決定把Zope3用為Zope的一個(gè)主要版本來(lái)推進(jìn)。

在2001年將要結束的時(shí)候,我們在tutorial中不斷的重申,明確要從事的Zope3項目要達到下面這些目標:

  • 改善開(kāi)發(fā)體驗,提供一個(gè)更合理的開(kāi)發(fā)模式,吸引Python和其它的開(kāi)發(fā)者
  • 讓在Zope中創(chuàng )建有用的對象更簡(jiǎn)單
    • o讓使用現存的Python類(lèi)成為可能(作最少的或者不作修改) o要使用Zope的功能,只要作少量的額外改變
  • 讓學(xué)習曲線(xiàn)變得平滑
  • 讓軟件重用更加便利
    • o 使用已存在的非Zope特色的對象 o 增加、刪除、替換現有對象的功能 o 改變現有對象的用戶(hù)接口 o 提供可替換的訪(fǎng)問(wèn)對象的方式(比如FTP,XML-RPC,wxWindows)
  • 配置Zope軟件更靈活
  • 借鑒那些從使用、開(kāi)發(fā)Zope2積累的經(jīng)驗教訓
  • 把CMF的技術(shù)和開(kāi)發(fā)模式整合到Zope中去

Tres Seaver在Zope公司內部已經(jīng)鼓吹了很長(cháng)時(shí)間的極限編程(Extreme Programming ,XP)了。在我們需要著(zhù)手Zope3的實(shí)現工作時(shí),我決定同時(shí)也償試一下XP。我們制定了一個(gè)為期3天的開(kāi)發(fā)活動(dòng),我把它叫做"sprint"(請參看 ZopeMag的Zope Sprinting指南來(lái)了解相關(guān)情況。原編輯注),盡可能用最快速度創(chuàng )建一個(gè)最小的Zope3的原型。我們使用了結對編程(pair- programming),故事/情景板,單元測試。這個(gè)活動(dòng)證明了這時(shí)的生產(chǎn)力是極高的。

我們在Zope公司還舉行了其它的一些Sprint活動(dòng),學(xué)習一直在進(jìn)行,也得到了許多重要的早期進(jìn)步。

Zope3最初是作為Zope2的一個(gè)分支開(kāi)始的。我們很快意識到,已有Zope2代碼的桎梏讓人很難爆出新思想的火花。向后兼容老的代碼,讓人分心不少。最后我們決定,在一開(kāi)始不考慮向后兼容的問(wèn)題,很快地我們就為Zope3建立了一個(gè)獨立的開(kāi)發(fā)樹(shù)。

3. 開(kāi)放的進(jìn)程

在2001年12月,在開(kāi)放Zope倉庫來(lái)捐獻給Zope公司外部的過(guò)程中,我們對Zope社區公開(kāi)了Zope3項目。Zope3提供了一個(gè)重大的機會(huì ),讓人人能參與到Zope的過(guò)程中來(lái)。我們推廣了sprint,在Fredericksburg舉行了三次python sprints,分別在2002年的一月和二月。

  • 使人們加入到Zope3的開(kāi)發(fā)中來(lái)
  • 建設這個(gè)社區;還有
  • 完成重要的工作

sprint活動(dòng)最重要的好處是讓人們能碰個(gè)面,互相認識,還有相互合作。這讓后來(lái)的遠程工作變得更容易了。

Zope3項目也導致了為Zope工作的人數大量增長(cháng)。主要的和大多數的代碼都來(lái)自Zope公司之外的貢獻。Zope3是個(gè)名副其實(shí)的社區項目。

4. 發(fā)現之旅

從Zope3項目宣布到現在,已經(jīng)整整3年了,這比預期的長(cháng)了許多。大多數功能是在第一年開(kāi)發(fā)出來(lái)的,那時(shí)進(jìn)展神速,并且是在沒(méi)有任何Zope2代碼的基礎上,只是從一個(gè)廣闊的社區中得來(lái)的。在2002年底,我們開(kāi)發(fā)出了我們認為應該是第一個(gè)alpha版的release。

在2003年初,我們進(jìn)行了一連串的"geddons",這是一個(gè)為了及時(shí)的在夏天完成Zope3所進(jìn)行的重構工作。這是評估我們工作成果的一段時(shí)期。然而基于我們的經(jīng)驗,我們發(fā)現原始設計方面需要修改。到2003年的秋天,我們已經(jīng)作了許多重大的改進(jìn),但是又確信還有許多修改要做,一直要進(jìn)行到2004 年。

從2003年初到2004年是一個(gè)鞏固基石的時(shí)期。只增加了為數不多的新功能。工作重心幾乎全部放在建造一個(gè)可供日后增添功能的穩固的基石上。大致可以描述為--簡(jiǎn)化框架!后期增加的代碼大部分又去掉了。

許多修改是十分有意義的。舉例來(lái)說(shuō),我們停止使用上下文包裝(context wrappers)來(lái)指明對象的位置(location),換為了直接保存位置路徑,這使得位置感知(location-aware)和對象引用的代碼被大大簡(jiǎn)化了。我們完全重寫(xiě)了大部分的子系統,這些修改極大的完善了最終系統的結構。這些是可行的,因為我們希望花些時(shí)間,來(lái)從最初的失誤和重做工作中得到一些教訓。

作出要慢下來(lái)并且要從容不迫、花費雙倍的時(shí)間來(lái)做出第一個(gè)發(fā)行版的決定,是基于我們要求卓越的承諾,還有,意識到了我們不必那么操之過(guò)急。因為不管怎么樣,Zope2還是一個(gè)優(yōu)秀的系統,它還有很長(cháng)的生命周期呢。

在Zope3的工作中,我們的開(kāi)發(fā)流程也改進(jìn)了。我們做到了:

  • 養成了測試的習慣
  • 養成了一個(gè)優(yōu)秀的文化:為了讓事情做到最好試著(zhù)把步伐慢下來(lái),如果有必有情愿把工作重新來(lái)過(guò);還有
  • 創(chuàng )立了一個(gè)新的方法來(lái)試著(zhù)把文檔和測試結合起來(lái),這很快成了一個(gè)非常積極的習慣。

5. X3.0的發(fā)布

到2004年初,已經(jīng)有了好幾個(gè)使用Zope3的產(chǎn)品了。很明顯的,Zope3已經(jīng)為產(chǎn)品應用作好了準備,雖然還缺乏幾個(gè)功能或者還沒(méi)有準備好要發(fā)布。一些本可以在產(chǎn)品中很技巧性的使用Zope3的人,不愿在他們所需要的功能沒(méi)有穩定之前冒險這樣做。我們決定縮小第一個(gè)release的目標,只包含那些已經(jīng)穩定的基本功能,能讓那些不需要傳統的通過(guò)web在線(xiàn)開(kāi)發(fā)(through-the-web development)功能的人開(kāi)始使用Zope3。我們給Zope X3.0定位于開(kāi)發(fā)人員發(fā)行版,只包含那些從2004年初夏起就已經(jīng)穩定的功能。

6. Five項目

最近有個(gè)開(kāi)發(fā)項目Five(http://codespeak.net/z3/five/),可以在Zope2中使用Zope3的組件架構,來(lái)提供部分的Zope3的功能。

現在的Zope3還不向后兼容Zope2,雖然有Five項目的一些努力,但是許多Zope3的功能都不能用于Zope2.

現在的Zope3是給Python開(kāi)發(fā)者們用的。還沒(méi)有對web在線(xiàn)開(kāi)發(fā)的功能提供穩定的支持,盡管已經(jīng)有了簡(jiǎn)單的試驗版。我覺(jué)得一段時(shí)間之后就不成問(wèn)題了。

有許多Zope3的第三方產(chǎn)品,部分已經(jīng)在Zope2中成熟穩定了,象cataloging,已經(jīng)包含于Zope3中了。

基于上面這些有限的信息,Zope3給你展現了一些顯著(zhù)的優(yōu)勢:

  • 它提供了一個(gè)非常清晰的開(kāi)發(fā)模式。試用過(guò)Zope3的開(kāi)發(fā)者們都會(huì )發(fā)現它是一個(gè)比Zope2更具生產(chǎn)力的開(kāi)發(fā)環(huán)境
  • Zope 3更容易適應特殊的業(yè)務(wù)需求。有趣的是Zope3應用再也不像傳統的Zope應用了。舉例來(lái)說(shuō),一個(gè)應用不再需要使用傳統的"對象文件"模式,Zope3讓那些使用關(guān)系數據庫的應用變得簡(jiǎn)單得多
  • Zope3被設計為從底層支持I18n 和 L10n應用
  • Zope3提供了很好的文檔:一本書(shū)(還在不斷增加中),一個(gè)教程,一個(gè)內嵌的Api參考手冊,和一個(gè)在不斷細化的內部開(kāi)發(fā)文檔。

== 你該使用Zope3嗎?==

Zope 3 既有重大的改進(jìn),也有相對于Zope2的局限性。是否需要使用它依賴(lài)于你的實(shí)際情況。幸運的是你不必馬上轉換到Zope3上面。Zope2還將伴隨我們相當長(cháng)的時(shí)間。實(shí)際上,Zope2可以讓我們從容不迫的對待Zope3。要感謝Five項目,你可以在Zope2的應用里面使用部分的Zope3技術(shù)。隨著(zhù)時(shí)間的過(guò)去,Zope2也會(huì )具有更多的Zope3特性,讓最后轉變到Zope3的結局更簡(jiǎn)單更容易。

(全文完)(不含空格11269個(gè)字)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
專(zhuān)題:Zope應用開(kāi)發(fā)指南
Web開(kāi)發(fā)的10款最佳Python框架
易開(kāi)發(fā)創(chuàng )始人潘俊勇:這些年我遇到的那些坑
Python高級編程
策劃開(kāi)發(fā)一個(gè)項目 at onling’s blog
Python中文文檔
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久