面向对象的Web服务器.doc_第1页
面向对象的Web服务器.doc_第2页
面向对象的Web服务器.doc_第3页
面向对象的Web服务器.doc_第4页
面向对象的Web服务器.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象的Web服务器 徐永久(转载自FreeL)本文从网站开发者的角度,简要介绍了 Zope 的强大功能。对于网站开发人员来说是不可或缺的知识性文章。对于想要了解面向对象的 Web 编程人员来说,或许你会丢弃 ASP,PHP,JSP,转而对 Zope 投怀送抱。一、介绍Zope 是下一代开放源码应用服务器以及门户工具,由Digital Creations 开发,已经拥有一群相当活跃的用户社群。它既可以在所有Unix 平台上运行,也能在 Windows NT 上运行,不但能集成到其他流行的 Web 服务器,也带有自己的 Web 服务器。 Zope 采用 Python 语言编写,在性能敏感的部件上采用了 C 语言编写。不像其他基于文件的 Web 模板系统,例如 ASP 或者 PHP,Zope 是高度面向对象的Web 开发平台。它提供了清晰的数据/逻辑/表示的分离,带有可扩展的内置对象和强大的集成安全模块。 Zope 架构让开发人员撇开了开发中的细节问题,诸如数据一致性,存取控制等。Zope 提供了所有必须的工具,能集成来自任何数据源的所有的数据和内容,构成一个连续,可维护的 Web 应用,主要包括:Web方式的管理界面集成的存取控制内容管理企业数据存取内置搜索工具强大的数据共享安全委托Zope 和其他应用服务器不同之处在于,它从头开始就是不仅和Web 对象模型紧密结合,而且和Web 开发模型也紧密结合。当今成功的 Web 开发要求很多方面的专家合作开发。 Zope 做到了这些,能让网站管理员安全的授权给数据库专家,内容管理员以及设计专家。二、Web 应用平台让 Zope成为产品的技术就是基于 Web 从根本上来说是面向对象的。Zope 中的对象是层次型的,就像我们熟悉的一些概念一样,例如文件夹,文档,图象,SQL 查询语句。 在Zope 的层次环境里,URL根据名字映射为其中的对象。例如URL:/Marketing/index.html,映射为文件夹对象Marketing 下面名为“index.html”的文档对象。Zope 对象的建立和管理十分方便,只要打开浏览器,进入管理界面,所有管理和应用开发界面都可以通过浏览器来完成,界面就像 Windows 的资源管理器。通过这个界面,开发人员不必存取服务器上的文件系统就可以创建Zope 对象或者定义新的对象类型。对象可以放到对象层次的任意地方。网站管理员可以点击目录栏得到对象的不同“视图”,这些视图视对象类型不同而不同,对于 DTML 文档,可以有 “Edit”用来编辑文档源码,而数据库连接对象则让你修改连接字符串或者缓冲参数。所有的对象都有“安全”视图以控制存取权限。Zope 对象存放在高性能的事务型对象数据库中,可以采用文件系统或者关系数据库作后台存储。每一个Web 请求作为对象数据库中分离的事务,如果应用中发生错误,请求事务就会自动回滚。同时,对象数据库还提供多级回退。网站管理员可以点击鼠标取消曾经做过的操作。Zope 框架让所有细节和事务对应用开发人员都透明。三、内容管理Zope 的心脏就是 DTML (文档模板标记语言),这个功能强大的变量插入和表达语言,提供对 Zope 对象的安全脚本和动态内容产生。 DTML 采用了服务器端包含脚本的语法,对很多 Web 开发人员来说很容易上手,而且和Zope 的安全模型高度集成。对安全的集成,可以让用户使用自己的 DTML 而不会对整个网站的安全构成威胁。DTML 基本的变量插入和条件测试语句是十分直观的。DTML 代码采用 Zope 系统中对象的属性和方法,也可使用 Web 请求和表单中的变量。下面是一个文档标题属性显示的例子,当不同的用户登录时,显示不同的信息:-本文档的标题为: 。嘿!你好,小地主!嘿!你好,陌生人!-当然 DTML 文档能包含其他 DTML 文档。一个常用的设计就是页面头和脚的包含:- 欢迎来到 www.FreeLAMP.com!-DTML 采用 #in 标记提供强大的递归插入。这个标记也可以用来自动管理批处理。下面的例子调用 SQL 查询对象,递归调用结果集数据建立表格:- -采用这些标记和其他更加高级的 DTML 结构,Web 开发人员能调用 SQL 查询语句,建立新的对象,操作对象属性,建立高度动态的网站内容。下面的例子采用了 DTML的 sendmail 标记来发送 Email。-To: Feedback Department From: Feedback Form Subject: 用户意见反馈 提出意见:谢谢!感谢您的建议!-“安全脚本”的重要概念就是不像其他模板系统, DTML 不允许你建立任意的脚本对而构成对系统安全的威胁。相反,Zope 提供了一种不同的对象叫作外置方法,封装更加复杂的脚本和包含随意的代码。 DTML 的作者能调用外置方法,但是只能在自己的安全设定范围内运行。大多数情况下, DTML 本身就能完成大多数一般性的任务,Zope 提供高级标记的目的就是为了减少编写复杂脚本的需要。“tree” 标记就是这样的例子,这个标记能提供和Zope 管理界面左边的帧一样的界面。四、数据存取Zope 的数据源可以包括关系数据库,以及非关系型的 LDAP/IMAP 等。 Zope 支持常见的关系型数据库,包括Oracle, Sybase, MySQL 以及大多数 ODBC 兼容的数据库。为了存取后台数据,你需要建立一个数据库连接对象,然后建立 SQL 方法对象,这个对象能使用 DTML ,能很方便的建立动态的查询语句。下面建立的 getTasks 对象是从tasks表中选出对应用户的任务:-select * from taskswhereemp_id=-结果集的数据应用于 DTML 文档:- 的任务-Zope 以对象为中心的设计,允许你采用清晰的数据/表示分隔,数据库程序员在 SQL 方法对象上工作,内容设计人员调用这些 SQL 方法。这样的对象模型也能容易的集成多种数据源,高级的数据存取特色甚至能定义数据库结果的对象行为,从而把平面型的关系记录转换为 Zope 应用的“智能”数据。Zope 开发环境的另外一个好处就是它的事务模型能自动延伸到后台数据库,如果你的关系型数据库支持事务,Zope 会在运行SQL 方法之前自动开始事务,而在 Web 请求成功结束后自动提交事务,如果其中发生错误则会自动回滚,使事务的集成对Web 开发人员完全透明。五、集成的搜索Zope 提供快速,灵活的索引,采用 ZCatalog 对象搜索。ZCatalog 对Zope 网站下所有类型的对象提供可高度定制的全文和域的索引。对象可以根据其内容或者属性索引,能提供结构化的搜索。搜索结果可以来自多种不同的数据源,除了基本的文档外,还可能来自邮件列表的EEmail 消息对象,数据库里的记录,甚至 LDAP 目录中的资源。六、数据共享Zope 的强大功能之一就是它简单而成熟的数据共享模型,这个模型叫做“获取”,核心的概念可以简单的描述为:Zope 对象包含于其它对象中(例如,文件夹)对象能够“获取”容器中的属性,内容,行为。以前,我们决定把我们网站的头和脚封装到分离的 DTML 文档,这样能包含其他网站的内容,但是这个设计在拷贝头和脚到网站内所有的文件夹时发生了问题。如果我们采取“获取”的办法,在网站的顶层文件夹建立头和脚,下层的 DTML 就能自动“获取”。这个概念对所有的对象都适用,对把常用的资源集中起来十分有用。例如,对一个经常用到的 SQL 查询语句,我们可以把它定义在一个文件夹里,子文件夹里的对象能自动通过“获取”来使用它,如果要改变查询语句,只需要改动一个地方就可以了。因为对象从当前层开始“获取”,然后向上搜索,因此很容易建立自己的文档。例如,我们有一个叫做“Sports”的文件夹,内容全部是关于运动的,你可以在这个文件夹里建立自己的头和脚,当前目录及其子目录下面的文档就会使用这两个文档而不是采用顶层的那个了。对“获取”的使用方法可以写好几篇这样的文章,我们首先需要了解的就是它提供了一个简单但是强大的方法来避免数据冗余而增加网站的维护成本。七、安全授权一个成功的网站需要组织起一个团队来合作:应用开发人员,SQL 专家,内容管理员以及应用的最终用户。在传统的网站里,维护和安全会很快出现矛盾。对权限的分配会变得十分复杂。Zope 在这个问题上采用了数据和表示的清晰分离以及灵活的安全模型。采用“用户文件夹”来管理用户,里面包含用户信息。Zope 提供了要比普通文件系统要丰富得多的权限。除了使用Web 来管理强大的封装和安全特色以外,Zope 还提供其他协议的合作开发特色,包括 FTP, WebDAV 和 XML-RPC。版本管理,能让其他用户看到最新的版本更新,但不是发布出去,如果版本的修改结束后,用户就可以“提交”版本,把最新版本的网站发布出去。八、XML 支持当前应用服务器市场的热门话题就是 XML 支持。Zope 除了内置的对基于 XML的协议 WebDAV 和 XML-RPC的支持外,Zope 的开发人员还可以利用一个快速的基于 C 的 XML 分析器,Zope 对象数据库能导出为 XML 格式。利用一个“XML 文档”的附加原型,可以把 XML 文档上传到 Zope,Zope 会自动分析文档及其元素,并储存为单独的 Zope 对象。和 XML 相关的是,Zope 包含了对DOM(Document Object Model) API的支持。开发人员可以在 DTML 或者 Python 代码中使用熟悉的 DOM 调用来操作 Zope 对象。将来对 XML 的支持还会包含 XSL 处理以及用 XQL(XML Query Language) 对 Zope 对象搜索。九、结束的话Zope 是高度可扩充的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论