7

然后有许多代表 Umbraco 文档的类:

1) umbraco.cms.businesslogic.Content
2) umbraco.cms.businesslogic.web.Document
3) umbraco.MacroEngines.DynamicNode
4) umbraco.presentation.nodeFactory.Node

还有其他人吗?

您能解释一下它们的作用以及何时使用它们吗?

umbraco.MacroEngines.DynamicNodeumbraco.presentation.nodeFactory.Node看起来一样。也许使用 Node 类会更好,因为它更快?

我有一个理论:

umbraco.cms.businesslogic.Contentumbraco.cms.businesslogic.web.DocumentcmsContentcmsDocument DB 表的表示形式。

umbraco.presentation.nodeFactory.Nodeumbraco.MacroEngines.DynamicNode表示缓存在 XML 文件中的节点,以便在网站中使用。第一个是简单的 Node,第二个是添加了动态属性的同一个 Node,一个用于在 nodeType 中定义的属性。所以,我认为NodeDynamicNode快

有没有人可以证实这一点?

4

3 回答 3

11

基于个人使用:

  1. 内容:永远不要直接使用它,而是使用 Document|Media|Member api(继承自此类)。
  2. 文档:用于创建|更新|删除操作。它直接对数据库执行所有操作,因此仅当您需要直接从数据库中读取值时,才应将其用于读取。
  3. 节点:使用最多:当通过用户控件、代码库、xslt 扩展等读取|显示数据时。
  4. DynamicNode:剃刀宏。我还没有足够使用这个来提供更多信息。

有关详细信息,请参见下文,但不,Node 和 DynamicNode 不同(DynamicNode 使用 Examine 并且如果需要也将回退到从数据库读取)。

umbraco.cms.businesslogic.Content: 内容是 CMSNode 和将使用通用数据的类之间的中间层。Content 是一种数据结构,它保存在其对应的 ContentType 中定义的通用数据。在某种意义上,内容可以比作数据库表中的一行,它的 ContentType 包含列的定义,而 Content 包含数据。请注意,umbraco 中的内容数据不是表格,而是树结构。

不过我从来没有需要直接使用这个类,因为它的所有操作都由相应的子类处理,例如:Document、Media、Member。此类依次继承自 CMSNode,CMSNode 是 umbraco 中每条内容数据的基类

umbraco.cms.businesslogic.web.Document:Document 代表一个网页,已发布的 Documents 在缓存的 xml 文档中暴露给运行时/公共网站。

从“内容部分”引用节点时使用此类。它处理 CRUD 操作。通过这个类,您还可以获得对每个属性的 DataType 的引用,以防您希望在 aspx 页面中呈现这些控件。

umbraco.NodeFactory.Node:它实现了 INode 接口,该接口公开了只读方法。它的所有信息都来自 umbraco 缓存的 xml。您将无法访问每个属性的控件,而是每个根据数据类型格式化的值。

您只能将此类用于读取操作。由于所有内容都来自缓存(仅限已发布节点),因此它可以非常快速地显示数据。

umbraco.MacroEngines.DynamicNode:它被实现为与剃刀宏一起使用。它在后台使用 NodeFactory,这意味着它还可以访问缓存的 xml。尽管如果您使用相关的 DynamicMedia 时要小心,因为它使用:1:ExamineIndex 去除任何 html 标签,2:它回退到 umbraco_v4.11.5 中的默认媒体类型(如果它不在运行时缓存中,则为 db)。

与上述相同。

于 2013-03-14T21:25:29.770 回答
3

我只知道 Document 和 Node 之间的区别。Node 类使用存储在 umbraco 缓存中的数据,Document 类将直接从数据库中获取数据。Node 比 Document 快。Node 只返回保存和发布的内容。

95% 的时间你应该使用 Node。

于 2012-09-14T08:45:54.600 回答
0

Content 允许您从 DB 中检索/编辑任何内容(页面/媒体/..)(包括未发布的内容),Document 允许您仅从 DB 中检索/编辑页面内容(包括未发布的内容),使用 Node用于从 XML 缓存快速只读访问(仅发布)页面内容,动态节点与 Node 相当,但在 Umbraco 的更高版本中实现,用于使用 Razor 的宏

于 2013-02-13T16:49:57.877 回答