Schnittstellen für persistente Objekte
Ein persistentes Objekt implementiert eine oder mehrere Schnittstellen für persistente Objekte. Clients verwenden Schnittstellen für persistente Objekte, um diesen Objekten mitzuteilen, wann und wo ihr Zustand gespeichert werden soll. Alle Schnittstellen für persistente Objekte werden von IPersist abgeleitet, sodass jedes Objekt, das eine schnittstelle für persistente Objekte implementiert, auch IPersist implementiert.
Die folgenden Schnittstellen für persistente Objekte 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 Schnittstellen für persistente Objekte unterstützt werden, sagt der Implementierer effektiv: "Der Zustand dieses Objekts kann nicht dauerhaft gespeichert werden." Durch die Unterstützung einer oder mehrerer Schnittstellen für persistente Objekte sagt der Implementierer effektiv: "Der Zustand dieses Objekts kann dauerhaft in einem oder mehreren Datenspeichermedien gespeichert werden."
Die folgende Tabelle enthält beispielsweise mehrere Objekttypen, die die Unterstützung für unterschiedliche Schnittstellen für persistente Objekte ermöglichen.
Category | Schnittstellen für persistente Objekte werden in der Regel unterstützt |
---|---|
Moniker |
Ipersiststream |
EINBETTBARE OLE-Objekte |
IPersistStorage, IPersistFile |
ActiveX-Steuerelemente |
IPersistStreamInit, IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker |
ActiveX-Dokumentobjekte |
IPersistStorage, IPersistFile |
Clientimplementierende können auch auswählen, welche persistenten Objektschnittstellen der Client verwenden kann. Die Schnittstellen, die ein Client verwendet, werden normalerweise danach bestimmt, wo der Client seine eigenen Daten speichern kann. Ein Client, der seine Daten nur in einer Flatfile speichern kann, verwendet wahrscheinlich nur IPersistStreamInit, IPersistMoniker und 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 außerdem IPersistStorage.