EZRO 內容管理系統
簡介
Development InfoStructure (devIS) 是一家位於弗吉尼亞州阿靈頓的小型諮詢公司,以其在電子政務領域的工作而聞名。這包括開發小型、中型和大型系統。
devIS EZ Reusable Objects (EZRO) 是一個內容管理系統,可用於許多不同型別的網站,包括傳統的資訊展示網站(如 http://www.devis.com/)、入口網站(如 http://www.milspouse.org/)、培訓網站(如 http://cable.devis.com/)和教練式網站。教練式網站在螢幕邊緣顯示為一個框架,並驅動另一個網站,以便引導使用者瀏覽該網站,如 http://www.careeronestopcoach.org/。
EZRO 是 2001 年至 2004 年間與勞工部簽訂的多個合同的產物。它以 Workforce Connections 的名稱開發。devIS 將其版權貢獻給勞工部,允許他們在 2004 年 1 月將其作為開源工具釋出。EZRO 是 Workforce Connections 軟體的更高階版本,已由 devIS 在 GPL 下發布。

EZRO 的儲存庫管理介面用於創作和管理基於它的網站的內容 放大
為什麼選擇 Python
EZRO 最初是作為託管勞工部 DisabilityInfo 入口網站的引擎開發的,該網站最初名為 Disability.gov,後來更名為 DisabilityDirect.gov,現在是 DisabilityInfo.gov。該網站是一個入口網站,由包括勞工部、教育部、交通部、國防部、商務部以及社會保障管理局和衛生與公眾服務部在內的每個主要機構的人員維護。作為實施機構的勞工部擁有最終編輯權。
需要的是一個內容管理系統,該系統允許分散式編輯和集中式編輯控制,並且必須完全可供殘疾人訪問。更復雜的是,布什總統的一份行政備忘錄要求該網站在 60 天內上線。雖然一些工作已經開始,並且存在上一代網站,但仍然有一個非常緊張的最後期限要完成。由於該網站是白宮授權的少數幾個網站之一,因此必須第一次就做對。
devIS 從專案開始就決定我們的程式碼必須滿足兩個總體要求。首先,該軟體應在滿足初始截止日期後的某個時間最終以開源形式釋出。其次,它必須足夠便攜,才能在多個平臺上執行。
Python 和 Zope(一個用 Python 編寫的 Web 應用程式伺服器)被選用來完成這項工作。devIS 自 1999 年以來一直在使用 Zope,並且已經擁有大量精通 Zope 的開發人員,包括 ZopeLabs 的所有者和開發人員。
此時,devIS 仍然使用 Zope 的管理介面、DTML(動態模板標記語言)標籤和短小的 Python 指令碼來開發其 Web 應用程式,以建立動態站點。但是,Zope 的管理介面對於團隊工作來說不是一個好的環境:一個開發人員可能會在沒有警告的情況下意外覆蓋另一個開發人員的工作,並且沒有足夠的版本控制。
由於有 5 位開發人員在此專案上工作了半職或全職,因此很明顯需要一個更好的解決方案。自然的結論是開始使用 Zope 中提供的 Products 框架用 Python 進行開發。Zope 產品是一個程式碼、圖形和模板的軟體包,它提供了一部分可重用的 Web 功能。我們能夠將我們每天都喜愛和使用的 Zope 整合部分(如使用者管理和簡單的物件釋出到 Web)與 Python 的靈活性及其龐大的內部庫相結合。這也使我們能夠將原始碼保留在 Zope 物件資料庫之外,並保留在檔案系統中,在那裡可以與我們現有的 CVS 基礎結構一起使用,以進行原始碼控制和報告。

EZRO 是用 Python 開發的,作為 Zope 產品。它與其他 Zope 產品互動,並使用 aspell 作為外部程序進行拼寫檢查。內容管理介面和釋出的 Web 內容透過 Apache 或其他 Web 伺服器提供給其使用者。 放大
實施
EZRO 內容管理解決方案的開發始於假設應用程式會隨著時間的推移而增長,就像大多數軟體專案一樣。最初的選擇是在從頭開始生成軟體,還是使用已經存在的框架(如 Zope CMF 或 Plone),這兩個框架都是在 EZRO 開始開發的同時首次釋出的。
在仔細審查了替代方案之後,決定開發新的解決方案將產生更符合客戶需求和要求的產品,而不會產生 CMF 或 Plone 不必要的部分造成的巨大開銷。
由於 Python 允許非常快速的開發,因此這種選擇與 DisabilityInfo 專案非常緊張的初始截止日期並不矛盾。在兩週內,一個可執行的原型就準備好向客戶展示。該軟體的第一個生產質量版本僅用了額外三週的時間,直接建立在原型之上。
透過使用 Python,維護開銷大大降低。在接下來的一年中,devIS 開發人員能夠根據客戶的要求快速輕鬆地新增新的 EZRO 功能。隨著 devIS 獲得新客戶,EZRO 被用來降低新專案的開發成本。透過這種方式,該工具的功能和規模增長到今天的水平。
Python 簡潔的佈局和結構也使後來以開源形式釋出的程式碼更易於閱讀。當有新的開發人員加入時,這是一個福音,因為他們能夠立即上手並理解程式碼。
由於 Python 的跨平臺特性,EZRO 在 Microsoft Windows 和任何類 Unix 作業系統(包括 Linux 和 MacOS X)上執行良好。devIS 釋出了一個包含 Windows 安裝程式的獨立 EZRO 環境,並以 tar 存檔形式分發僅適用於其他環境的 EZRO Zope 產品。該軟體確實依賴於 Zope、Aspell 和 PyXML,但是由於 Python 的可移植性,所有這些第三方應用程式也可以在大多數其他作業系統上執行。
EZRO 在單臺機器上執行良好,但在 devIS 生產設施中部署在三臺冗餘伺服器上用於面向公眾的站點,並在第四臺安全伺服器上用於管理後端。
結論
Python 和 Zope 一起為 devIS 提供了令人難以置信的靈活性,並允許在非常快的週期內實現新功能,這反過來又使 devIS 的客戶非常滿意。OSHA 培訓機構正在使用 EZRO 來開發其培訓材料,並且他們已告知 devIS,他們每天在開發成本上節省了數千美元。此外,使用它來開發課程的人員實際上喜歡來工作並使用此工具。在其他任何工具集中,devIS 的員工都沒有發現如此容易的實現方式。
關於作者
Andy J. Williams Affleck 是 EZRO 的專案經理,而 M. Adam Kendall 是該專案的首席開發人員。Andy 擁有哈佛大學研究生院教育技術專業的教育碩士學位,在建立線上學習和教學解決方案方面擁有多年的背景。Adam 是 zopelabs.com 的建立者,擁有數字設計學士學位,並擁有超過 9 年的 Web 程式設計經驗。