扫一扫
关注微信公众号

Zope概念和架构
2007-03-19   《快乐程序》

1. 基本概念

Zope框架有一些基本概念,理解了这些概念有助于充分使用Zope。

1.1. Zope是一种框架

Zope涵盖了很多Web应用程序开发者需要处理的底层细节,比如数据的持续性,数据的完整性,数据访问控制等等,这样就可以让你集中精力在解决问题上。比起其它的语言或框架,Zope可以让你充分利用Zope提供的服务来更快速的构建web应 用程序。Zope可以让你使用Python语言来编写web应用程序中的逻辑处理部分,当然也可以用Perl。Zope还提供两种方式,就像模板一样,来处理文本、XML和HTML 这样的数据,一种式文本模板标记语言(DTML)和Zope页面模板(ZPT)。

1.2. 面向对象

不同于基于文件的Web模板系统,比如ASP或PHP,Zope是高度面向对象的Web开发平台。许多语言都支持面向对象的概念,包括编写Zope的Python语言。常见的Web脚本语言比如Perl或PHP部分支持面向对象的特性,通过阅读“面向对象”这一章可以帮助深入理解这个概念,也可以通过本书中提供的例子来深入理解这个概念。

1.3. 对象出版



Zope之所以形成,其中一个基本的理念是:Web的基础是面向对象的。指向某个Web资源的URL实际上就是对象容器中对象的路径。HTTP协议提供了一种对象发送 消息和接收回应的方法。

Zope的对象结构是分层次的,就是说典型的Zope站点是由对象组成的,对象又有可能包含其他对象。根据对象的名称,Zope按照层次结构通过URL映射到对象。比 如,URL "/Marketing/index.html"可以用来访问文件夹对象"Marketing"中的名 为"index.html"的文档对象。

Zope就是以这样一种直接的方式“出版”你所创建的对象。基本过程如下:

浏览器给Zope服务器发送请求。请求的URL格式为:protocol://host:port/path?querystring, 比如:

http://www.zope.org:8080/Resources?batch_start=100

Zope把URL分解成:"host(主机)", "port(端口)" "path(路径)" 和 "query string(查询参数)"。

(http://www.zope.org, 8080, /Resources 和 ?batch_start=100, respectively)

Zope根据路径(path,即/Resources)在对象数据库中定位对象。Zope用传递过来的参数来执行这个对象。如果对象执行的结果返回数值,那么数值就被发送回浏览器。一般是返回 HTML,文件数据或图形数据。浏览器解释收到的数据并显示。

Zope对象的URL由包含这个对象的文件夹和对象的id组成,用/符号分开。比如: /Uncles/Bob,就调用Uncles目录中的Bob。

还比如:

/Uncles/Rick

/Uncles/Danny

/Uncles/Louis

完整的URL就可以是:http://localhost:8080/Bob 。更为详尽的解释请参考:Zope 开发指南中的对象出版一章Object Publishing

1.4. 通过Web进行管理

Zope可以通过完全通过浏览器来创建和处理各种对象。Zope提供的管理界面就像 Windows中的资源管理器。 对象可以按照层次放在任何地方,站点管理者通过点击对象的不同视图来管理对 象。不同的对象有不同的视图。比如“DTML Method”对象有一个标有“Edit”的视 图,其中可以编辑代码,“数据库链接对象”(Database Connection)提供修改连 接和参数的视图。所有的对象都有一个“安全”(Security)视图,用于管理访问权 限控制。

1.5. 安全与授权

Zope区别于其它应用服务器的一个显著特点是Web对象模型和Web开发模型紧密结 合。从而可以让许多不同的人都可以参与进来, Zope允许对不同的用户进行安全 授权,从而可以让页面设计者,数据库管理员,以及内容管理员协同工作。

成功的Web站点需要许多人共同参与,比如应用开发者,SQL管理员,内容管理员, 甚至是最终的用户。此时,安全问题就变得及其重要。如何控制,以及如何分配 权限?比起传统的基于文件的系统,Zope中的对象提供了丰富得多的安全许可。不同的 对象可以有不同的安全限制,比如对于“SQL Method”对象,你可以允许用户调用 它,但不能更改或查看源代码。你还可以限制用户只能创建某种类型的对象,比如 只能创建文件夹或DTML文档,而不能创建“SQL Method”对象。

Zope通过“用户文件夹”("User Folders")来管理用户。在这个特殊的文件夹中包 含用户信息。也可以通过添加扩展包来扩展用户文件夹,从而可以通过关系型数 据库或LDAP目录来管理。添加新用户文件夹的权限可以分派给下级文件夹中的用 户,从而可以让你认可的用户来管理网站中的某一部分。

1.6. 本地对象持续和事务(Persistence and Transactions)

Zope对象存储在一种高性能的支持事务机制的对象数据库中,即Zope对象数据库 (ZODB).对象数据库认为每个Web请求是个单独的事务。在Web请求期间,如果执 行过程中发生了错误,任何所做的更改都将被取消。对象数据库还支持多级撤销, 这样就可以让站点管理员仅仅通过点击“undo”按钮撤销更改。Zope框架中实现对 象持续和事务的所有方式对开发者都是透明的。关系型数据库在Zope框架中依然有效。

1.7. 获取(Acquisition )

“获取”(Acquisition)是Zope中非常重要的一个概念,这个概念简单的说就是:

Zope对象可以被包含在其它对象中(比如文件夹)。对象可以“获取”它们的容器对象的属性和行为。

所有的Zope对象都支持获取,这样就提供了管理各种资源的非常强大的方式。比 如,经常使用的SQL查询语句或者一小段HTML代码,可以在某个文件夹中定义,通 过”获取“这样一种机制就可以让下级文件夹自动调用。如果这个SQL查询进行了修 改,不用担心下级文件夹,这个修改对所有下级文件夹都有效。

因为在搜索对象的时候是按照从当前目录往上按照层次来获取的,因此很容易指定 生效的范围。比如,有一个包含与体育内容相关的文件夹“Sports”,你可以在这 个文件夹中创建新的页眉和页脚文件。这样就可以使“Sports”文件夹和下级文件夹 中调用这两个文件。而不会调用“Sports”上级文件夹中的文件。

在“获取”一章中将详细讲述这一概念

1.8. Zope是可扩展的

Zope是高度可扩展的,可以通过多种方法创建新的Zope对象,即可以通过用Python 语言编写新的扩展模块,也可以完全通过Web来创建。Zope已经包含了很多内置的 组件,这些组件可以帮助进行扩展。Zope当中已经包含了一系列框架类,这些类在 创建新Zope对象时用来处理细节问题。

Zope已经有了很多扩展产品,这些扩展产品用于增强Zope的功能,比如添加论坛、 数据处理、XML工具,以及电子商务程序等等。这些程序大多数是由Zope爱好者编 写的,并且大多数是开放源代码的。

2. 基础Zope组件

Zope由一些不同的组件构成,从而帮助你构建web应用程序。

Zope 架构



说明:

ZServer

这是Zope内置的Web服务器,用于提供内容服务。这个web服务器还通过FTP、 WebDAV?和XML-RPC协议提供服务。



Web Server(Web服务器)

Zope还可以和现有的Web Server结合在一起,比如Apache或者Microsoft IIS,以及其它支持通用网关接口(CGI)的Web服务器。

Zope Core(Zope核心)

这是Zope的核心引擎,它控制如何显示,以及控制管理界面和对象数据库。

Object Database(对象数据库)

使用Zope的时候,大多数情况下是在处理存储在Zope对象数据库中的对象。

Relational database(关系型数据库)

数据不一定要存储在Zope对象数据库中,Zope中可以使用其它的关系型数据库,比如 Oracle, PostgreSQL?, Sybase, MySQL等等。

File System(文件系统)

Zope还可以使用存储在服务器文件系统中的文档和其它文件。

ZClasses

可以通过使用Web管理界面来添加新的对象。ZClasses?就是这种对象。

Products(产品)

Zope中还可以通过在Zope服务器中的文件系统里安装“产品”文件来添加新的对象。

热词搜索:

上一篇:ZOPE详解
下一篇:Zope的优点及和Apache+PHP+MySQL的比较

分享到: 收藏