首頁 後端開發 php教程 Zope的优点和Apache PHP MySQL的比较_PHP

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

Jun 01, 2016 pm 12:29 PM
優點 功能 可以 資料庫 文件 比較 管理

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的功能,需要另外写一篇文章来叙述。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 Jul 18, 2024 am 05:48 AM

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

如何在PHP中處理資料庫連線錯誤 如何在PHP中處理資料庫連線錯誤 Jun 05, 2024 pm 02:16 PM

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

在PHP中使用MySQLi建立資料庫連線的詳盡教學 在PHP中使用MySQLi建立資料庫連線的詳盡教學 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立資料庫連線:包含MySQLi擴充(require_once)建立連線函數(functionconnect_to_db)呼叫連線函數($conn=connect_to_db())執行查詢($result=$conn->query())關閉連線( $conn->close())

GateToken(GT)幣是什麼? GT幣功能及代幣經濟學介紹 GateToken(GT)幣是什麼? GT幣功能及代幣經濟學介紹 Jul 15, 2024 pm 04:36 PM

GateToken(GT)币是什么?GT(GateToken)是GateChain的链上原生资产,也是Gate.io的官方平台币。GT币的价值与Gate.io及GateChain生态的发展息息相关。什么是GateChain?GateChain诞生于2018年,是Gate.io所推出的新一代高性能公链。GateChain专注于保护用户的链上资产安全,并提供便捷的去中心化交易服务。GateChain的目标是构建一个企业级安全高效的去中心化数字资产储存、分发和交易生态系統。Gatechain具有独创的

如何在 Golang 中使用資料庫回呼函數? 如何在 Golang 中使用資料庫回呼函數? Jun 03, 2024 pm 02:20 PM

在Golang中使用資料庫回呼函數可以實現:在指定資料庫操作完成後執行自訂程式碼。透過單獨的函數新增自訂行為,無需編寫額外程式碼。回調函數可用於插入、更新、刪除和查詢操作。必須使用sql.Exec、sql.QueryRow或sql.Query函數才能使用回呼函數。

在 Golang 中,如何比較自訂類型的值? 在 Golang 中,如何比較自訂類型的值? Jun 05, 2024 pm 01:04 PM

在Golang中,可透過以下方式比較自訂類型的值:對於具有相同底層表示形式的類型,直接使用==運算元進行比較。對於更複雜的類型,使用reflect.DeepEqual函數遞歸比較兩個值的全部內容。

如何在 Golang 中將 JSON 資料保存到資料庫中? 如何在 Golang 中將 JSON 資料保存到資料庫中? Jun 06, 2024 am 11:24 AM

可以透過使用gjson函式庫或json.Unmarshal函數將JSON資料儲存到MySQL資料庫中。 gjson函式庫提供了方便的方法來解析JSON字段,而json.Unmarshal函數需要一個目標類型指標來解組JSON資料。這兩種方法都需要準備SQL語句和執行插入操作來將資料持久化到資料庫中。

如何用 Golang 連接遠端資料庫? 如何用 Golang 連接遠端資料庫? Jun 01, 2024 pm 08:31 PM

透過Go標準庫database/sql包,可以連接到MySQL、PostgreSQL或SQLite等遠端資料庫:建立包含資料庫連接資訊的連接字串。使用sql.Open()函數開啟資料庫連線。執行SQL查詢和插入操作等資料庫操作。使用defer關閉資料庫連線以釋放資源。

See all articles