Persistent-Objektschnittstellen
Ein persistentes Objekt implementiert eine oder mehrere persistente Objektschnittstellen. Clients verwenden persistente Objektschnittstellen, um diese Objekte mitzuteilen, wann und wo der Zustand gespeichert werden soll. Alle persistenten Objektschnittstellen werden von IPersistabgeleitet, sodass jedes Objekt, das eine persistente Objektschnittstelle implementiert, auch IPersistimplementiert.
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 Implementierer effektiv: "Der Zustand dieses Objekts kann nicht dauerhaft gespeichert werden." Durch die Unterstützung einer oder mehrerer persistenter Objektschnittstellen sagt der Implementierer effektiv: "Der Zustand dieses Objekts kann dauerhaft in einem oder mehreren Datenspeichermedien gespeichert werden."
In der folgenden Tabelle sind beispielsweise mehrere Objekttypen aufgeführt, die unterstützung für unterschiedliche persistente Objektschnittstellen zulassen.
Kategorie | 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 |
Clientimplementierer können auch auswählen, welche persistenten Objektschnittstellen der Client verwenden kann. Die schnittstellen, die ein Client verwendet, wird in der Regel bestimmt, wo der Client seine eigenen Daten speichern kann. Ein Client, der seine Daten nur in einer Flachdatei speichern kann, wird wahrscheinlich nur IPersistStreamInit, IPersistMonikerund IPersistPropertyBag verwenden. (IPersistStreamInit kann IPersistStream in den meisten Anwendungen ersetzen, da sie diese Definition enthält und eine Initialisierungsmethode hinzufügt.) Ein Client, der seine Daten in einer strukturierten Speicherdatei speichern kann, verwendet außerdem IPersistStorage.