2010/01/18

Dexterity vs Archetypes

This blog is an abstract from How is Dexterity related to Archetypes by Martin Aspeli.

DexterityArchetypes 的替代方案,這兩種方案都是 Plone 建構 content type 的框架技術。由於 Archetypes 存在已久,是成熟的方案,而 Dexterity 是後起之秀,結合新版 Zope 技術,有些新技術能夠有效處理以往難以解決的問題。

下列是幾項主要的差異:

* Dexterity 結合新版 CMF、Zope 3 的技術與功能,程式碼更精簡,測試工作更能自動且完整。
* Dexterity 具備更高的模組化程度,更容易整合 SQL 資料庫。
* Archetypes 自有的 Schema 機制,並無法完全相容於 zope.interface 或 zope.schema 的介面。
* Archetypes 使用 accessor 與 mutator 來處理設定值,Dexterity 則使用 attribute notation 方式來處理,因此 Archetypes 的寫法類似 context.getFirstName() 而 Dexterity 是 context.first_name 這樣的寫法。
* Archetypes 自有的 field 和 widget 配合 content object 的脈絡來運作,並不容易被應用在獨立表單,Dexterity 則使用 z3c.form 函式庫,這是表單運作的標準工具。
* Archetypes 並不支援新增表單,Dexterity 則透過 z3c.form 來支援,這代表它不需要用到 portal_factory,執行效率能夠改善。
* Dexterity 支援 behavior,但 Archetypes 沒有直接支援。

No comments: