Home >Backend Development >PHP Tutorial >Zope的优点和Apache PHP MySQL的比较_PHP

Zope的优点和Apache PHP MySQL的比较_PHP

WBOY
WBOYOriginal
2016-06-01 12:29:53756browse

ApacheZope

Zope能和Apache PHP MySQL进行比较是因为它即是http服务器,又是数据库,又包含脚本编程语言。现在向大家推荐Zope是因为它的功能更丰富,建立应用更容易,效率比PHP高几倍。现在的服务器端编程环境有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文件中就会从各级文件夹继承丰富的变量环境。一个典型的例子是,如果在根目录下放置了文件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来完成的。web界面的优点是跨平台,可以远程操作,便于界面的定制。Zope的管理界面和一个文件管理器类似,当点击一个文件后,有可以用同样的web界面来进行文件的编辑和添加属性、安全管理等。Zope的脚本调试也是用web完成的。

Zope作为数据库,有强大的用户权限管理功能,它的用户和权限管理非常强大,可以在某个文件夹下进行添加用户的操作,也分别对特定的对象都有自己的安全权限管理。

网站中数据库中主要的数据是文档,Zope作为文档数据库,有强大的文档管理功能,有版本管理、历史记录功能,有全文检索功能。同时集成了文档的编辑环境和管理环境,管理文档象在文件管理器中一样方便。这些都是一般的数据库所不具备的。

如果,数据库中有上万条记录,Zope的效率会比传统数据库要低,但Zope有大量的适配器来链接各种数据库。来实现纯表格操作和大量的记录操作。

Zope作为编程和定制环境的优势:

Zope有dtml(动态模板标记)语言来嵌入HTML中,实现网页的动态化。简单地使用地形式就可以插入动态内容。由于可以方便地加入属性和方法以及“获取”功能,文档具有极为丰富的变量环境。可以比一般的客户端包含提供更强大的功能。又有的形式来方便地获取多个文件地内容。在dtml中还可以嵌入Python表达式。这样,不用编程就具有强大的动态网页功能,实现导航功能等也轻而易举。这些功能的实现比PHP等语言要容易的多。

如果要加入复杂的功能,可以用脚本模块来实现函数和复杂操作,然后在dtml中调用脚本模块,这样,实现了逻辑和表现的分离。在Zope中允许用Python、Perl和sql做脚本语言,各种脚本可以相互调用,这样实现了多语言的混合编程,实现了.NET要实现的混合编程的目的。Zope为脚本语言提供了统一的Zope API。用这种方式(以dtml为媒体)Perl在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的功能,需要另外写一篇文章来叙述。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn