Interfacce di oggetti persistenti
Un oggetto permanente implementa una o più interfacce oggetto persistenti. I client usano interfacce di oggetto persistenti per indicare agli oggetti quando e dove archiviare lo stato. Tutte le interfacce oggetto persistenti sono derivate da IPersist, quindi qualsiasi oggetto che implementa qualsiasi interfaccia oggetto persistente implementa anche IPersist.
Sono attualmente definite le interfacce oggetto persistenti seguenti:
- Ipersiststream
- IPersistStreamInit
- IPersist Archiviazione
- Ipersistfile
- IPersistMoniker
- Ipersistmemory
- IPersistPropertyBag
Gli implementatori scelgono quali interfacce oggetto persistenti supportano un oggetto a seconda della modalità di utilizzo dell'oggetto. Non supportando alcuna interfaccia oggetto persistente, l'implementatore sta dicendo in modo efficace: "Questo stato dell'oggetto non può essere archiviato in modo permanente". Supportando una o più interfacce di oggetti persistenti, l'implementatore afferma in modo efficace: "Questo stato dell'oggetto può essere archiviato in modo permanente in uno o più supporti di archiviazione dati".
Nella tabella seguente, ad esempio, sono elencati diversi tipi di oggetto che consentono il supporto per interfacce di oggetti persistenti diverse.
Category | Interfacce di oggetti persistenti in genere supportate |
---|---|
Moniker |
Ipersiststream |
Oggetti incorporabili OLE |
IPersist Archiviazione, IPersistFile |
Controlli ActiveX |
IPersistStreamInit, IPersist Archiviazione, IPersistMemory, IPersistPropertyBag, IPersistMoniker |
Oggetti documento ActiveX |
IPersist Archiviazione, IPersistFile |
Gli implementatori client possono anche scegliere quali interfacce oggetto persistenti possono usare il client. Le interfacce usate da un client sono in genere determinate dalla posizione in cui il client può archiviare i propri dati. Un client in grado di archiviare i dati solo in un file flat userà probabilmente solo IPersistStreamInit, IPersistMoniker e IPersistPropertyBag. IPersistStreamInit può sostituire IPersistStream nella maggior parte delle applicazioni, perché contiene tale definizione e aggiunge un metodo di inizializzazione. Un client in grado di salvare i dati in un file di archiviazione strutturato userà anche IPersist Archiviazione.