A persistent object is one that supports a model through which a client can ask the object to save and load the object's state data to some storage medium. Each model is described by an interface whose name begins with IPersist, for example, IPersistStorage (the medium is a storage element plus any streams or storages within the element), IPersistStream[Init] (the medium is a single stream), and IPersistFile (the medium is a separate file altogether). Specifically, IPersistStorage and IPersistStream[Init] provide the basic means through which multiple components can share a compound file.
Of these models. stream-based persistence is the simplest to use, followed by file-based persistence. Storage-based persistence offers an object the ability to keep storage and stream elements open for incremental access while other components might have different elements in the same compound file open as well. The way IPersistStorage and IPersistStreamInit work is demonstrated through the Polyline component and its interactions with Component Cosmo. Your understanding of this will be useful in many other areas of OLE, including the use of monikers, OLE Documents, and OLE Controls.