COM原理及应用之概述

news/2024/8/26 17:18:20

1、组件设计的原始目的
跨平台、跨网络、积木式搭建程序
 
2、组件的两个规范:CORBA 和COM
OMC(Object Management Group,对象管理组织)的CORBA(Common Object Request Breaker Arehitecture ,公共对象请求中介体系结构)。
Microsoft的COM(Component Objedt Model,组件对象模型)。
 
3、COM的定义
COM是由Microsoft提出的组件标准,它不仅定义了组件程序之间进行交互的标准,并且也提供了组件程序运行所需的环境。
COM标准包括规范和实现两大部分,规范部分定义了组件之间通信的机制,实现部分是COM库,COM库为COM规范的具体实现提供了一些核心服务。
 
4、COM的分类
进程内组件(DLL ,in-process component)。客户程序和组件程序在同一进程空间。
进程外组件(EXE ,out –of-process component)。客户程序和组件程序不在同一进程空间。
 
5、COM跨语言原因
COM对象是建立在二进制可执行代码级的基础上,而C++等语言中的对象是建立在源代码级基础上的。
 
6、COM技术的应用
OLE(Object Linking and Emnedding ,对象链接和嵌入)技术,它所表达的是复合文档(Compound Document )的概念。
ActiveX技术。
 
7、COM的组件、对象、接口的关系
一个COM组件可以包含多个COM对象,一个COM对象可以有多个COM接口。COM对象是以接口的方式提供服务的。
 
8、COM的基本概念
对象:相当于C++中对象的概念,对象是某个类的一个实例
客户:使用对象的应用(或另一个对象)称为客户,或对象的用户。
接口:一组逻辑上相关的函数集合,其函数也被称为接口成员函数。通常以“I”为前缀。
 
9、COM接口使用说明
在COM模型中,对象本身对于客户来说是不可见的,客户请求服务时,只能通过接口进行。每个接口都由一个128位的全局唯一标识符(GUID ,Gloally Unique Identifier)来标示。客户通过GUID获得接口的指针,在通过接口指针,客户就可以调用其相应的成员函数。
一般来说,接口是不变的。因为对象可以包含多个接口,所以组件对象的升级可以通过增加接口的方法来实现。
 
10、COM对象的说明
与接口类似,每个对象也用一个128位的GUID来标识,称为CLSID(Class Identifier,类标识符或类ID)。
 
11、COM库的说明
在Microsoft Windows操作系统环境下,COM库以 .dll 文件的形式存在。COM库一般步在应用程序层实现,而是在操作系统层次上实现,因此一个操作系统只有一个COM库实现。
 
12、COM的特性
一:面向对象的特性。
二:客户/服务器特性。
三:语言无关性,但是只有用C或C++语言才能实现COM中所有的特性。
四:进程透明特性 两类进程模型:进程内对象和进程外对象。进程内对象在客户进程空间中运行,效率高,但不稳定;进程外对象运行在同一机器上的另一个进程空间或者在远程机器的进程空间中。组件对象服务程序分类:进程内服务程序、本地服务程序、远程服务程序。实现这种进程透明性的关键在于COM库,COM库负责组件程序的定位,管理组件对象的创建和对象与客户之间的通信。
五:可重用性
COM标准建立在二进制代码级的基础上是其与面向对象语言中的对象的重用过程不同。
COM用两种机制实现对象的重用:包容方式和聚合方式。
 
13、OLE技术的焦点集中在解决桌面环境中应用程序之间如何进行交互,包括数及交换和界面交互。
 
14、COM与Windows操作系统
16 位平台中COM的使用并不完善,32位平台中,很多系统部件都以COM形式实现。比如:DirectX多媒体软件包、RDO(Remote Data Object ,远程数据对象)和DAO(Data Access Object ,数据访问对象)数据库访问对象库、Internet Client SDK、MAPI(Messaging API ,消息应用编程接口)、ADSI(Active Directory Service Interface ,活动目录服务接口)
 
15、COM与数据库
Microsoft推出的数据库访问对象库有RDO、DAO、OLE DB、ADO。
 
16、COM与Internet应用
系统集成的软件接口可以利用COM。在多层次软件结构模型中位于中间层的业务层主要通过COM组件来实现。
 
17、COM与Internet
Internet的开放性要求正体现了COM的优势。Microsoft提出的ActiveX技术包含了所有基于COM的Internet相关的软件技术。

文章出处:http://www.diybl.com/course/3_program/c++/cppxl/20081118/151938.html

转载于:https://www.cnblogs.com/zhangzh/archive/2008/12/11/1353025.html


http://www.niftyadmin.cn/n/674666.html

相关文章

基于jQuery的控制左右滚动及自动滚动效果

迷上jQuery,相对于原生JavaScript,它是如此的美妙.也因此,促使我更加的努力的研习原生JavaScript.分享一个控制左右滚动及自动滚动的样例, 昨晚花了两个多小时, 忍受着悍蚊的叮咬, 汗水的侵袭, 一行行的敲出来的血汗代码. 哈哈.封装了两种模式: 点击滚动版本DEMO自动滚动版本DE…

自定义控件属性的一些特性

Bindable这个特性表示属性是否可以绑定一个有效数据源。通常使用布尔值进行设置。例如:Bindable(true)。如果使用值true标记属性,表示该属性可以绑定一个有效数据源,且应引发该属性的属性更改通知。Browsable指定属性是否应该在属性浏览器中显…

小车制作过程中遇到的几个问题

小车制作过程中遇到的几个问题;mark一下 1, 由于四个电机的型号并不相同, 所以加相同的占空比时四个轮子的转速并不一致(甚至差别很大), 而且电机的实际转速也不知道, 所以想让四个轮子同步转动…

SqlBulCopy

using System.Data.SqlClient;protected void SqlBulkCopyData(DataTable dt) { //使用SqlBulkCopy把内存表DataTable里的数据插入答卷数据表 SqlBulkCopy bcp new SqlBulkCopy(connectionString); //指定目标数据库的表名 bcp.DestinationTableName "tAnswer"; //…

黄金投资讨论摘录

蓝の沫沫(35550494) 10:31:35 来做黄金投资拉,让你赚回来~~ 木 木(309909968) 10:32:49 怎么投资 蓝の沫沫(35550494) 10:33:46 双向操作,可以买涨也可以买跌 蓝の沫沫(35550494) 10:34:16 而且交易时间长,有9个小时,晚上也可以…

计算机启动更快的十大技巧

一、bios的优化设置   在bios设置的首页我们进入"advanced bios features"选项,将光标移到"frist boot device"选项,按"pageup"和"pagedown"进行选择,默认值为"floppy",这表…

经验汇总

创建Tabbed类型的对话框,因为每个Tab页可以使用一个对话框资源来作为页的内容,所以可以分开编辑对话框资源,很方便,不过必须将对话框资源设为“Child”; 创建这种窗口可以有两种方式,一是很直观的用Tab控件…

Gooscan - Automated Google Hacking Tool

Whilst reading an article the other day I saw this mentioned and realised I haven’t written about this yet either, although I have written about the similar tool Goolag. What is Gooscan? Gooscan is a tool that automates queries against Google search appl…