描述:
小弟接触COM也有一段时间了,对很多COM相关的概念还没弄清楚,查了许多资料,资料上也讲得迷迷糊糊的,所以向大家请教一下:
一、经常看到DLL、OLE、ActiveX、COM等技术资料,他们之间到底是些什么关系,有什么区别与联系?小弟只知道ActiveX与COM有密切的联系,而COM又以DLL文件形式存在,ActiveX又以.ocx形式存在,对OLE到底是什么东西有什么用也没弄明白。
二、对于GUID、CLSID经常弄不清楚,(他们的样子很相象),作用也不太明白。好象COM一定要在注册表注册,不知OLE、COM组件是否一定需要注册啊?不注册能用吗?
望各位高手能详细指教一下(不要笑话小弟白痴啊,我真的没弄明白)
解决方案1:
COM是一个二进制标准,它是以DLL形式存储的,由于传统DLL没有解决一些诸如内存分配,卸载等关键性问题,所以它不足以成为一个组件模型,而COM定义了这些标准。OLE算是COM的前身,到OLE2后就正式出现为COM标准,它已经在OLE(对象连接与嵌入)上作了极大的改进,成为一个独立的标准,而ActiveX是微软提出的一个专有名词,目的是实现网上的一些应用,它的本质就是COM。
CLSID是用来标志每个COM组件的,CLSID是属于GUID的,格式一样,只是CLSID有特定用途,换了个名字而已,COM一定要注册,不注册的话就找不到他的具体位置,好像.net以后就不需要注册了。
我也不太懂,一起学习
COM是一种标准,巧妙的利用了运行时绑定的技术。可以DLL形式存在,也可以exe形式存在。
ActiveX是COM标准的一个具体应用而已。ocx文件就是动态连接库文件,扩展名不同而已。OLE也是一种技术的名称,叫对象连接与嵌入,主要目的是通过一套约定,来使得不同程序能相互传递数据。ole2以后都是通过的COM技术来实现OLE了。
GUID是一种常量,这种常量能保证世界上任何地方的任何人在任何时候都能产生一个不同于其他人的值。CLSID就是GUID,只不过看起来明确一点,他是指代class的。类似的还有IID,是指代interface的。
就好像UINT 就是 unsigned long。只不过看起来舒服些。
注册是为了使用windows系统提供的方便。
建议找本好一点的书看看,<com技术内幕>或者<com原理与应用>。都好能都看,如果基础不错的话要看<com本质论>
上面的说的很好!我补充一点吧!
CLSID可以这么解释class id,GUID是全局唯一ID,CLSID也是属于GUID的,例如IID是Interface ID。多看看COM本质!
DLL,OLE->COM->ActiveX,ATL->COM+,DCOM->现在出现.NET中的公共语言环境。
这是我自己的理解,希望对你有帮助!