영구 개체 인터페이스
영구 개체는 하나 이상의 영구 개체 인터페이스를 구현합니다. 클라이언트는 영구 개체 인터페이스를 사용하여 상태를 저장할 시기와 위치를 해당 개체에 알릴 수 있습니다. 모든 영구 개체 인터페이스는 IPersist에서 파생되므로 영구 개체 인터페이스를 구현하는 모든 개체도 IPersist를 구현합니다.
현재 정의된 영구 개체 인터페이스는 다음과 같습니다.
- IPersistStream
- IPersistStreamInit
- IPersistStorage
- IPersistFile
- IPersistMoniker
- IPersistMemory
- IPersistPropertyBag
구현자는 개체를 사용하는 방법에 따라 개체가 지원하는 영구 개체 인터페이스를 선택합니다. 영구 개체 인터페이스를 지원하지 않음으로써 구현자는 "이 개체의 상태를 영구적으로 저장할 수 없다"고 효과적으로 말합니다. 하나 이상의 영구 개체 인터페이스를 지원함으로써 구현자는 "이 개체의 상태는 하나 이상의 데이터 저장소 매체에 영구적으로 저장될 수 있다"고 효과적으로 말합니다.
예를 들어 다음 표에는 다양한 영구 개체 인터페이스를 지원할 수 있는 여러 개체 형식이 나와 있습니다.
범주 | 영구 개체 인터페이스는 일반적으로 지원됩니다. |
---|---|
모니커 |
IPersistStream |
OLE 포함 개체 |
IPersistStorage, IPersistFile |
ActiveX 컨트롤 |
IPersistStreamInit, IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker |
ActiveX 문서 개체 |
IPersistStorage, IPersistFile |
클라이언트 구현자는 클라이언트에서 사용할 수 있는 영구 개체 인터페이스를 선택할 수도 있습니다. 클라이언트에서 사용하는 인터페이스는 일반적으로 클라이언트가 자체 데이터를 저장할 수 있는 위치에 따라 결정됩니다. 플랫 파일에만 데이터를 저장할 수 있는 클라이언트는 IPersistStreamInit, IPersistMoniker 및 IPersistPropertyBag만 사용할 수 있습니다. (IPersistStreamInit 는 해당 정의를 포함하고 초기화 메서드를 추가하므로 대부분의 애플리케이션에서 IPersistStream 을 대체할 수 있습니다.) 또한 데이터를 구조적 스토리지 파일에 저장할 수 있는 클라이언트는 IPersistStorage를 사용합니다.