Interfaces de objeto persistentes
Um objeto persistente implementa uma ou mais interfaces de objeto persistentes. Os clientes usam interfaces de objeto persistentes para informar a esses objetos quando e onde armazenar seu estado. Todas as interfaces de objeto persistentes são derivadas de IPersist, portanto, qualquer objeto que implementa qualquer interface de objeto persistente também implementa IPersist.
As seguintes interfaces de objeto persistentes estão definidas no momento:
- IPersistStream
- IPersistStreamInit
- IPersistStorage
- IPersistFile
- IPersistMoniker
- IPersistMemory
- IPersistPropertyBag
Os implementadores escolhem quais interfaces de objeto persistente um objeto oferece suporte dependendo de como o objeto deve ser usado. Ao não oferecer suporte a nenhuma interface de objeto persistente, o implementador está efetivamente dizendo: "O estado deste objeto não pode ser armazenado persistentemente". Ao oferecer suporte a uma ou mais interfaces de objeto persistentes, o implementador está efetivamente dizendo: "O estado desse objeto pode ser armazenado persistentemente em uma ou mais mídias de armazenamento de dados".
Por exemplo, a tabela a seguir lista vários tipos de objeto que permitem suporte para diferentes interfaces de objeto persistente.
Categoria | Interfaces de objeto persistentes normalmente suportadas |
---|---|
Monikers |
IPersistStream |
Objetos incorporáveis OLE |
IPersistStorage, IPersistFile |
Controles ActiveX |
IPersistStreamInit, IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker |
Objetos de documento ActiveX |
IPersistStorage, IPersistFile |
Os implementadores de cliente também podem escolher quais interfaces de objeto persistente o cliente pode usar. As interfaces que um cliente usa geralmente são determinadas por onde o cliente pode armazenar seus próprios dados. Um cliente que pode armazenar seus dados somente em um arquivo simples provavelmente usará apenas IPersistStreamInit, IPersistMoniker e IPersistPropertyBag. (IPersistStreamInit pode substituir IPersistStream na maioria dos aplicativos, porque ele contém essa definição e adiciona um método de inicialização.) Um cliente que pode salvar seus dados em um arquivo de armazenamento estruturado irá, além disso, usar IPersistStorage.