自学内容网 自学内容网

com组件技术学习 第一章


组件化的技术

1.1诞生

因为一个大型软件在更新迭代之前一般不会变化 而因为系统环境 或者其他特定方面的需求变化的时候 就需要更新整个软件
后面还要进行特定的测试 查看此次修改对于系统的整体是否存在影响 工程量很大
因此组件化技术诞生 就是将整个系统通过不同的功能项和侧重点 拆分为不同的组件 每次变化的时候 只需要修改特定的组件 然后再把一个软件特有的组件拼接到一起就好 组件之间遵从某种规范 互不影响 这样的变化是最小化的变化

在这里插入图片描述

组件 对象和 接口之前的关系可以通过下图表示 这很重要 !!!!

在这里插入图片描述

1.2 com结构

com标准规范:定义组件和组件之间的通信机制,规范不依赖任何语言和操作系统 ,按照其规范,任何语言都可以使用
com标准实现:com库 com库位com规范的实现提供了一些核心服务

1.2.1 对象和接口

com对象是什么?
类似于C++中对象的概念 是某个类的实例 而类是一组相关的数据和功能组合在一起的一个定义,使用对象的应用称为客户或用户
接口是什么?
一组逻辑上函数合计 这是一组 不是 一个
每一个接口都有一个128位的全局唯一标识符 GUID来表示 客户铜通过GUID获得接口指针 在通过接口指针 就可以调用其相应的成员函数 ,至于功能如何实现 则由对象内部的接口实现
com模型中 对象通过接口及接口中的函数位客户提供服务 ,对于客户来说 它只和接口打交道
com模型支持多个接口 所以一般不会动老的接口

对象如何唯一标识?
每个对象也用全局唯一的GUID来表示 成为CLSID(全球唯一性),客户通过CLSID来创建对象,那实际上得到是一组接口,因为一个对象最起码实现了一个接口
用户得到这一组接口 之后就可以查看是否存在其他接口 可以通过接口去查看其他接口是否存在
其实这里接口和对象类似于 子类父类 不过不是继承关系 而是实现关系 父类是纯虚的

1.2.2 客户/服务器模型

对象和客户之间是客户和服务器模型 特点 稳定 高效
实际上客户也可以反向提供服务 有时候对象需要其他对象的功能的时候 这个时候对象即是对象也是服务
以下特定:

  • 稳定性 可靠性好
  • 可扩展性好
  • 提高性能
  • 在网络上实现 降低网络流量
  • 用于数据库时 ,可以提供事务机制 ,提供数据备份能力
    模型不简单是服务器和客户端的关系
    关系可以有下面的功能
    在这里插入图片描述

1.2.3 com库

window系统下 com库的服务通过dll相关的文件实现 包含的服务有以下:
(1):提供了api函数 实现客户和服务器端com应用程序的创建过程。客户端主要是创建函数 服务端 主要是对象访问支持
(2): com通过注册表查看本地服务器 EXE文件 以及程序名和CLSID的转换等
(3): 提供一种标准的内存控制方法 使应用控制进程中内存的分配
com库实现在操作系统城池 一个操作系统只有一个COM库实现 而且必须依赖与具体的系统平台 特别是底层标准

com保证所有组件按照统一的方式进行交互 可以直接利用aou进行编程 从而大大提高了开发速度 同时支持远程RPC调用

1.3 com特性

语言无关性 进程透明性和 可重用性

1.3.1 语言无关性

com标准采用的是一种二进制级别的标准 而不是某种特殊语言
OOP语言可以被利用来创建com组件
C++语言写出来的com组件更容易被其他高级语言所使用

1.3.2 进程透明性

客户端和服务器可以在同一个进程中 也可以在不同的进程中 但是通常是作为一个EXE可执行程序 所以经常跨进程使用
两个进程模型 进程内对象和进程外对象
进程内对象在客户端进程空间内活动 进程外对象在同一台机器的另一个进程空间内活动 或者远程机器的进程空间中

  • 进程内服务程序 服务程序被加载到客户的进程空间 window环境下 服务程序代码以DLL动态链接库的形式存在
  • 本地服务程序 运行在同一台机器上,服务程序是一个独立的程序
  • 远程服务程序 运行在不同的机器上 既可以是DLL模块 也可以是EXE文件 如果是DLL形式存在的或 远程机器会自动创建一个代理进程

不同的进程模型 对于用户来说是透明的 不用管
设计控件的时候 需要注意各个模型的特点
进程内效率高 但是控件崩溃会影响程序
进程外效率低 但是稳定 而且组件可以为多个程序提供服务

1.3.3 可重用性

组件对象的可重用性是建设在组件的 对象的行为方式上面 而不是具体的实现 这是建立重用的关键
两种机制保证重用 现有对象AB A希望重用B的功能 A成为外部对象 B称为外部对象

  • 包含关系 A希望用到B对象的功能的时候 可以实现接口去调用B对象的实现
  • 对象A直接把对象B的接口直接暴露出来 而客户并不知道B对象的存在

1.4 发展前景

不断完善

1.4.1 com模型和Window操作系统

com相关应用
(1)DiectX多媒体软件包
(2)RDO远程数据对象
(3)Internet Cliet SDK

window系统和com组件以及不可分割 建立在Windows平台的应用就离不开Com的使用


原文地址:https://blog.csdn.net/weixin_52243202/article/details/145202201

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!