荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: kisky (好男儿), 信区: Linux
标  题: Zope的优点及和Apache+PHP+MySQL的比较(转寄)
发信站: 荔园晨风BBS站 (Fri Jun 15 00:18:12 2001), 站内信件

【 以下文字转载自 kisky 的信箱 】
【 原文由 lzm.bbs@bbs.whnet.edu.cn 所发表 】
发信人: bigbug (小兵张嘎), 信区: Linux
标  题: Zope的优点及和Apache+PHP+MySQL的比较(转寄)
发信站: 武汉白云黄鹤站 (2001年06月14日22:44:02 星期四), 站内信件

: 呵呵 肯定是转的了! 我也没接触过莫司zope 不过看起来这个东西真的有点爽!
: 不是么? 看看下面的文章就知道了! *_*
: 转自 出处:FreeLAMP.com

                Zope的优点及和Apache+PHP+MySQL的比较

Webmaster 注:今天看到一篇好文章,贴出来。因为实在是觉得有必要让来看我网站的
人知道 Zope 这个东西,所以转载了这篇文章。这是我的第一篇转载文章。
Zope能和Apache+PHP+MySQL进行比较是因为它即是http服务器,又是数据库,又包含脚
本编程语言。现在向大家推荐Zope是因为它的功能更丰富,建立应用更容易,效率比PH
P高几倍。现在的服务器端编程环境有IIS+ASP+sqlserver、Apache+PHP+MySQL、和现在
的Zope,相比较Zope对于文档出版更专业。
我曾经用过dw和frontpage编网页,就感觉frontpage的导航系统比较好,还有它能生成
图形化的标题,和各种专业化的模板。dw的导航系统几乎不能用,但dw的网页制作更专
业,dw的模板也有自己独特的地方。曾经想过将frontpage和dw相结合,但感觉很别扭。
当网站的资料多了最迫切的需要是把资料放到数据库中,这样容易统一管理。常常奇怪
大型的网站常常有统一的外观,丰富的导航系统,丰富的相关链接。肯定在网站的后面
有专业的网站管理软件和专业的技术人员的支持。因此我常常寻找可以用的网站管理系
统。在linuxfab.cx网站发现了Zope,终于找到了我想要的东西。
每当向人们推荐Zope的时候,总有人说我用PHP很好不用换,或说用ASP很好。ASP和PHP
比较相似,都是可以在HTML中加入脚本语言。相比来说,我比较欣赏ASP,它是基于vb的
,同时因为它有独立的脚本引擎,也可以支持Perl、Javascript等脚本。这样大家可以
用自己熟悉的语言来编程不要另学新的语言。而PHP就比较奇怪,本来和Perl很相似,为
什么不干脆用Perl来实现在页面的嵌入还要专门发明一种语言,来增加大家的学习负担
,PHP虽然语言稍微清楚了一些,但没有根本的不同,却把Perl的精华模式匹配丢掉了。
Perl也比较奇怪,为什么不象jsp一样推出相同的功能?因此心理上对PHP比较讨厌,虽
然它和数据库的紧密结合,以及能生成图象的功能比较好。Zope虽然在网站管理上很出
色,但它同时也是一个很好的编程环境。它支持Python和Perl,Python现在的发展势头
很强,善于编制大的程序,是一个语法非常丰富的面向对象的数据库,在很多方面可以
代替c和JAVA,编程效率要高很多,很有吸引力。我学完了Python正找不到使用的机会,
Zope正好给了我使用Python的机会,也让我领教了Python的强大。->Zope整个程序都是
用Python编的!
Zope是一个面向对象的数据库,是一个文档管理的数据库,是一个强大的http服务器,
是一个完善的开发环境。从本质和出发点来说,Zope是一个文档管理数据库。它有大量
的文档管理功能。
先说Zope做为http服务器的优势:
虽然Zope是个数据库,它的所有文档都放到数据库中而不是放到文件系统,但它却完成
了一个类似文件管理器的管理界面和一个ftp接口,完全可以当作一个一个大家熟悉的文
件系统来使用,管理习惯很熟悉。
而Zope又是一个面向对象的数据库,面向对象的数据库和一般的数据库很不一样,它不
象关系数据库一样基于表格,而更象文件系统一样是树状结构的。从对象的角度来说,
记录的各个域值就是对象的各个属性。它超越关系数据库的地方是能适应各种数据类型
,每种数据类型都是一种对象,不但有各种属性,还有各种操作特定数据类型的方法。
常常听说对象数据库,通过Zope才具体接触了对象数据库。(ingresql和userland的产
品也是对象数据库)
Zope的特点是把文件和文件夹作为基本的对象,每个文件和文件夹都可以随意增加属性
,同时,文件夹下面的文件和文件夹又是父文件夹的属性。通过增加脚本文件的形式,
可以为文件和文家夹增加方法。比如,一个文件可以加入“作者”、“分类”、“难度
等级”等属性,文件夹也可以加入“显示此文件夹下所有文件内容”的方法。
Zope还有它独特的方法来实现了对象级的继承。这个方法就是“获取”。比如文件系统
的结构是/a/b/c,c是一个文件,在c中如果要引用一个变量v,如果c的属性中没有v,就
到b的属性中找,然后找b下是否有叫v的文件,然后找a的属性,然后找a中的文件,然后
找/目录的属性,找根下的文件。如果v是b的属性,就不用特别用a.b.v来引用。这样,
c文件中就会从各级文件夹继承丰富的变量环境。一个典型的例子是<dtml-var standar
d_HTML_header>,如果在根目录下放置了文件standard_HTML_header,就可以在任何目
录下的文件引用它来表现每个网页的共性的东西。如果在某个目录下需要自己特有的网
页效果,只要在这个目录下放一个特有的standard_HTML_header就可以了。这样,这个
目录下的文件就会获得这个目录下的header,而不是根目录下的header,从而实现了每
个栏目的个性。
获取的形式还可以是:c.m,m可以是方法,也就是脚本文件,比如用m来使c有另外一种
表现形式。m文件可以放到b文件夹下,也可以放到a文件夹下,c.m的表达方法都成立。
这样,我在根目录下放了m,网站的所有文件都有了方法m。
用url也可以支持这种获取,比如用http://my.com/a/b/c/m来调用方法m。同样,m的变量
环境就是/a/b/c。
总结:Zope作为http服务器,可以使服务器中的文件和文件夹有属性和方法等丰富的附
加信息。便于文件的查找和管理和表现等操作。同时,它又提供方便的文件操作。
Zope的现在的缺点是,不能直接使用外部文件,还要通过ftp复制到数据库中。现在有对
这方面的补救措施,但不是Zope默认的。希望Zope将来能象操作自己的对象一样操作外
部文件和其他网站的文件。
Zope作为数据库的优势:
从上面的论述,大家对Zope作为数据库的表现有了大概的印象。Zope和其他数据库相比
,它是一个面向对象的文档数据库。
不像MySQL,Zope有可视的管理界面,Zope的所有的管理工作都是通过web来完成的。we
b界面的优点是跨平台,可以远程操作,便于界面的定制。Zope的管理界面和一个文件管
理器类似,当点击一个文件后,有可以用同样的web界面来进行文件的编辑和添加属性、
安全管理等。Zope的脚本调试也是用web完成的。
Zope作为数据库,有强大的用户权限管理功能,它的用户和权限管理非常强大,可以在
某个文件夹下进行添加用户的操作,也分别对特定的对象都有自己的安全权限管理。
网站中数据库中主要的数据是文档,Zope作为文档数据库,有强大的文档管理功能,有
版本管理、历史记录功能,有全文检索功能。同时集成了文档的编辑环境和管理环境,
管理文档象在文件管理器中一样方便。这些都是一般的数据库所不具备的。
如果,数据库中有上万条记录,Zope的效率会比传统数据库要低,但Zope有大量的适配
器来链接各种数据库。来实现纯表格操作和大量的记录操作。
Zope作为编程和定制环境的优势:
Zope有dtml(动态模板标记)语言来嵌入HTML中,实现网页的动态化。简单地使用<dtm
l-var 变量>地形式就可以插入动态内容。由于可以方便地加入属性和方法以及“获取”
功能,文档具有极为丰富的变量环境。可以比一般的客户端包含提供更强大的功能。又
有<dtml-in 文件列表>的形式来方便地获取多个文件地内容。在dtml中还可以嵌入Pyth
on表达式。这样,不用编程就具有强大的动态网页功能,实现导航功能等也轻而易举。
这些功能的实现比PHP等语言要容易的多。
如果要加入复杂的功能,可以用脚本模块来实现函数和复杂操作,然后在dtml中调用脚
本模块,这样,实现了逻辑和表现的分离。在Zope中允许用Python、Perl和sql做脚本语
言,各种脚本可以相互调用,这样实现了多语言的混合编程,实现了.NET要实现的混合
编程的目的。Zope为脚本语言提供了统一的Zope API。用这种方式(以dtml为媒体)Pe
rl在unix中也可以实现嵌入HTML的效果。Perl爱好者有福了。在这里可以直接用sql操作
数据库,免去了把sql嵌入其他语言的麻烦。
Zope提出了zclass的概念,在一个product中捆绑了针对特定用途数据的一系列的属性和
方法,甚至编辑和查看界面、特定权限、帮助等。比如把任务作为一个zclass,任务有
任务的发出人、任务的执行人、任务的开始时间、完成时间、任务的内容等属性,也可
以有一个任务的建立和完成的方法。这样当调用建立方法时给执行人发一封信,当调用
完成方法时,给发出人发一封信。同时要有任务的web编辑界面,发出任务和修改任务的
权限定义。当建立了这样一个zclass,就可以在任何文件夹中加入一个任务实例,Zope
先检查用户是否有新建任务的权限,然后调出任务的编辑界面填入任务的各种属性,也
有“建立”和“完成”按钮来调用方法。通过zclass可以方便地为Zope增加新功能。这
种product的概念是PHP等语言所没有的功能,而通过product,Zope可以思路清晰地完成
一项复杂地功能。
同时,在product的实现中,不但可以调用Zope API,还可以直接调用Zope本身的各种模
块来实现更复杂的功能。因为Zope是开放源代码的,又是Python实现的,当编程中遇到
难题时,可以随时参考Zope的源代码,方便的调用Zope模块和函数,甚至可以修改Zope
代码,这些也是其他编程环境所没有的。
Zope的用户管理、版本管理等功能也是通过product来实现的,因此,Zope有一个标准的
、开放的开发环境。
最近刚读了一篇文章,它用dos和windows的关系来类比Apache和Zope,在Apache中所有
的东西都要自己来搞,如果不是自己搞,也要集合很多不同的程序来完成自己的任务,
并且每个人的选择是不同的,这样,造成了相互之间没有共同语言,就像要编dos程序,
要先自己到各处抓一些图形程序、打印程序、声音程序、安装程序等,来集合在一起,
这样很容易出毛病。而在Zope中,有很多统一的API,当你完成一个product时,用户管
理、权限管理、管理界面、编辑界面等这些都是Zope自带的,有API可用,就不用自己乱
忙了。比如象zwiki,几乎不用它,Zope本身就是一个协同工作的产品自带用户管理和版
本管理,这些就不用浪费时间白手起家了。文章中有一句话很好:“最差的统一编程界
面也比没有统一好”。到cmf,Zope更提供了极为丰富的API。
最后,如果对Zope还有什么不满意,还可以使用cmf(内容管理框架,Zope的二级开发平
台)来建立、管理网站,开发新功能。cmf对Zope的用户管理、文档管理、product进行
了大量的扩展来实现更加高端的功能。关于cmf的功能,需要另外写一篇文章来叙述。
--
※ 修改:·bigbug 於 06月14日22:51:59 修改本文·[FROM: HUST-C16(131)]
※ 来源:·武汉白云黄鹤站 bbs.whnet.edu.cn·[FROM: HUST-C16(131)]
--
※ 转寄:·武汉白云黄鹤站 bbs.whnet.edu.cn·[FROM: 深圳大学BBS]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.178]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店