web应用服务器的新星 - Zope

回到Zope 宣传檄文汇集::-- ZoomQuiet [2005-08-31 13:59:08]

作者:潘俊勇
鸣谢:感谢limodou, nEO, arthur, blueszhao, zoomq, backrain, Tomz等CZUG成员提供修改意见

如果你是一个Python语言的爱好者,那你应该知道Zope这个Python上的杀手级软件;如果你阅读过Eric Raymond的著名的开源启蒙文章《魔法大熔炉》,那你应该知道Zope这个经典的开源商业化案例;如果已经厌倦了J2EE的繁琐,或者Ruby On Rails的过于简单,那么,Zope应该是值得你关注的另外一个选择了。

Zope(www.zope.org)是一个开放源代码的web应用服务器。2002年,Zope被Linux Journal评为最佳的web应用服务器;2004年,Zope成为冠群CA公司宣布其开放源代码战略后的首批资助项目;Zope拥有美国海军、北约组织、美洲银行、波士顿在线、法国10多个政府部门、摩托罗拉、SGI等众多的重量级用户。

使用Zope,可快速构建功能强大、可扩展的web应用。典型的,比如内容管理、内部网、电子商务、门户,甚至ERP应用。其中,世界级的内容管理系统Plone便是基于Zope构建。Zope上有丰富的第三方产品插件供选用。

1996年,当时是Zope公司CTO和 Python领袖的Jim Fulton,为教授CGI程序起草讲稿。Jim针对这门课程,以他自己的方式研究了所有关于CGI方面的现存文档。在讲课返回的途中,Jim开始思考传统的CGI的编程环境中他不喜欢的方面,包括:脆弱、缺乏面向对象和暴露Web服务器细节等。从这些最初的沉思开始,在返回的飞机中Jim写出了Zope的核心内容。

Zope主要使用Python语言编写,在涉及的系统性能地方则使用C语言,可在Windows、Linux、Unix、Mac OS等多种平台上安装运行。它自带一个面向对象的数据库ZODB,所有对象均可保存在这个对象数据库中,通过Zope页面模板(ZPT)编写动态页面展现对象,Zope服务器则用于发布对象。

事实上,ZOPE就是Z对象发布环境的简写(Z Object Publishing Environment)。用户可通过http、ftp、xml-rpc或webdav等途径发起请求,Zope自动将请求封装为一个统一的 REQUEST对象,根据URL进行对象漫游、定位,将参数解析、预处理、传递到对象的方法并执行,最终返回执行结果。这个过程中,Zope负责调度从 URL到对象方法执行的整个过程,大大简化了开发的工作量,实现了完全面向对象的开发。另外,在对象发布的过程中,Zope能够根据对象实例的包容关系,获取父对象的属性,从而实现了实例的继承。

面向对象数据库系统ZODB是Zope的另外一个重要的特性。ZODB实现了对象的透明存取,开发人员不必关心对象的存取细节;ZODB支持事务处理,能够用于企业关键应用;ZODB支持自动的对象缓存管理,能够调节和优化性能;最重要的,ZODB支持ZEO(Z Enterprise Object),可将对象分布在多个Zope实例上并行运行并保持同步,这使得Zope能够支持多机负载均衡,可平滑扩展,用于大型的应用。

Zope内置了精细的用户访问权限控制,能够成组管理用户和分配权限,能够实现权限的委托管理。Zope还可通过LDAP接口和Windows的活动目录实现用户集成。

Zope目前包括Zope2和Zope3两个分支版本. Zope2基于传统的对象继承技术,目前已经十分稳定,特性丰富,Plone等大型应用均基于Zope2。Zope3是采用最新的设计模式和组件架构技术,对Zope2的重写。在Zope3中,组件之间通过配置文件,按照接口拼装,组装成应用。Zope3采用类似J2EE的对象松耦合架构,同时具备 Python的简洁性和优美性。目前Zope 3已经发展至Zope 3.1版本,很多基于Zope3的项目也逐步开始启动。如,ubuntu Linux的发行管理平台lauchpad(launchpad.ubuntu.com)便采用采用zope3实现. 从Zope 2.8开始,Zope2中也可以使用Zope3的大部分技术,Zope2到Zope3正走向一条平滑过渡的路线。

Zope的中文化目前已经有完整的解决方案,中文Zope用户组(www.czug.org)是国内最专业的Zope技术社区。