Interfaces de objeto persistente
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 persistente são derivadas de IPersist, portanto, qualquer objeto que implemente qualquer interface de objeto persistente também implementa IPersist.
As seguintes interfaces de objeto persistente estão definidas no momento:
- IPersistStream
- IPersistStreamInit
- IPersistStorage
- IPersistFile
- IPersistMoniker
- IPersistMemory
- IPersistPropertyBag
Os implementadores escolhem quais interfaces de objeto persistente um objeto suporta, 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 suportar uma ou mais interfaces de objeto persistentes, o implementador está efetivamente dizendo: "O estado deste 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 |
Controlos 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, IPersistMonikere IPersistPropertyBag. (IPersistStreamInit pode substituir IPersistStream na maioria dos aplicativos, porque 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.