• 《COM原理与应用》学习笔记一


      为了学习ActiveX插件的编写,从这几天开始学习COM原理。ActiveX是以COM为基础的,所以要想要比较深入的学习ActiveX技术需要先学习COM原理。

      COM是微软提出的组件标准。COM是在OLE技术的发展过程中产生的。OLE主要是实现复合文档,而且OLE1也只实现了复合文档的功能,OLE1使用的是一种被称为动态数据交换(DDE, Dynamic Data Exchange)的技术。其中DDE技术建立在Windows的消息基础之上,DDE有稳定性不好、效率低的缺点。所以,DDE很快的就被淘汰了。在OLE的第二个版本OLE2中,微软重写了OLE的大量底层代码,推出了新的COM模型。(以上内容摘自《COM原理与应用》,p10)

      COM包括了两个部分,一个是COM的规范,另一个就是提供组件程序运行所需要的环境。COM组件可以被视为一个模块,这个模块可以使动态链接库(Dll),也可以使一个可执行文件。而且COM的实现是在二进制代码上,不存在语言不同不能调用的情况,可以做到夸语言调用。而且现在大多数语言都支持COM,如C++、Java等主流语言都是支持COM的。

      COM的优势:我在最开始看COM的时候,就想到了这么一个问题。为了使用其他组件提供的功能,需要使用很多重复而麻烦的函数来载入组件,这不是很麻烦么,干嘛不直接使用dll解决问题得了。后来想了想,使用COM有几个优势。dll需要加载进入进程中去,而COM可以提供进程外的调用,甚至可以调用远程计算机上的组件。同时dll加载到进程中去以后,一旦dll中的函数崩溃,那么主进程也会崩溃。如果这是使用进程外调用,那么主进程仍然可以稳定的运行。

      面对一个具有很多功能的大型程序,我们都会很自然的想到把这些功能分成几个小块来实现。这样方便开发、测试以及维护。这些一个个的小模块就是组件。COM是一种面向对象的组件模型,支持继承、数据的封装等。COM组件就是基于COM规范的组件实现。COM对象则是某些功能的集合,这些功能都在一个抽象类中(此处是个人理解,欢迎大家拍砖)。COM接口则是COM对象用来提供服务的东西(值得注意的是,COM接口是一组用来提供一类完整服务的接口)。一个COM组件可以包含多个COM对象,一个COM对象也可以包含多个COM接口。如下图所示:

      在下一篇文章中,我将会做出一个实际的小例子,目前这个例子有点小问题,还没有弄好~

  • 相关阅读:
    Android开发--去掉标题栏
    Android开发app如何设定应用图标下的应用名称为汉字以及自定义图标
    mysql的sql其他 SQL中inner join、outer join和cross join的区别
    中文乱码问题 -js页面传值乱码
    liunx Centos Xshell 简单命令汇总
    html 属性及相关应用-实例
    时间格式转换
    三元表达式
    Grid++Report生成简单的条形码、Excel导出、图表控件 等
    jmp指令的简单应用
  • 原文地址:https://www.cnblogs.com/DennisXie/p/3960647.html
Copyright © 2020-2023  润新知