链接对象和名字对象

链接对象(如嵌入对象)依赖对象处理程序来与服务器应用程序通信。 但是,链接对象本身管理链接源的命名和跟踪。 链接对象的作用类似于进程内服务器。 例如,激活后,链接对象将查找并启动作为链接源的 OLE 服务器应用程序。

链接对象的处理程序由两个主要组件组成:处理程序组件和链接组件。 处理程序组件包含控制和远程处理片段和函数,与嵌入对象的处理程序非常类似。 链接组件有自己的控制器和缓存,并提供对对象的结构化存储的访问权限。 链接组件控制器支持使用名字对象和绑定(查找和运行链接源的过程)进行源命名。 (有关名字对象和绑定的详细信息,请参阅组件对象模型。)

当用户最初创建链接对象或从存储加载现有对象时,容器会将链接组件的实例以及对象处理程序加载到内存中。 链接组件提供接口(尤其是 IOleLink),这些接口将对象标识为链接,使其能够管理其链接源的命名、跟踪和更新。

通过实现 IOleLink 接口,链接对象为其容器提供支持链接的函数。 只有链接对象实现 IOleLink,并查询此接口,容器才能确定是否嵌入或链接给定对象。 IOleLink 提供的最重要函数使容器能够绑定到链接的对象源,即激活与存储链接对象的本机数据的文档的连接。 IOleLink 还定义用于管理有关链接对象的信息的函数,例如缓存的表示数据和链接源的位置。

保存包含链接对象的复合文档时,链接的数据将与链接源(而不是容器)一起保存。 只有名称和位置信息与复合文档一起保存。 此行为与嵌入对象的行为形成鲜明对比,嵌入对象的数据与容器的数据一起存储。

容器应用程序可以提供有关其嵌入对象的信息,以便后者或其部分可以充当链接源。 通过实现对链接到容器的嵌入对象的支持,可以进行嵌套嵌入,从而用户不必跟踪需要链接的每个嵌入对象的原始内容。 例如,如果用户想要在 Microsoft Word 中嵌入 Microsoft Excel 工作表,并且工作表中包含在 Paintbrush 中创建的位图,则用户可以链接到工作表中包含的位图副本,而不是原始位图。

复合文档

进程内服务器

对象处理程序