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 是编译好了的底层代码(书上说是二进制代码), Basic C++ C# 语言都是基于底层代码之上的,所以 C++ 编写的 COM 组件可以被 Basic 程序调用,同样也可以被 C# 程序调用,甚至可以被脚本(如 JavaScript )调用。这就体现了语言无关性。

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

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

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

(三)、 COM 用例

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

1 )、 COM 与数据库

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

2 )、 COM Intranet

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

3 )、其他应用

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值