COM原理(一)

本文介绍了COM(Component Object Model)的核心概念,包括COM接口的二进制特性、不变性、继承性和多态性。COM接口作为组件与客户程序间的桥梁,允许不同语言的互操作性。COM组件分为进程内(DLL)和进程外(EXE)两种,通过注册表进行管理,并使用GUID标识。注册组件通常涉及DLLRegisterServer和DllUnregisterServer函数,以及自注册组件的/RegServer和/UnregServer命令行参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正在学习COM原理与应用,怕自己忘记,所以做了以下笔记

一、COM接口简介

1. 二进制特性:接口规范不建立在任何编程语言的基础上,而是规定了二进制一级的标准。任何语言只要有足够的数据表达能力,就可以对接口进行描述,从而可以用于与组件程序有关的应用开发。

2.接口不变性:接口是组件客户程序和组件对象之间的桥梁,接口如果经常发生变化,则客户程序和组件程序也要跟着变化,这对于应用系统的开发非常不利,也不符合组件化程序的设计思想。

3.继承性(扩展性):COM接口具有不变性,但不变性不意味着不再发展,随着应用系统和组件程序的不断发展,接口也需要发展。类似于C++中类的继承性,接口也可以继承发展,但接口继承和类继承不同。首先,类继承不仅是说明继承,也是实现继承,既派生类可以继承基类的实现,而接口继承只是说明继承。其次,类继承允许多重继承。一个派生类可以有多个基类,但接口继承只允许单继承,不允许多重继承。

根据COM规范,所有的接口必须由IUnknown派生,可以是直接派生,也可以是间接派生。

所有接口都必须继承lUnknown继承的原因在于IUnknown提供了两个非常重要的特性:生存周期控制(引用计数)接口查询。客户只能通过接口与COM对象进行通信,虽然客户程序不用管对象内部的实现细节,但它要控制对象的存在与否。另一方面,如果一个COM实现了多个接口,在初始时刻,客户程序不太可能得到该对象的所有接口指针

4.多态性(运行过程的多态性):多态是面向对象系统的重要特性,COM对象也具有多态性,其多态性通过COM接口体现。多态性使得客户程序可以用统一的方法处理不同的对象,甚至是不同类型的对象,只要他们实现了同样的接口。

正是由于COM的多态性,我们才可以用COM规范建立插件系统,应用程序可以用统一的方法处理每一个插件。

COM组件分类:进程内组件(DLL) + 进程外组件(EXE) 

进程内组件:进程内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值