COM技术--IUnKnown接口

COM的核心–IUnKnown的理解

1. COM是什么?

它是一个实现软件复用的设计规范,是跨平台的,最广泛的一种架构体现就是应用的组件架构。通过COM编程技术规范,一个应用程序可以由多个实现不同功能的组件构成,每个组件实现某部分功能,而且组件是可独立执行的二进制文件,比如dll、exe。

2. 什么时候可以使用COM技术?

如果想复用已存在的软件功能,此时适合使用,比如,要借用MS OFFICE Word的字符查找功能,或要使用Note Pad的文本编辑功能等,这时的场景便可考虑使用COM技术了。

3. C++中如何实现COM技术规范?

C++实现COM技术规范是通过一个名为IUnKnown的抽象类,即包含纯虚函数的类,这样的类即称为接口。该类只有三个函数:QueryInterface、AddRef、Release,且都是纯虚函数,一个可执行文件的类只要继承了IUnKnown接口,则此执行文件就是一个组件,能被包容或聚合到其他应用中。具体可参看COM书籍:《COM技术内幕》

4. 组件组合到应用中有什么办法?

有2个办法:包容和聚合。

先了解两个概念:外部组件,即包容或聚合其他组件的组件;内部组件,即被其他组件包容或聚合的组件。比如,A组件要引用C组件的功能,则A就需要包容或聚合C组件,那么A组件就称为外部组件,C组件称为内部组件。

在C++里,实现包容和聚合的难度是不一样的,总的来讲,聚合实现比包容要更复杂。包容的解决方案是,外部组件的接口封装调用内部组件的接口暴露给客户使用,暴露的只是外部组件接口;而聚合的方案是,内部组件的接口是直接暴露给客户使用的,但对于客户来说,所有的接口都是来自外部组件。所以,聚合的实现就必须做到通过外部组件和内部组件的任意接口可以查询到其他任意接口。

猜你喜欢

转载自blog.csdn.net/ccyhummer/article/details/79272616