首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请教ACITVEX, DLL,COM的区别

2012-01-12 
请问ACITVEX, DLL,COM的区别?RT。[解决办法]有一天,微软发现很多共用的代码如果每个进程一个的话浪费资源就

请问ACITVEX, DLL,COM的区别?
RT。



[解决办法]
有一天,微软发现很多共用的代码如果每个进程一个的话浪费资源
就生了DLL,让需要的都动态加载。
后来发现dll的二进制标准不够,就生出来了更加规范的COM,
再后来为了internet,鉴于internet的流量,生出来了activex,activex就是COM。
[解决办法]
ActiveX使用了COM技术,而COM组件使用dll来包装。
[解决办法]
activeX可以是DLL,也可以是OCX等形态
COM可以是DLL,也可以是EXE等形态
DLL是动态链接库,是一中可执行程序。
[解决办法]
一:COM和Dll的主要区别:
COM是为了二进制兼容而加了许多限制(COM协议)的DLL,
主要的协议:
1:导出函数为
DllCanUnloadNow
DllGetClassObject
DllMain
DllRegisterServer
DllUnregisterServer
的DLL.
这几个函数COM库会使用,COM库通过DllGetClassObject导出函数来加载并创建COM对象.

2:通过引用计算管理对象的生存周期AddRef,Release.
3:面向接口编程,通过接口查询来获得你想要的接口QueryInterface
4:接口定义有严格的规范,比如调用协议为__stdcall,接口里只能全部是纯虚函数,返回值只能为HRESULT(错误码),借口上的参数如果为字

符串,只能为BSTR等等。
5:通过GUID唯一标识一组件,并注册到注册表。COM库通过注册表里对应的COM的路径来LoadLibrary.
6:当然在COM+里还有更多的为了在不同的计算机,不同进程间使用COM,还有很多协议。

二:ActiveX与COM的区别
ActiveX只不过是MS规定好的一些接口的集合而已。
一个ActiveX一般要实现下面接口中的一部分.
IOleObject,IOleInPlaceObject,IOleInPlaceActiveObject,IOleControl,
IDataObject,IViewObject2, IDispatch, IConnectionPointContainer, ISpecifyPropertyPages, IPerPropertyBrowsing, IPersistStream,
IPersistStreamInit,IPersistMemory, IPersistStorage,
IPersistMoniker, IPersistPropertyBag,IExternalConnection,IRunnableObject, IClassFactory

热点排行