まず最初に: 現在の zope2 バージョンには、zope3 もすべて含まれています。また、Plone などの最新の zope2 アプリケーションを見ると、内部で多くの「zope 3」(現在は「zope ツール キット」、ZTK と呼ばれる) が使用されていることがわかります。
ZODB の真の目的: ZODB は、(リレーショナル SQL データベースとは対照的に) 実際に広く使用されている数少ないオブジェクト データベースの 1 つです。オブジェクト リレーショナル マッパーを使用する必要なく、そこにすべての Python オブジェクトを「そのまま」保存できます。ボンネットの下に「select * from xyz」はありません。そして、zodb オブジェクトに新しい属性を追加すると、その変更が「ちょうど」持続します。豪華な!データを厳密なリレーショナル データベースに簡単にマッピングできない場合に特に便利です。簡単にマッピングできる場合は、そのようなデータベースを使用してください。私は、zope プロジェクトで sqlalchemy を数回使用しました。
TTW: そこから戻ってきました。少なくとも、TTW の zope2 方式には、皆さんが恐れているすべての欠点があります。バージョン管理も、外部ツールもありません。Plone は (「器用さ」を Google で検索して) 実験を行っています。ファイルシステムにマッピングできる TTW 開発を行う 3 つの方法があります。
TTW: zodb を使用すると、あらゆる種類の構成設定をデータベースに簡単かつ安価に保存できるため、通常はブラウザーを介して多くのことを調整できます。ただし、これは典型的な TTW 開発とは言えません。
取得: 便利なトリックですが、名前空間が大量に汚染されます。両刃の剣。デバッグ性と保守性を向上させるために、ほとんどの場合、これを使用しないようにしています。取得は「オブジェクトグラフ」内で行われるので、「Zope サイト内のフォルダ構造」と考えてください。3 つ下のフォルダーにある "contact_form" を呼び出すと、中間のどこかに見つからない場合でも、サイトのルートにある "contact_form" を見つけることができます。両刃の剣!
(そして、通常の python オブジェクト指向の継承は、もちろんいたるところで行われます)。
django から zope への移行: 特定の問題に対しては本当に良いアイデアですが、他の問題に対しては無意味です:-) かなり多くの zope2/plone 企業が実際に特定のプロジェクトのためにいくつかの django プロジェクトを行っています。比較的単純な SQL データベースです。コンテンツ管理にもっと興味があるなら、zope (および plone) の方がおそらく優れています。
追加のヒント: zope2 だけに注目しないでください。Zope3 の「コンポーネント アーキテクチャ」には、より大きなアプリケーション (非 Web も含む) を作成するための多くの機能があります。たとえば、使いやすいパッケージ化された Zope についてはgrok ( http://grok.zope.org ) を参照してください。純粋なコンポーネント アーキテクチャは、django プロジェクト内でも使用できます。