注意: 虽然 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 的名称开发。devIS 将其版权贡献给劳工部,允许他们在 2004 年 1 月将其作为开源工具发布。EZRO 是 Workforce Connections 软件的更高级版本,已由 devIS 在 GPL 下发布。

EZRO Screenshot

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 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 编程经验。