COM的结构
来源:互联网 发布:安知我意百度云 编辑:程序博客网 时间:2024/05/17 03:24
一.COM的对象与接口
COM(component object model)也即对象组件模型,他的杰出代表是OLE(object linking and embedding)对象链接和嵌入。COM主要有三种类型,组件,COM对象和接口,这三种的关系是组件可以包含多个COM对象,一个COM对象包含多个接口,先介绍下COM对象就是符合COM标准的对象,换句话说,就是继承IUnknown的对象,接口呢,顾名思义就是纯虚类,但是该类应该继承IUnknown接口,说来舞无趣,所以图示如下:
那么我们是怎样进行区别COM对象和借口呢,这就需要借助GUID了,全局唯一标示符,也就是说每一个对象和接口都有这样一个标识符,只是对象的GUID又称之为CLSID(类ID)来决定该标识符的唯一性,这样,我们在获得组件时就可以根据GUID来唯一的获得该对象了,另外,获得过程应该是在注册表中查找该GUID,然后改注册表项中一般会有该dll,或者该exe文件的绝对路径,这样,我们就知道了,该对象的加载和调用方法了。,获得对象之后,就可以获得该对象的接口,也就获得了服务,所以我们可以看出来,客户最终要打交道的是接口。
二.COM库
COM库一般不实现在应用程序层,只是在操作系统层次上有所体现,因此一个操作系统只有一个COM库,而且COM库的实现必须依赖于操作系统的限制,尤其是操作系统底层的标准
三.语言无关性
COM规范的定义并不是依赖于某种编程语言,二是依赖于二进制代码级别的,换句话说,就是只要符合COM标准写成的可执行文件可以被其他语言进行调用
四.进程透明性
COM所提供的进程模型主要有两种,一种是进程内模型,另一种是进程外模型
进程内的服务模型,是指服务程序是一个dll它运行在客户进程的进程空间内。这样的好处是执行的效率比较高,但是稳定性稍差,一旦服务dll出现问题整个进程就会奔溃,
另外一种是进程外模型,他如果是本地机器上的进程,那么则会是一个exe文件,如果是远程机器上的那么既可以是一个dll文件,也可以是一个exe文件,如果是以dll形式存在的则会创建一个代理进程。
五.创建过程
COM库负责装入组件模块,或者启动组件进程,,如果客户指定的进程在远程机器上的话,两台机器上的COM库会协调完成COM对象的创建工作,并在客户进程中创建一个代理对象,也就是说,我们根本不需要了解RPC的过程调用。很是减少了我们的工作量
- COM的结构
- 审视WMI的结构,COM调用
- com文件格式/PSP结构
- com逆向结构
- C# 中基于 COM+ 的结构化存储
- DLL接口的实现(COM结构思想)一
- DLL接口的实现(COM结构思想)二
- com文件结构及原理
- com和exe文件结构
- .COM文件结构及原理
- mysql修改表结构alter,转自:http://waryist.javaeye.com/blog/104739 waryist的blog
- COM导入到C#开发 HWND句柄类型 对应于C#的 _RemotableHandle结构处理
- C结构体中位段的使用(http://liouwei20051000285.blog.163.com/blog/static/25236742011124406783/)
- COM原理及应用---- 结构化存储
- COM原理及应用---- 结构化存储
- COM原理及应用---- 结构化存储
- COM原理及应用---- 结构化存储
- com/exe文件结构及原理
- 文件编码详解 彻底解决中文乱码问题
- cocos2D-x 3.x学习笔记【一】 创建新项目
- 雷军20年前编写的汇编代码
- hdoj.2096 小明A+B 20140802
- 水晶报表下载
- COM的结构
- 用 * 打印三角形和菱形----20140802
- 百度员工离职总结:如何做个好员工
- vim的侧边栏目录插件
- hdu 1171 Big Event in HDU(01背包&多重背包)
- 随机数
- 【Struts2】Struts2 : ActionContext.getContext().getParameters()
- 最好的pdf转换成ppt转换器
- 在图片任意位置上添加文本