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)!