Persistente Objektschnittstellen
Ein persistentes -Objekt implementiert eine oder mehrere persistente Objektschnittstellen. Clients verwenden persistente Objektschnittstellen, um diese Objekte darüber zu informieren, wann und wo sie ihren Zustand speichern. Alle persistenten Objektschnittstellen werden von IPersistabgeleitet, sodass jedes Objekt, das eine persistente Objektschnittstelle implementiert, auch IPersist implementiert.
Die folgenden persistenten Objektschnittstellen sind derzeit definiert:
- Ipersiststream
- IPersistStreamInit
- IPersistStorage
- Ipersistfile
- IPersistMoniker
- IPersistMemory
- IPersistPropertyBag
Implementierer wählen aus, welche persistenten Objektschnittstellen ein Objekt unterstützt, je nachdem, wie das Objekt verwendet werden soll. Da keine persistenten Objektschnittstellen unterstützt werden, sagt der Implementer effektiv: "Der Zustand dieses Objekts kann nicht dauerhaft gespeichert werden." Durch die Unterstützung einer oder mehrere persistenter Objektschnittstellen sagt der Implementer effektiv: "Der Zustand dieses Objekts kann dauerhaft in einem oder mehr Datenspeichermedium gespeichert werden."
In der folgenden Tabelle sind beispielsweise mehrere Objekttypen aufgeführt, die Unterstützung für verschiedene persistente Objektschnittstellen ermöglichen.
| Category | Persistente Objektschnittstellen werden in der Regel unterstützt. |
|---|---|
| Moniker |
Ipersiststream |
| Einbettbare OLE-Objekte |
IPersistStorage, IPersistFile |
| ActiveX-Steuerelemente |
IPersistStreamInit, IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker |
| ActiveX Dokumentobjekte |
IPersistStorage, IPersistFile |
Client-Implementierer können auch auswählen, welche persistenten Objektschnittstellen der Client verwenden kann. Die Schnittstellen, die ein Client verwendet, werden in der Regel durch den Ort bestimmt, an dem der Client seine eigenen Daten speichern kann. Ein Client, der seine Daten nur in einer Flatdatei speichern kann, verwendet wahrscheinlich nur IPersistStreamInit, IPersistMonikerund IPersistPropertyBag. (IPersistStreamInit kann IPersistStream in den meisten Anwendungen ersetzen, da es diese Definition enthält und eine Initialisierungsmethode hinzufügt.) Ein Client, der seine Daten in einer strukturierten Speicherdatei speichern kann, verwendet zusätzlich IPersistStorage.