Interfaces de objeto persistente
Un objeto persistente implementa una o varias interfaces de objeto persistente . Los clientes usan interfaces de objetos persistentes para indicar a esos objetos cuándo y dónde almacenar su estado. Todas las interfaces de objeto persistentes se derivan de IPersist, por lo que cualquier objeto que implemente cualquier interfaz de objeto persistente también implemente IPersist.
Actualmente se definen las siguientes interfaces de objeto persistente:
- IPersistStream
- IPersistStreamInit
- IPersistStorage
- IPersistFile
- IPersistMoniker
- IPersistMemory
- IPersistPropertyBag
Los implementadores eligen qué interfaces de objeto persistente admite un objeto en función de cómo se va a usar el objeto. Al no admitir ninguna interfaz de objeto persistente, el implementador dice eficazmente: "El estado de este objeto no se puede almacenar de forma persistente". Al admitir una o varias interfaces de objetos persistentes, el implementador dice de forma eficaz: "El estado de este objeto se puede almacenar de forma persistente en uno o varios medios de almacén de datos".
Por ejemplo, en la tabla siguiente se enumeran varios tipos de objetos que permiten la compatibilidad con diferentes interfaces de objetos persistentes.
Categoría | Normalmente se admiten interfaces de objetos persistentes |
---|---|
Monikers |
IPersistStream |
Objetos incrustables OLE |
IPersistStorage, IPersistFile |
Controles ActiveX |
IPersistStreamInit, IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker |
Objetos de documento ActiveX |
IPersistStorage, IPersistFile |
Los implementadores de cliente también pueden elegir qué interfaces de objeto persistentes puede usar el cliente. Las interfaces que usa un cliente suelen determinarse por dónde el cliente puede almacenar sus propios datos. Un cliente que pueda almacenar sus datos solo en un archivo plano probablemente solo usará IPersistStreamInit, IPersistMonikery IPersistPropertyBag. ( IPersistStreamInit puede reemplazar IPersistStream en la mayoría de las aplicaciones, ya que contiene esa definición y agrega un método de inicialización). Un cliente que pueda guardar sus datos en un archivo de almacenamiento estructurado usará, además, IPersistStorage.