Plone技术资料

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4188|回复: 1

关于Dexterity的FAQs

[复制链接]
发表于 2011-10-27 10:28:58 | 显示全部楼层 |阅读模式
Dexterity 可以服务于两类人员:站点管理员或系统集成人员、开发人员。
Dexterity为站点管理员或系统集成人员提供如下帮助:
  • 通过web揭秘创建新的内容类型
  • 可以基于每一内容类型指定或取消特定的操作行为(我们的术语叫 "behaviors")
  • 提升系统集成人员(定义内容类型schema的人员)和程序员(开发并提供可重用的behaviors代码,可用来被系统管理原自由插拔的人员)的协助效率。
Dexterity为开发人员提供如下承诺:
  • 快捷而容易地创建内容类型,相对于Archetype或者plain CMF类型,较少的公式性的僵化的模式,较少的机械重复
  • 生成的内容对象消耗更少的运行时间,从而提升性能
  • 内容类型采用现代标准的 zope.interface/zope.schema 样式的 schema,and more broadly support modern idioms that sit a little awkardly withArchetypes and its ilk

Dexterity和 Archetypes的关系和区别是怎样?                                                      
Dexterity是Archetypes的替换技术,是 Plone理想的内容类型框架。Dexterity已经克服了Archetypes的某些缺点或缺陷,更重要的是, Dexterity 促使一些Archetypes不具备的技术被首次孕育和应用。
两者一个全面的对比超出了本文的范围,但是某些主要的差异体现在如下几个方面:
  • Dexterity能促进和提升Zope3和更新版CMF带来的新技术的应用。这意味着Dexterity框架相对与Archetype包含令人吃惊的较少的代码。而且Dexterity有更好的自动化测试覆盖。
  • Dexterity是更好模块化的,而Archetypes是更庞大的体系。这使得Dexterity更容易支持和实现这类象 SQL database-backed 类型、可替换的工作流系统、实例特别的子类型等等。 他也意味着大量的为dexterity的部件开发,如通过web的schema编辑, "behaviors" 系统或者Plone.autoform实现的表单构造API等是可以在另外的上下文(内容对象)中重用。例如建立孤立的表单甚至扩展基于Archetypes的类型。
  • Archetypes有自己的Schema 实现,并且不兼容基于接口的 zope.interface 和 zope.schema. 后者通常用来通过 Zope stack 来描述部件并建立forms。桥接Archetypes schema 到Zope 3 schema 文化的各种技术已存在,但没有一个看来有特别的吸引力。
  • Archetypes 采用 accessor和 mutator methods 来获取或设置字段值。to get/set values. These are generated and scribbled onto a class at startup. Dexterity采用属性文法, 因此在Archetypes中,你用context.getFirstName()这种形式,而在Dexterity 将采用context.first_name.
  • Archetypes在fields和widgets方面有自己的实现。在孤立的表单和模板中要重用fields和widgets非常困难,因为他们都被绑紧到一个内容对象。  Dexterity采用事实上标准的z3c.form ,这意味着用于孤立表单的widgets和用于内容类型创建或编辑表单的widgets是一样的。
  • Archetypes 不支持add forms. Dexterity通过z3c.form支持add Forms。这意味着 Dexterity类型不需要采用 portal_factory hack ,从而避免在内容空间生成一个 stale objects(脏对象)。因此是更快的并且较少有错误产生。
  • Archetypes在产品的initialize()方法中以及其他地方要求大量的例行的操作(要求包注册为一个Zope2的产品), requires a chunk of boilerplate in your product's initialize() method (and requires that your package is registered as a Zope 2 product) and elsewhere.它要求执行特殊序列的初始化操作以注册内容classes,运行class generator以添加 accessors/mutators,并且还要设置相关权限。Dexterity总是避免僵化的操作,极力建设机械化的重复。
  • 可以用archetypes.schemaextender来扩展已存的,尽管这将牺牲某些性能的消耗。 Dexterity 类型从开始设计就考虑了扩展性,他通过采用可重用的行为来启用或关闭某些扩展功能(如 Dublin Core metadata, locking support, ratings, tagging,等等)
  • Dexterity被设计为从底层支持通过web的类型创建。Archetypes类型也有产品能做同样的事情,但是这受Archetypes体系本身的大量限制而功能脆弱,性能很慢。 Dexterity既允许通过web的类型开发,也允许通过文件系统python代码式样的开发,也就是说一个schema能采用python书写,也能通过web扩展。
所有这些说明 Archetypes仍旧是值得注意的成熟的框架,它已有成千上万的现实世界部署应用的例子。Dexterity是全新的,我们希望在大多数的项目背景中,Dexterity能成为比Archetypes更有效的替换者。但是,如果你喜欢用Archetypes,你不应该立即冲过来用Dexterity来重写你的内容类型。
也有一些东西Dexterity目前不支持,Plone当前内建的服务都假定是用Archetypes体系建立的。Dexterity目前的缺陷列表可以在这里 Dexterity issue tracker发现。 在决定Dexterity是否适合你之前,你应好好看看这个。如果有疑问,不要迟疑,在 Dexterity mailing list 中写你的问题需求帮助。
Dexterity, Archetypes 和 Plone的未来
Dexterity将形成Plone的构成部分在Plone4和Plone5中, will form some part of Plone's future as we move to Plone 4 and Plone 5. 在Plone5中,缺省的页面内容类型将用dexterity,Dexterity的部件和概义将代替Archetypes。
在Plone4.2中,Dexterity将被移植到Plone,作为核心的一部分。
Archetypes 是推荐在Plone3中创建内容类型,也将在Plone4中保持。
最后, Dexterity和 Archetypes共享少量代码,他们在许多方面也是类似的。你的类型有一个schema,通过这个schema生成表单;你的类型也都通过portal_types tool来安装;都支持工作流和安全;也都有一个add permission;都有定制视图等等。如果你熟悉Archetypes,你也应该能很快、很容易地用好Dexterity。                                                


回复

使用道具 举报

发表于 2011-12-14 23:54:04 | 显示全部楼层
Dexterity  好用吗?准备学一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|Plone技术资料 ( 湘ICP备14006519号-1 )

GMT+8, 2019-11-19 09:07 , Processed in 0.046414 second(s), 18 queries , Gzip On.

Powered by Plone! X3.4

© 2001-2019 Plone.org.

快速回复 返回顶部 返回列表