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

然后有许多代表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数据库表的表示。

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

有人可以证实吗?

根据个人用途:

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

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

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

我从来没有需要直接使用这个类,因为它的所有操作都由相应的子类处理,例如:Document,Media,Member。 这个类轮流inheritance自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)。

与上述相同。

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

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

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