Umbraco:Node,DynamicNode,Content之间的差异

rio*_*fly 7 c# performance umbraco

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

1) umbraco.cms.businesslogic.Content
2) umbraco.cms.businesslogic.web.Document
3) umbraco.MacroEngines.DynamicNode
4) umbraco.presentation.nodeFactory.Node
Run Code Online (Sandbox Code Playgroud)

还有其他人吗?

你能解释一下他们做了什么,以及何时使用它们?

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

我有一个理论:

umbraco.cms.businesslogic.Contentumbraco.cms.businesslogic.web.DocumentcmsContentcmsDocument数据库表的表示.

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

有人可以证实吗?

rad*_*dyz 10

基于个人用途:

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

请参阅下面的更多详细信息,但不,Node和DynamicNode不相同(DynamicNode使用Examine,如果需要,还将回退到数据库中读取).

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

我从来没有必要直接使用这个类,因为它的所有操作都由相应的子类处理,例如:Document,Media,Member.这个类轮流继承自CMSNode,它是umbraco中每个内容数据的基类

umbraco.cms.businesslogic.web.Document:Document表示一个网页,已发布的文档在缓存的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).

与上述相同.