Dati cache
È possibile memorizzare nella cache gli oggetti dati in una personalizzazione a livello di documento in modo che i dati siano accessibili offline o senza aprire Microsoft Office Word o Microsoft Office Excel. Per memorizzare nella cache un oggetto, l'oggetto deve avere un tipo di dati che soddisfi determinati requisiti. Molti tipi di dati comuni in .NET Framework soddisfano questi requisiti, tra cui String, DataSete DataTable.
Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento per Excel e Word. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.
Esistono due modi per aggiungere un oggetto alla cache dei dati:
Per aggiungere un oggetto alla cache dei dati quando viene compilata la soluzione, applicare l'attributo alla dichiarazione dell'oggetto CachedAttribute . Per altre informazioni, vedere Procedura: Memorizzare nella cache i dati per l'uso offline o in un server.
Per aggiungere a livello di codice un oggetto alla cache dei dati in fase di esecuzione, usare il
StartCaching
metodo di un elemento host, ad esempio leThisDocument
classi oThisWorkbook
. Per altre informazioni, vedere Procedura: Memorizzare nella cache a livello di codice un'origine dati in un documento di Office.Dopo aver aggiunto un oggetto alla cache dei dati, è possibile accedere e modificare i dati memorizzati nella cache senza avviare Word o Excel. Per altre informazioni, vedere Accedere ai dati nei documenti nel server.
Requisiti per gli oggetti dati da memorizzare nella cache
Per memorizzare nella cache un oggetto dati nella soluzione, l'oggetto deve soddisfare questi requisiti:
Essere un campo pubblico di lettura/scrittura o una proprietà di un elemento host, ad esempio le
ThisDocument
classi oThisWorkbook
.Non essere un indicizzatore o un'altra proprietà con parametri.
Inoltre, l'oggetto dati deve essere serializzabile dalla XmlSerializer classe , il che significa che il tipo dell'oggetto deve avere queste caratteristiche:
Essere un tipo pubblico.
Disporre di un costruttore pubblico senza parametri.
Non eseguire codice che richiede privilegi di sicurezza aggiuntivi.
Esporre solo proprietà pubbliche di lettura/scrittura (altre proprietà verranno ignorate).
Non esporre matrici multidimensionali (sono accettate matrici annidate).
Non restituiscono interfacce da proprietà e campi.
Non implementare IDictionary se una raccolta.
Quando si memorizza nella cache un oggetto dati, la Strumenti di Visual Studio per il runtime di Office serializza l'oggetto in una stringa XML archiviata in una parte XML personalizzata nel documento. Per altre informazioni, vedere Panoramica delle parti XML personalizzate.
Limiti delle dimensioni dei dati memorizzati nella cache
Esistono alcuni limiti alla quantità totale di dati che è possibile aggiungere alla cache dei dati in un documento e alle dimensioni di qualsiasi singolo oggetto nella cache dei dati. Se si superano questi limiti, l'applicazione potrebbe chiudersi in modo imprevisto quando i dati vengono salvati nella cache dei dati.
Per evitare questi limiti, seguire queste linee guida:
Non aggiungere alcun oggetto maggiore di 10 MB alla cache dei dati.
Non aggiungere più di 100 MB di dati totali alla cache dei dati in un singolo documento.
Si tratta di valori approssimativi. I limiti esatti dipendono da diversi fattori, tra cui la RAM disponibile e il numero di processi in esecuzione.
Controllare il comportamento degli oggetti memorizzati nella cache
Per ottenere un maggiore controllo sul comportamento di un oggetto memorizzato nella cache, è possibile implementare l'interfaccia ICachedType sul tipo dell'oggetto memorizzato nella cache. Ad esempio, è possibile implementare questa interfaccia se si vuole controllare la modalità di notifica dell'utente quando l'oggetto è stato modificato. Per esempi di codice che illustrano come implementare ICachedType, vedere la ControlCollection
classe nell'esempio di controlli dinamici di Excel e nell'esempio di controlli dinamici di Word negli esempi di sviluppo di Office e procedure dettagliate.
Rendere persistenti le modifiche ai dati memorizzati nella cache nei documenti protetti da password
Se si memorizzano nella cache gli oggetti dati in un documento protetto con una password, le modifiche ai dati memorizzati nella cache non vengono salvate. È possibile salvare le modifiche ai dati memorizzati nella cache eseguendo l'override di due metodi. Eseguire l'override di questi metodi per rimuovere temporaneamente la protezione quando il documento viene salvato e quindi riapplicare la protezione al termine dell'operazione di salvataggio.
Per altre informazioni, vedere Procedura: Memorizzare nella cache i dati in un documento protetto da password.
Evitare la perdita di dati quando si aggiungono valori Null alla cache dei dati
Quando si aggiungono oggetti alla cache dei dati, tutti gli oggetti memorizzati nella cache devono essere inizializzati in un valore non Null prima che il documento venga salvato e chiuso. Se un oggetto memorizzato nella cache ha un valore Null quando il documento viene salvato e chiuso, il Strumenti di Visual Studio per il runtime di Office rimuoverà automaticamente tutti gli oggetti memorizzati nella cache dei dati.
Se si aggiunge un oggetto con un valore Null alla cache dei dati usando l'attributo in fase di progettazione, è possibile utilizzare la ServerDocument classe per inizializzare gli oggetti dati memorizzati nella cache prima dell'apertura CachedAttribute del documento. Ciò è utile se si desidera inizializzare i dati memorizzati nella cache in un server senza Word o Excel installato, prima che il documento venga aperto da un utente finale. Per altre informazioni, vedere Accedere ai dati nei documenti nel server.
Contenuto correlato
- Procedura: Memorizzare nella cache i dati per l'uso offline o in un server
- Procedura: Memorizzare nella cache a livello di codice un'origine dati in un documento di Office
- Procedura: Memorizzare nella cache i dati in un documento protetto da password
- Procedura dettagliata: Creare una relazione di dettaglio master usando un set di dati memorizzato nella cache