com英文为Component Object Model(组件对象模型),是微软生产软件组件的标准。
它是构造二进制兼容软件组件的规范,不管组件应用何种语言编写只要遵循com规范就可以相互直接通信。提出com规范主要是为了满足:
1.程序的快速开发,可以将一个大型的工程分成若干个com组件同时开发。
2.可以动态的插入或卸载com组件。
3.可以隐藏或封装com组件内部的实现细节。
com组件可以由不同的语言进行编写,但com组件之间的通信是通过组件的接口来实现的,
com组件接口的实现是统一的,它采用的是虚拟函数表(VTBL)形式。虚拟函数表中包含了
组件函数的一组指针,我们可以通过这组指针来获取我们想要通信的组件函数的内存地址。
dll(动态链接库)是包含函数和数据的模块的集合。它可以导出数据也可以导出函数以供
其它的dll调用。dll的加载可以通过静态链接和动态链接两种方式。
1.静态链接时将所要链接的dll模块以二进制的形式编译进其他模块。
2.动态链接指调用模块在运行时加载DLL,使用LoadLibrary函数或LoadLibraryEx
函数将dll 加载到进程的地址空间,并调用GetProcAddress函数以获取导出的 DLL
函数的地址。
动态加载dll的优点:
1.DLL可节省内存并减少交换。通过在内存中共享 DLL 的单个副本,多个进程可以同时
使用一个DLL。相比之下,对于使用静态链接库构建的每一个应用程序,Windows 都要
在内存中为其加载库代码的一个副本。
2.DLL 可节省磁盘空间。 多个应用程序可以共享磁盘上的一个 DLL 副本。相比之下,
使用静态 链接库构建的每一个应用程序都需要让链接到程序文件映像的库代码作为一个
单独的专用副本。
dll与com的关系:com是一种规范,按照是com规范实现的dll可以被视为com组件,
例如我们用mfc建立的Active X控件工程其中的接口封装是靠idl描述的所以可以视为
com组件。而且从上面关于com和dll的说明可以看出com组件的接口是一组具有特定规范的
函数,所以com组件可以别视为dll但dll不一定是com组件。
com和DLL最大的区别就是: dll是以函数集合的方式来调用的是编程语言相关的象VC必须
加上extern "C"...而COM是以interface的方式提供给用户使用的是一种二进制的调用
规范,是与编程语言无关的,它使用idl接口定义语言来描述自己使用类继承来实现自己的功能
和方法.DLL只有DLL一种形势,里面可任意定义函数无限制,只能运行在本机上 而COM
有DLL和EXE两种存在形势: COM所在的DLL中必须导出四个函数:
dllgetobjectclass, dllregisterserver, dllunregisterserver,
dllunloadnow
这四个函数各有作用,有些是提供给COM管理器用的,通过CLSID和IID来使用,有些是提供
给注册机用的.
COM结合MTS,就是COM+, 是DCOM的高级版本,提供了更为强大和安全的分布式COM服务,
DCOM运行在不同的机器上 用proxy和stub来实现远程接口的本地映射 二者从执行速度来
说 二者相差无几 但是启动速度DLL要比COM快!
相关推荐
DLL-FiLes com Fixer 3.3.9 中文特别版能够扫描您系统的注册表错误。这些错误通常源自您的电脑上已安装和/或已卸载的各种软件。它们常常是电脑速度变慢的原因。深入扫描、描、清理和优化您的注册表,以便提升您的...
C#使用OpcNetApi_dll和OpcNetApi_Com_dll操作OPCServer,支持所有的OPCSERVER
delphi 生成和调用com,dll,服务程序小例子
第三方控件 API_COM.DLL 非常实用的一款控件
C++ COM实现之一 创建一个DLL COM是一种接口技术,它提供了一种方法用于客户程序进行调用。COM原理和技术的文章已经很多了,就不过多讲解了,这里只注重实现。下面分几步对进程内COM组件进行编码实现以达到对实现一...
comport封装成dll,接收数据用回调函数,包含源码和demo
COM xiang guan ji shu COM Math dll project
内含luaDll,luacom以及luaiconv源码。luaDll和luaiconv直接打开sln在Visual studio中即可进行编译。luacom可使用nmake进行编译。也可直接使用已经生成了的dll.
测试平台是VS2008KEPServerOpcNetApi.dll和OpcNetApi.Com.dll当然我也同时安装了西门子 Net2006和Step7其中Net2006是负责OPC可能会在系统中创建些dll的类我换到台没有Net2006机子上既然有 问题不知其电脑问题还是没...
php_com_dotnet.dll,用于在php环境里调用windows api的神器
Dll-Files Fixer(注册表和dll文件修复) 简繁体中文注册版是一款官方支持中文的专业DLL文件修复和注册表优化工具。软件能够修复损坏的dll文件,能够对注册表进行修复,能够查找和安装dll文件和备份注册表。对于单机...
使用这个工具可以更具想hook的dll生成一个delphi的工程文件,可以直接编译,如果安装了delphi,那么程序会自动编译,并生成dll所以使用前需要备份原来的dll,安装的时候拷贝源dll到系统目录(system32),用setup.exe...
最简单的dll并不比c的helloworld难,只要一个DllMain函数即可,包含objbase.h头文件(支持COM技术的一个头文件)。若你觉得这个头文件名字难记,那么用windows.H也可以。源代码如下:dll_nolib.cpp #include #...
平凡单片机中的ledkey.dll和simate.dll文件,keil c51 软件仿真插件,内附用法文档。
com调用dll,非常实用的例子,用于开发X64和x86下,解决X64程序调用 32位dll的问题
COM接口技术实现Dll文件的相互调用 COM接口,COM接口技术,Dll文件的相互调用
可通过该dll文件与200plc实现以太网通信
Comm.jar,win32com.dll rs232开发
自己总结的,dll及com组件区别,欢迎有需要的朋友参考