Linking Support and Miniservers vs. Full Servers

Support for embedded objects is only half of the linking and embedding capability of OLE Documents. Some servers, however, have no need to support linking, nor do they need to run stand-alone, regardless of whether they are in-process or local servers. These servers are called miniservers and generally run only within the context of embedding. In other words, the usual way to run the server is to create an instance of an object through a container's Insert Object dialog box (and later by activating the object again).

Miniservers work well for small visual data, such as font effects or a simple drawing. Because they support embedding only, miniservers should not require a great deal of storage—each object from a miniserver takes up space in the container's document. Simple drawings, for example, can be stored in a metafile of a few hundred bytes. However, because a miniserver cannot usually run stand-alone, it typically has no user interface with which to create, load, and save individual files, so it seldom has the ability to link to such persistent sources. For this reason, miniservers are generally considered embedding-only servers.

Obviously this is not a great choice when the object data itself is large, for example a 24-bit bitmap that occupies megabytes of storage. It is very costly to embed an object with data this large. For that reason, servers of potentially large data should be full servers, which can always run stand-alone and support both embedding and linking. Usually this means that the server is a local server because only EXEs can run by themselves. (Although providing an EXE shell to load an in-process server stand-alone is not difficult.) In any case, because a full server can run stand-alone and independently create files, there is a suitable persistent source that the server can name with a moniker as a link source. Thus, the end user has the choice of whether to link or to embed when storage space is a factor.

Most existing applications that you might consider making a server probably read and write their own files already and should become full servers as a result. If, however, you are designing a new type of lightweight content, a miniserver, especially one implemented as an in-process server, is a great choice for speed and efficiency.