COM原理及应用----命名和绑定技术

1、COM对象的创建方法

客户程序可以通过CoCreateInstance函数创建COM,在创建之前必须知道对象的一些基本情况,比如对象的CLSID或者对象的ProgID。

另一种对象创建方法是通过名字对象(moniker)创建,就是利用对象命名和绑定技术(即名字技术)。

2、名字技术的地位

名字技术算不上COM的基本核心,但也是COM体系结构中重要的组成部分,它为客户程序和组件程序提供了另一条更为灵活的联系纽带。OLE的成功使名字技术得到了广泛的应用,而且在OLE和COM的不断发展过程中,名字技术发挥了其强大的扩展特性,异步名字对象的实现使它超越了OLE的应用范围,能更好地适用于网络环境,特别是Internet网络,体现了名字技术强大的生命力。

名字技术允许客户程序通过符号化的方式访问组件对象,而不必通过CLSID和类厂访问COM对象。名字技术不仅为COM对象提供了符号化的表达方式,而且它充分体现了面向对象软件体系的一些重要概念,甚至可以把它当作软件体系结构的一项技术来学习。

3、COM名字技术包括两方面内容:命名技术和绑定过程

4、名字对象

名字技术的核心是名字对象,COM使用术语”moniker”来表示名字对象,它本身也是一个COM对象。名字对象为组件对象提供了符号化的表示方法,同时它也对组件对象进行了全面的封装,客户程序只需创建相应的名字对象,然后利用名字对象的绑定功能得到组件对象。名字对象能够自动使组件对象从被动状态进入运行状态,所以名字对象也称为永久智能名字(persistent intelligent names)。

名字对象封装了组件对象的所有状态处理过程,因此客户程序可以按照统一的方法处理名字对象,即使要引用新的组件对象,客户代码也不必作任何改动。

5、文件名与名字对象

文件名字对象(file moniker)是一种基本的名字对象,文件名也通过符号化的字符串名指向实际的文件。文件名代表了一个磁盘文件,文件名本身不是一个对象,它只代表了文件对象的路径,因此,文件名不具有智能特性。

COM对象的永久状态可以是整个文件,也可以是文件的一部分。

虽然名字对象扮演了与文件名相同的角色,但名字对象的功能要强大得多。首先,它所表达的对象范围广阔得多,除了一般的文件对象,它也可以表达文件中的部分内容,其次,名字对象具有智能特性,即它可以使被动态的对象自动进入运行态,名字对象找到与永久状态联系的运行代码,并启动这些代码,利用对象的初始化功能使对象进入运行状态,这个过程就是名字对象的绑定操作。

6、名字对象的绑定过程

名字对象实现了标准的COM接口IMoniker,客户程序通过IMoniker接口获得组件对象。

客户程序通过名字对象访问组件对象可以分成两步:第一,获得名字对象;第二,执行名字对象的绑定操作(使用IMoniker接口的函数BindToObject),绑定过程的结果就是组件对象的接口指针。

客户程序获得名字对象的途径有两条:第一,调用COM API函数,如MkParseDisplayName和CreateFileMoniker;第二,其他对象的接口成员函数传递过来,或者通过其他的数据传输机制得到,比如通过剪贴板或拖-放操作等。

7、IMoniker

(1)名字管理函数:IsEqual、Hash、IsRunning、GetTimeOfLastChange。

(2)绑定函数:BindToObject、BindToStorage。

(3)复合名字对象管理函数:Reduce、ComposeWith、Enum、Inverse、CommonPrefixWith、RelativePathTo、IsSystemMoniker。

(4)名字解析函数:GetDisplayName、MkParseDisplayName。

时间: 2024-08-31 03:34:31

COM原理及应用----命名和绑定技术的相关文章

多网卡绑定技术详解

在存储系统中为了提高后端设备的吞吐量,往往需要采用多网卡绑定技术.例如,后端存储最大能够提供300MB/s的吞吐量,因此需要采用3块1Gps的网卡并发传输才可以达到峰值性能.那么,从研发的角度来看如何实现多网卡绑定呢?这里对提高吞吐量用途的多网卡绑定技术进行深入分析. 多网卡绑定一方面能够提高网络吞吐量,另一方面也可以增强网络高可用.这里对高可用应用的多网卡绑定技术不做讨论.从软件的角度来看,多网卡绑定实际上只需要提供一个额外的bond驱动程序即可,通过该虚拟网卡驱动程序可以将实际多块网卡屏蔽,

js使用函数绑定技术改变事件处理程序的作用域_javascript技巧

第一种,也是 最常见的,就是直接在html标签里面通过指定事件处理程序同名的HTML属性来注册事件,代码如下: 复制代码 代码如下: function eventHandler() { alert("当前作用域是 input 元素本身"); } <input type="button" value="单击我" onclick="eventHandler(this)"/> 第二种方式就是将一个函数赋值给一个事件处理程

利用COM晚期绑定技术,实现Winform中播放Flash的功能

小孩正处学习新事物的阶段,每天拿着很多卡片来识字识物,甚是有趣.有一天,我突发奇想,如果能用电脑动画来播放一些动画片段来帮助小孩提高记忆,那倒是不错的想法.动画最近肯定是使用Flash来处理了,快捷并且声色俱全,可以提高学习的兴趣.于是着手在Winfrom中嵌入Flash来播放,实现动画的效果,经过一番努力,终于成型,先看看程序的效果.   这个程序和一般操作方式不同,不是直接应用Fash的COM组件进行操作,而是通过接口的晚期绑定来实现对Flash的调用,因此项目工程没有Flash的COM组件

一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示ORM对象与DataGridView的绑定技术-商品字典的另一个实现

回顾与说明     前面我们把"商品字典"."商品入库"."商品库存查询"."商品入库查询"四个模块已经概括或者详细的演示了一个管理信息系统的典型应用场景,按照原来的打算,WinForm篇的例子系统中的几个模块就告一段落了.     由于好多朋友都问我,你的例子中大量使用ListView控件,很想知道是否可以支持DataGridView控件,所以我就有想到重新用DataGridView写一下"商品字典"模块

Linux下双网卡绑定技术实现负载均衡和失效保护(bond)

对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题.对于文件服务器来说,比如NFS或SAMBA文件服务器,没有所有一个管理员会把内部网的文件服务器的IP地址弄非常多个来解决网络负载的问题.如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址.对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器.为了解决同一个IP地址,突破

秋色园QBlog技术原理解析:性能优化篇:access的并发极限及超级分库分散并发方案(十六)

上节回顾:   上节 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五) 中, 介绍了 秋色园QBlog 在性能优化方面,从技术的优化手段,开始步入数据库设计优化,并从数据的使用情况上进行了分析,从而将文章内容进行分离,得到新的分表,由于内容比较大,进而分了库,达到一种基础减压.   本节内容:   本节将介绍秋色园 QBlog 的Super分库方案,以及何以如此Super分库的原因.   描述说明:   在进行上了上节的分库方案后,虽然感觉一度秋色园QBlog的访

秋色园QBlog技术原理解析:性能优化篇:字节、缓存、并发(十二)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)

上节概要:   上节 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六) 中, 介绍了 Access的并发上限,及从某种程度上 秋色园QBlog 针对并发上限进行了多个数据的划分,从而最大并发上限从64提升到64*N(个数据库),虽然总和的最大并发值是上升了,但是单个库的最大值并没有变化,或者说单个表的最大并发值没有发生变化,上限仍是64. 于是,对于频繁产生更新操作的访问计数器(用户表及文章表),是该进入优化的方案了.   本节概要:   本节将介绍秋色

秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建