注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

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 的名義開發。2004 年 1 月,devIS 將其版權捐贈給勞工部,允許勞工部將其作為開源工具釋出。EZRO 是 Workforce Connections 軟體的更高階版本,由 devIS 在 GPL 下發布。

EZRO Screenshot

EZRO 的儲存庫管理介面用於創作和管理基於它的網站內容。 放大

為什麼選擇 Python

EZRO 最初是作為勞工部 DisabilityInfo 入口網站的引擎而開發的,該入口網站最初名為 Disability.gov,後來更名為 DisabilityDirect.gov,現在是 DisabilityInfo.gov。該網站是一個入口網站,由勞工部、教育部、交通部、國防部、商務部以及社會保障局和衛生與公眾服務部等主要機構的人員維護。作為實施機構的勞工部擁有最終編輯權。

當時需要一個內容管理系統,它允許分散式編輯和集中式編輯控制,並且必須對殘疾人完全可訪問。為了使事情進一步複雜化,布什總統的一份行政備忘錄要求該網站在六十天內上線。雖然一些工作已經開始,並且該網站的前一個版本已經存在,但仍然有一個極其緊張的截止日期需要趕上。由於該網站是白宮強制要求的少數網站之一,因此必須一次性做好。

devIS 從專案一開始就決定我們的程式碼必須滿足兩個一般要求。首先,該軟體最終應在滿足最初截止日期後某個時候作為開源釋出。其次,它必須足夠便攜才能在多個平臺上執行。

Python 和 Zope(一個用 Python 編寫的 Web 應用程式伺服器)被選中用於這項工作。devIS 自 1999 年以來一直在使用 Zope,並且已經擁有大量精通 Zope 的開發人員,其中包括 ZopeLabs 的所有者和開發人員。

當時 devIS 仍然使用 Zope 的管理介面、DTML(動態模板標記語言)標籤和簡短的 Python 指令碼來開發其 Web 應用程式,以建立動態網站。但 Zope 的管理介面並不是一個適合團隊工作的良好環境:一個開發人員可能會在沒有警告的情況下意外覆蓋另一個開發人員的工作,並且沒有足夠的版本控制。

隨著五個開發人員在此專案上投入半到全職工作,很明顯需要一個更好的解決方案。自然而然的結論是開始使用 Zope 中可用的 Products 框架進行 Python 開發。Zope 產品是一個包含程式碼、圖形和模板的軟體包,提供了一個可重用的 Web 功能。我們能夠將我們喜歡並日常使用的 Zope 整合元件(例如使用者管理和簡單的物件釋出到 Web)與 Python 的靈活性及其龐大的內部庫相結合。這還使我們能夠將原始碼保留在 Zope 物件資料庫之外的檔案系統上,在那裡它可以與我們現有的 CVS 基礎設施一起用於原始碼控制和報告。

EZRO Architecture

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 產品用於其他環境。該軟體確實依賴於 ZopeAspellPyXML,但由於 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 程式設計經驗。