COM原理与应用学习笔记一

 

COM原理与应用》学习笔记(一)

在接触编程初就有听说过COM的大名!于是上网找了些资料,一看,吓呆了(很深奥◎_!)

的确COM对于刚接触C/C++的我来说,简直就是抽象画,领悟不了。现在有了一定的C/C++基础,我想是时候去悟一悟了。前不久买了 潘爱民 老师的<<COM原理与应用>>一书,恩,是本入门好书。于是边学边写这个系列笔记。由于知识浅陋,文中难免有错误和对该书的误解,望大家指正。

闲话少说,go go

 

()、别急,按惯例,首先说说它的由来。

COM是由Microsoft提出的组件标准,与其相对的有对象管理组织提出的CORBA标准。(详细的发展历史略)。为什么要COM呢?从软件模型的角度来说,就是把一个大型软件分成一个一个模块,模块可以以组件模式来组建成目标程序。即我们的组件拼装成大程序。其实模块化软件可以用其他方法来实现啊,然而COM模型带来的优点尤为突出(或者说比其他模型优越很多很多)

下面来对COM模型做个简单、直观的理解。

 上图看起来有点象DLL,没错,在Windows系统平台,一个COM组件可以是一个DLL(但不是什么DLL都符合符合COM标准的,象API这样的函数库就不算是一个标准的COM组件),或者是EXE文件(象EXCEL)。从图可以看出,COM组件就象是一个现成的另部件,程序A可以利用COM组件的接口来访问调用COM组件,同样,可以多个程序同时访问调用COM组件。这种设计带来了一系列的好处,如重用性高、升级简单、模块化强,当然还有其他一些优点。

(二)、COM特性

1)、语言无关性。这个应该比较好理解。因为COM是编译好了的底层代码(书上说是二进制代码),BasicC++C#语言都是基于底层代码之上的,所以C++编写的COM组件可以被Basic程序调用,同样也可以被C#程序调用,甚至可以被脚本(如JavaScript)调用。这就体现了语言无关性。

2)、进程透明性。这个也不难理解。COM组件的工作模式包括进程内服务模式、本地服务模式(进程外服务模式)和远程服务模式。那么在后两种调用模式中,程序访问调用COM组件的时候必然回关系到进程通信和同步问题。然而,这一切到不用我们程序去刻意管理,都由COM库来帮我们管理。COM库是一个核心的管理服务程序,以后再讨论。

3)、可重用性。这个更明显。COM组件是一个部件,象一个灯管、一个轮胎一样,可以拿到任何要用到这样功能的场合上使用,即重用。

4)、扩展升级容易。扩展一个COM组件,只需保留原有接口基础上添加新的接口,而旧版本程序可以无需改动地调用旧接口,同时新版本程序可以调用新添加的接口来实现更强大的功能。

(三)、COM用例

     COM组件已经深深地渗入到Windows系统如DirectX软件包、RDOADO数据访问对象、Internet Client SDK等等。即如下方面:

1)、COM与数据库

      我们编写数据库程序的时候经常用到ODBCADO等编程接口。这些接口就是用COM来实现的,用起来简单、灵活、高效。

2)、COMIntranet

     Intranet应用中,这常常见到COM的踪影。如网上一些ActiveX插件,就是一个COM插入到IE浏览器中实现特别功能。

3)、其他应用

     Excel可以被用做COM组件被程序调用来处理Excel表格等等。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值