从Django眼中了解Zope内部结构

我是zope的新手,之前我在Django工作了大约2.5年.因此,当我第一次跳入Zope(v2)时(仅因为我的新公司7年来一直使用它),我遇到了这些问题.请帮助我理解它们.

> zodb的“真正”目的是什么?我知道它做了什么,但告诉我zodb做的​​一件好事和像Django(没有zodb)这样的框架未命中.

更新:根据答案,Zodb取代了对ORM的需求.您可以直接将对象存储在db(zodb本身)中.
>据说zope的杀手功能之一是TTW(通过网络或使用ZMI开发)的理念.但我(和任何开发人员)更喜欢基于文件系统的开发(使用Version控件,使用Eclipse,使用Zope之外的任何喜欢的工具).那TTW实际上在哪里使用?
>这是最重要的一个.与Python / Django继承相比,Zope的Acquistion获得了什么“EXTRA Stuff”.
>来自Django的Zope真的是一个很好的举动吗?
>任何像zope(v2)的djangosnippets.org这样的网站?

首先要做的事情是:当前的zope2版本也包括所有zope3.如果你看看像Plone这样的现代zope2应用程序,你会发现它使用了大量的“zope 3”(现在称为“zope工具包”,ZTK).

ZODB的真正目的:它是少数几个对象数据库(与关系SQL数据库相对)之一,它们被广泛使用.您可以“只”将所有python对象存储在那里,而无需使用对象关系映射器.引擎盖下没有“选择*来自xyz”.在zodb对象上添加一个新属性“just”会持续存在这种变化.豪华!当您的数据无法轻松映射到严格的关系数据库时,尤其方便.如果你可以轻松地映射它:只使用这样的数据库,我在zope项目中使用了sqlalchemy几次.

TTW:我们从那里回来了.至少,TTW的zope2方式确实具有你担心的所有缺点.没有版本控制,没有外部工具等.Plone正在尝试(谷歌的“灵巧”)与良好的显式zope 3方式进行TTW开发,仍然可以映射回文件系统.

TTW:zodb使得在数据库中存储各种配置设置变得简单而便宜,因此您通常可以通过浏览器调整很多东西.但这并不算作典型的TTW开发.

收购:方便的技巧,虽然它导致巨大的命名空间污染.双刃剑.为了提高可调试性和维护性,我们在大多数情况下都尝试不用.采集发生在“对象图”内部,因此请考虑“zope站点内的文件夹结构”.调用“contact_form”三个文件夹仍然可以找到网站根目录下的“contact_form”,如果在其间找不到它.双刃剑!

(当然,常规的python面向对象的继承发生在各处).

从django转移到zope:对于某些问题非常好,对其他问题毫无意义:-)相当多的zope2 / plone公司实际上已经为特定项目完成了一些django项目,通常是那些拥有99%内容的项目一个相对简单的SQL数据库.如果你更喜欢内容管理,那么zope(和plone)可能更好.

补充提示:不要只关注zope2. Zope3的“组件架构”具有许多用于创建更大应用程序(也非非Web)的功能.例如,请查看grok(http://grok.zope.org)以获得友好的打包zope.纯组件体系结构也可以在django项目中使用.

相关文章
相关标签/搜索