然后有许多代表Umbraco文档的类:
1) umbraco.cms.businesslogic.Content
2) umbraco.cms.businesslogic.web.Document
3) umbraco.MacroEngines.DynamicNode
4) umbraco.presentation.nodeFactory.Node
还有其他人吗?
你能解释一下他们做了什么,以及何时使用它们?
umbraco.MacroEngines.DynamicNode 和 umbraco.presentation.nodeFactory.Node 似乎相同。也许最好使用Node类,因为它更快?
我有一个理论:
umbraco.cms.businesslogic.Content 和 umbraco.cms.businesslogic.web.Document 是 cmsContent 和的表示形式cmsDocument 数据库表。
umbraco.presentation.nodeFactory.Node 和 umbraco.MacroEngines.DynamicNode 表示在XML文件中缓存的节点,以便用于网站。 第一个是简单的Node,第二个是添加了动态属性的同一个Node,一个是nodeType中定义的属性。 所以,我认为 Node 比 DynamicNode
更快是否有人可以证实这一点?
答案 0 :(得分:10)
基于个人用途:
请参阅下面的更多详细信息,但不,Node和DynamicNode不相同(DynamicNode使用Examine,如果需要,也会回退到数据库中读取)。
<强> umbraco.cms.businesslogic.Content:强> 内容是CMSNode和将使用通用数据的类之间的中间层。内容是一种数据结构,用于保存在其对应的ContentType中定义的通用数据。内容可以在某种程度上与数据库表中的行进行比较,其ContentType包含列的定义,Content包含数据。请注意,umbraco中的内容数据不表格,但在树状结构中。
我从来没有必要直接使用这个类,因为它的所有操作都由相应的子类处理,例如:Document,Media,Member。这个类轮流继承自CMSNode,它是umbraco中每个内容数据的基类
umbraco.cms.businesslogic.web.Document :文档代表一个网页,已发布文档在缓存的xml文档中公开给运行时/公共网站。
在引用“内容部分”中的节点时使用此类。它处理CRUD操作。通过这个类,您还可以获得对每个属性的DataType的引用,以防您想在aspx页面中呈现这些控件。
umbraco.NodeFactory.Node :它实现了公开只读方法的INode接口。它的所有信息都来自umbraco缓存的xml。您将无法访问每个属性的控件,而是根据数据类型对每个属性的值进行访问。
您只能使用此类进行阅读操作。它使得显示数据非常快,因为所有内容都来自缓存(仅限已发布的节点)。
umbraco.MacroEngines.DynamicNode :它实现了与razor宏一起使用。它在引擎盖下使用NodeFactory,这意味着它还可以访问缓存的xml。虽然如果使用相关的DynamicMedia,请小心使用:1:ExamineIndex删除任何html标签,2:它在umbraco_v4.11.5中回退到默认的媒体类型(如果它不在运行时缓存中,则为db)。 / p>
与上述相同。
答案 1 :(得分:3)
我只知道Document和Node之间的区别。 Node类使用存储在umbraco缓存中的数据,Document类将直接从数据库中获取数据。 节点比Document快。 节点仅返回保存和发布的内容。
95%的时间你应该使用Node。
答案 2 :(得分:0)
内容允许您从数据库中检索/编辑任何内容(页面/媒体/ ..)(包括未发布的内容),文档允许您仅从数据库检索/编辑页面内容(包括未发布的内容),节点用于从XML缓存中快速只读访问(仅发布)页面内容,动态节点与Node相当,但在Umbraco的更高版本中使用Razor实现宏