2012-09-14 11 views
7

Poi ci sono molti classe che rappresenta documenti Umbraco:Umbraco: differenze tra Nodo, DynamicNode, Content

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

ci sono tutti gli altri?

Puoi spiegare cosa fanno e quando usarli?

umbraco.MacroEngines.DynamicNode e umbraco.presentation.nodeFactory.Node sembra lo stesso. Forse è meglio usare la classe Node perché è più veloce?

Ho una teoria:

umbraco.cms.businesslogic.Content e umbraco.cms.businesslogic.web.Document sono la rappresentazione di cmsContent e tavoli cmsDocument DB.

umbraco.presentation.nodeFactory.Node e umbraco.MacroEngines.DynamicNode rappresenta la cache nodo nel file XML, da utilizzare in sito. Il primo è semplicemente Nodo, il secondo è lo stesso Nodo con proprietà dinamiche aggiunte, uno per la proprietà definita in nodeType. Quindi, penso che Nodo non v'è più veloce di DynamicNode

È qualcuno che può confermare questo?

risposta

9

sulla base di uso personale:

  1. Contenuto: non utilizzarlo mai direttamente, piuttosto utilizzare l'API documento | Media | Membro (che eredita da questa classe).
  2. Documento: utilizzarlo per le operazioni Crea | Aggiorna | Elimina. Fa tutto il suo funzionamento direttamente su DB, quindi dovrebbe essere usato per la lettura solo quando è necessario i valori direttamente dal db.
  3. Nodo: utilizzare di più: durante la lettura | Visualizzazione dei dati tramite usercontrols, librerie di codici, estensioni xslt, ecc.
  4. DynamicNode: Macro del rasoio. Non ho ancora usato questo abbastanza per fornire maggiori informazioni.

Vedere sotto per ulteriori dettagli, ma no, Nodo e DynamicNode non sono gli stessi (DynamicNode utilizza Esamina e, se necessario, riporterà anche alla lettura dal DB).

umbraco.cms.businesslogic.Content: contenuti è uno strato intermedio tra CMSNode e classi che utilizzerà dati generici. Il contenuto è una struttura dati che contiene dati generici definiti nel relativo ContentType corrispondente. Il contenuto può essere in qualche modo comparato a una riga in una tabella di database, il suo ContentType contiene una definizione delle colonne e il Contenuto contiene i dati. Si noti che i dati di contenuto in umbraco sono non tabulare ma in una struttura.

Non ho mai avuto la necessità di utilizzare questa classe direttamente però, poiché tutte le sue operazioni sono gestite dalla sottoclasse corrispondente, ad esempio: Documento, Media, Membro. Questa classe a turno eredita da CMSNode che è la classe base per ogni pezzo di dati di contenuto all'interno umbraco

umbraco.cms.businesslogic.web.Document: documento rappresenta una pagina web, documenti pubblicati sono esposti al runtime/il sito Web pubblico in un documento XML memorizzato nella cache.

Utilizzare questa classe quando si fa riferimento ai nodi dalla "Sezione contenuto". Gestisce le operazioni CRUD. Attraverso questa classe si ottiene anche un riferimento al DataType di ogni proprietà nel caso in cui si desideri eseguire il rendering di quei controlli in una pagina aspx.

umbraco.NodeFactory.Node: implementa l'interfaccia INode che espone i metodi di sola lettura. Tutte le informazioni provengono dal file xml di umbraco memorizzato nella cache. Non avrai accesso ai controlli di ogni proprietà, piuttosto i valori di ogni formattato a seconda del tipo di dati.

È possibile utilizzare questa classe solo per operazioni di lettura. Rende molto veloce la visualizzazione dei dati poiché tutto proviene dalla cache (solo i nodi pubblicati).

umbraco.MacroEngines.DynamicNode: E 'stato attuato per lavorare con le macro di rasoio. Utilizza NodeFactory sotto il cofano, il che significa che accede anche all'XML memorizzato nella cache. Anche se si utilizza il relativo DynamicMedia, prestare attenzione poiché utilizza: 1: ExamineIndex che rimuove qualsiasi tag html, 2: torna al suo tipo di supporto predefinito (db se non è nella cache di runtime) in umbraco_v4.11.5.

Come sopra.

+0

L'istruzione DynamicNode che utilizza Esamina - ma quindi anche la lettura dal DB ("se non è nella cache di runtime") sembra essere in conflitto. Cosa intendi per cache di runtime qui? Generalmente presumo che HTTPRuntime venga utilizzato da Umbraco per la cache in memoria: ma Esamina non è quella cache. – jeffreypriebe

3

Conosco solo la differenza tra Documento e Nodo. La classe Node utilizza i dati memorizzati nella cache di umbraco, la classe Documento otterrà i dati direttamente dal database. Il nodo è più veloce del documento. Il nodo restituisce solo il contenuto che viene salvato e pubblicato.

95% di volte è necessario utilizzare il nodo.

0

Il contenuto consente di recuperare/modificare qualsiasi contenuto (pagina/media/..) dal DB (incluso contenuto non pubblicato), Documento consente di recuperare/modificare solo il contenuto della pagina dal DB (inclusi i contenuti non pubblicati) , nodo viene utilizzato per un veloce accesso in sola lettura al (solo pubblicato) il contenuto della pagina dalla cache XML e Nodo dinamica è paragonabile a Nodo, ma implementata nelle versioni successive di Umbraco per le macro che utilizzano Razor