com及com 简介
- 格式:ppt
- 大小:269.00 KB
- 文档页数:45
COM原理及应用----COM发展——COM+ COM原理及应用----COM发展——COM+1、COM+由于历史的原因,COM、DCOM和MTS相互之间并不很融洽,难以形成统一的整体。
COM+把这三者有效地统一起来,形成了一个全新的、功能强大的组件体系结构。
COM+并不是COM的新版本,而是COM的新发展,或者COM更高层次上的应用。
COM +的底层结构仍然以COM为基础,它几乎包容了COM的所有内容。
COM+把组件软件提升到应用层而不是底层的软件结构,它通过操作系统的各种支持,使得组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统,因此,COM+与操作系统的结合更加紧密。
COM+ 不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现,已经成为Microsoft系统平台策略的一部分。
2、Windows DNA策略Windows DNA,即Distributed interNet Application Architecture,分布式网际应用结构。
3、COM+基本结构COM+提供了一个比MTS更好的组件管理环境,COM+管理程序(COM+ Explorer)也采用MMC标准界面。
COM和MTS把组件的所有配置信息都保存在Windows的系统注册表中,而COM+把组件信息保存在被称为COM+目录(COM+ Catalog)的新的数据库中。
4、对象环境COM+为每一个对象提供了一个对象环境(Object Context)。
5、COM+系统服务——COM+对列组件COM客户与远程组件之间的交互是基于RPC连接的。
COM+除了支持这种基于RPC连接的运行方式,还支持基于消息的通信过程,它可以有效地把客户与组件的生存期分离开,这种模式通过COM+的队列组件服务实现。
队列组件采用了底层的消息系统MSMQ(Microsoft Message Queue Server,Microsoft消息队列服务系统)。
COM在注册表中的相关键值及其意义概要当编写好⼀个COM并将其在系统中注册之后,这些注册表项到底位于Register中的什么位置,系统是如何通过这些注册表项在Runtime时候找到某个COM的,这些都是诊断COM相关的问题⾄关重要的信息。
总的来说,系统是通过GUID来查找每个对象的,⽐如TypeLib,Interface和Class都有其相应的GUID(16bytes的字符串)。
本⽂介绍了⼀个COM在注册后,系统注册表会被写⼊哪些键值,以及这些键值所代表的意义。
正⽂COM是⼀种基于独⽴于开发语⾔的编程模型。
因此在描述COM功能和接⼝的时候采⽤了与编程语⾔⽆关的接⼝描述语⾔(IDL)来编写接⼝的抽象定义,该接⼝定义⽂件(*.IDL)经过Platform SDK⾃带的Microsoft IDL编译器编译之后将⽣成相应的头⽂件、类型库等。
如下是⼀个简单的类型库定义⽂件(OOPCOM.idl)// OOPCOM.idl : IDL source for OOPCOM.dll// This file will be processed by the MIDL tool to// produce the type library (OOPCOM.tlb) and marshalling code.import "oaidl.idl";import "ocidl.idl";[object,uuid(DB20D9BF-FAA4-4D23-9243-19860EB4482A),dual,helpstring("ISimpleClass Interface"),pointer_default(unique)]interface ISimpleClass : IDispatch{[id(1), helpstring("method HelloWorld")] HRESULT HelloWorld([out,retval]BSTR *result);};[uuid(FE0FAA57-2E27-425F-9FA3-518E73F729FB),version(1.0),helpstring("OOPCOM 1.0 Type Library")]library OOPCOMLib{importlib("stdole32.tlb");importlib("stdole2.tlb");[uuid(1CF4A019-A754-44F1-B164-047A3F0AC184),helpstring("SimpleClass Class")]coclass SimpleClass{[default] interface ISimpleClass;};};本⽂主要介绍以下⼏个COM相关常见概念:1. COM Interface2. COM Class3. Type Library4. Application ID &NameCOM的相关表项在注册表中的位置及其意义:表项⼀:COM Interface注册表路径 : HKEY_CLASSES_ROOT\Interface\[X] 或者:HKLM\Software\Classes\Interface\[x]在以上的OOPCOM.idl,我们看到其Inferface ID (IID)为DB20D9BF-FAA4-4D23-9243-19860EB4482A,其在Register中的位置如图所⽰。
将CONSOLE端口或PC机的COM1号端口电缆与其描
述相匹配
COM简介:COM口即串行通讯端口。
微机上的com口通常是9针,也有25针的接口,最大速率115200bps。
通常用于连接鼠标(串口)及通讯设备(如连接外置式MODEM 进行数据通讯或一些工厂的CNC机接口)等。
一般主板外部只有一个COM口,机箱后面和并口一起的那个九孔输出端(梯形),就是COM1口,COM2口一般要从主板上插针引出。
并口是最长的那个梯形口。
默认的传输速率是9600比特。
扩展资料
端口可分为3大类:
1)公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。
通常这些端口的通讯明确表明了某种服务的协议。
例如:80端口实际上总是HTTP通讯。
2)注册端口(Registered Ports):从1024到49151。
它们松散地绑定于一些服务。
也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。
例如:许多系统处理动态端口从1024左右开始。
3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。
理论上,不应为服务分配这些端口。
实际上,机器通常从1024起分配动态端口。
但也有例外:SUN的RPC端口从32768开始。
com入门视频教程Com(Component Object Model,组件对象模型)是微软公司提出的一种面向对象的软件组件技术。
它是一种基于二进制对象的构建和部署模型,用于实现不同软件之间的交互与通信。
Com的基本概念是组件,组件是一种独立的软件实体,可以被其他软件调用和使用。
一个组件可以包含多个接口,每个接口定义了一组相关的方法和属性。
这种面向接口的设计使得不同组件之间可以进行灵活的调用和交互。
Com将软件开发和软件复用的概念推到了一个新的高度,使得开发人员可以更加高效地开发和利用组件。
Com的基本原理是对象之间的协作。
当一个组件需要调用另一个组件的功能时,它可以通过调用该组件的接口方法来实现。
在这个过程中,Com提供了一种透明的机制来处理对象之间的通信和数据传递。
Com的通信过程是通过接口指针来进行的,每个组件都有一个唯一的接口指针,通过它可以访问另一个组件的方法和属性。
Com的优势在于提供了一种统一的编程模型,使不同语言和平台的软件可以无缝地集成和交互。
Com可以被用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序、服务器端应用程序等。
它可以用于解决各种软件开发的问题,如组件复用、系统集成、异构系统之间的数据交换等。
弄懂Com的概念和原理是理解和掌握Com编程的关键。
对于初学者来说,可以通过观看Com入门视频教程来快速入门。
这些教程通常会介绍Com的基本概念、原理和应用场景,并通过实际的示例来演示Com编程的步骤和技巧。
在观看Com入门视频教程时,可以先了解Com的基本概念和术语,如组件、接口、对象等。
然后可以学习如何创建和使用Com组件,包括组件的注册和调用方式。
接着可以学习如何使用Com接口来进行对象的互相调用和通信。
最后可以学习Com的高级特性和技巧,如组件的线程安全性、错误处理、事件处理等。
通过观看Com入门视频教程,可以快速掌握Com编程的基本知识和技能。
这不仅可以帮助开发者更好地理解和应用Com 技术,还可以提升开发效率和软件质量。
COM接口协议协议名称:COM接口协议一、引言COM(Component Object Model)接口协议是一种用于组件间通信的标准协议。
本协议旨在规范COM接口的定义、实现和使用,以确保不同组件之间的互操作性和可扩展性。
二、术语定义1. COM:Component Object Model,组件对象模型,是一种面向对象的软件组件技术。
2. 接口:Interface,定义了组件对外提供的一组方法和属性。
3. 组件:Component,独立且可重用的软件模块。
三、协议规范1. 接口定义1.1 接口名称:[接口名称]1.2 接口描述:[接口描述]1.3 接口方法:[方法1名称]:- 参数:[参数1]:[参数1描述][参数2]:[参数2描述]- 返回值:[返回值描述] - 功能:[方法1功能描述] [方法2名称]:- 参数:[参数1]:[参数1描述] [参数2]:[参数2描述] - 返回值:[返回值描述] - 功能:[方法2功能描述] ...1.4 接口属性:[属性1名称]:[属性1描述] [属性2名称]:[属性2描述] ...2. 接口实现2.1 接口实现方式:[接口实现方式描述]2.2 接口实现规范:[接口实现规范描述]3. 接口使用3.1 接口引用:[接口引用方式描述]3.2 接口调用:[接口调用方式描述]四、示例以下是一个示例COM接口的定义:1. 接口定义1.1 接口名称:IExampleInterface1.2 接口描述:用于示例的COM接口1.3 接口方法:GetVersion:- 参数:无- 返回值:字符串- 功能:获取接口版本号SendMessage:- 参数:message:字符串,要发送的消息内容 - 返回值:无- 功能:发送消息2. 接口实现2.1 接口实现方式:C++类实现2.2 接口实现规范:实现类必须包含接口定义的所有方法,并按照规范进行实现。
3. 接口使用3.1 接口引用:通过接口指针引用3.2 接口调用:示例代码如下:```IExampleInterface* pInterface = GetExampleInterface(); // 获取接口指针if (pInterface != nullptr) {std::string version = pInterface->GetVersion(); // 调用GetVersion方法pInterface->SendMessage("Hello, COM!"); // 调用SendMessage方法}```五、总结本协议详细描述了COM接口的定义、实现和使用规范,确保了不同组件之间的互操作性和可扩展性。
作者简介潘爱民,浙江海宁人,获得了南开大学数学学士学位,清华大学工学硕士学位,以及北京大学计算机科学博士学位。
他从中学时代开始接触计算机编程,经历了从DOS到Windows各种版本的发展历程。
潘爱民曾经长期从事软件技术的研究和开发工作,撰写了大量软件技术文章,1999年曾经是《微电脑世界》杂志社的合作专家。
他著写了《COM原理与应用》(1999年出版),翻译了多部经典名作,如《Visual C++技术内幕》(第四、六版)、《C++ Primer中文版》(第三版)、《COM本质论》、《计算机网络》(第四版)等。
从2001年开始,潘爱民在北京大学计算机科学技术系承担研究生课程教学,共讲授了三门课程:《组件技术》、《网络与信息安全》和《程序开发环境分析与实践》,深受学生欢迎。
2006年秋季在清华大学软件科学实验班讲授《程序设计与算法基础》课程。
潘爱民获得了2001年微软亚洲研究院“微软学者”称号,2002年度北京大学优秀教学奖。
他现在微软亚洲研究院从事系统与安全方向的研究工作。
编辑推荐全书分为三部分,第一部分为COM基础,第二部分为COM扩展,第三部分为COM应用与发展,介绍了组件化程序设计思想以及多层软件结构模型。
读者在学习了COM的基本原理之后,结合MTS和COM+所倡导的一些概念,就可以从更高的层次来理解和使用COM及COM+了。
本书简介本书不仅介绍了COM的基本原理及其扩展知识,还讲述了MTS及COM+的一些知识。
全书分为三部分,第一部分为COM基础,第二部分为COM扩展,第三部分为COM应用与发展,介绍了组件化程序设计思想以及多层软件结构模型。
目录引言第1部分 COM原理 第1章 概述 1.1 COM的起源 1.1.1 0LE的发展历史 1.1.2 组件的产生 1.1.3 面向对象的组件模型——COM 1.2 COM结构 1.2.1 对象与接口 1.2.2 客户/服务器模型 1.2.3 COM库 1.3 COM特性 1.3.1 语言无关性 1.3.2 进程透明特性 1.3.3 可重用性 1.4 COM的发展前景 1.4.1 COM与Windows操作系统 1.4.2 COM与数据库 1.4.3 COM与Intranet应用 1.4.4 COM与Internet 第2章 COM对象和接口 2.1 COM对象 2.1.1 COM对象的标识——CLSID 2.1.2 COM对象与C++对象的 2.2 COM接口 2.2.1 从API到COM接口 2.2.2 接口定义和标识 2.2.3 用C++语言定义接口 2.2.4 接口描述语言IDL 2.2.5 接口的内存模型 2.2.6 接口的一些特点 2.3 IUnknown接口 2.3.1 引用计数 2.3.2 实现引用计数 2.3.3 使用引用计数规则 2.3.4 接口查询 2.3.5 COM对象的接口原则 2.3.6 QueryInterface成员函数的实现 2.3.7 COM对象和接口图示法 2.4 字典组件例子程序 2.4.1 组件程序DictComp 2.4.2 客户程序DictCtrl 第3章 COM的实现 3.1 进程内组件和进程外组件 3.1.1 进程内组件 3.1.2 进程外组件 3.2 通过注册表管理COM对象 3.2.1 注册表结构 3.2.2 COM组件注册信息 3.2.3 COM组件的注册操作 3.3 类厂(c1assfactory) 3.3.1 类厂和DllGetObjectClass函数 3.3.2 COM库与类厂的交互 3.3.3 类厂的实现 3.3.4 类厂对组件生存期的控制 3.4 COM库 3.4.1 COM库的初始化 3.4.2 COM库的内存管理 3.4.3 组件程序的装载和卸载 3.4.4 常用函数和HRESULT 3.5 COM实现过程 3.5.1 进程内组件与客户的协作过程 3.5.2 进程外组件与客户的协作过程 3.6 字典组件例子程序的实现 3.6.1 字典组件类厂的实现 3.6.2 字典对象的实现 3.6.3 全局引出函数的实现 3.6.4 客户程序DictCtrl 第4章 COM特性 4.1 可重用性:包容和聚合 4.1.1 包容和聚合 4.1.2 包容实现 4.1.3 聚合实现 4.1.4 聚合例子程序 4.2 进程透明性 4.2.1 列集(marshaling) 4.2.2 自定义列集 4.2.3 标准列集 4.2.4 标准列集的实现 4.2.5 进程外组件例子程序 4.3 安全性 4.3.1 WindowsNT安全机制 4.3.2 激活安全性 4.3.3 调用安全性 4.4 多线程特性 4.4.1 Win32线程和COM线程 4.4.2 列集和同步 4.4.3 套间线程 4.4.4 自由线程 4.4.5 进程内组件的线程模型 第5章 用VisualC++开发COM应用 5.1 Win32SDK和MFC介绍 5.1.1 Win32SDK 5.1.2 MFC基础:应用类和窗口类 5.1.3 MFC应用结构 5.1.4 MFC库结构 5.2 MFC对COM应用的支持 5.2.1 用嵌套类实现COM接口 5.2.2 接口映射表 5.2.3 CCmdTarget类实现IUnknown 5.2.4 COM引出函数和类厂实现 5.2.5 MFC对COM支持小结 5.3 用VisualC++开发COM应用 5.3.1 利用AppWizard创建COM程序工程框架 5.3.2 利用C1assWizard添加COM对象类 5.3.3 ATL介绍 5.4 VisualC++与Activex应用 5.4.1 MFC对自动化的支持 5.4.2 MFC对Activex控制的支持 5.4.3 MFC对复合文档的支持第2部分 COM扩展 第6章 可连接对象 6.1 可连接对象结构模型 6.1.1 客户与可连接对象的关系 6.1.2 可连接对象的基本结构 6.1.3 客户方基本结构 6.2 实现可连接对象(源对象) 6.2.1 枚举器 6.2.2 源对象和IConnectionPointContainer接口 6.2.3 连接点和IConnectionPoint接口 6.2.4 建立连接过程 6.3 客户—源对象—接收器的协作过程 6.3.1 接收器的实现 6.3.2 事件的激发和处理 6.3.3 与出接口有关的类型信息 6.4 可连接对象的程序实现 6.4.1 用IDispatch接口作为出接口 6.4.2 MFC对连接和事件的支持 6.4.3 用MFC实现源对象 6.4.4 用MFC在客户程序中实现接收器 第7章 结构化存储 7.1 结构化存储基础 7.1.1 从文件系统进展到结构化存储 7.1.2 存储对象和流对象 7.1.3 用结构化存储设计应用 7.2 结构化存储特性 7.2.1 访问模式 7.2.2 事务机制 7.2.3 命名规则 7.2.4 增量访问 7.3 结构化存储实现:复合文档 7.3.1 LockBytes对象和ILockBytes接口 7.3.2 复合文档API函数介绍 7.3.3 零内存保存特性和IRootStorage接口 7.3.4 存储对象.流对象和文件的CLSID信息 7.3.5 复合文档与结构化存储 7.4 永久对象实现 7.4.1 永久接口 7.4.2 永久对象的存储特性 7.4.3 永久对象例子程序 7.4.4 复合文档例子程序 7.5 本章小结 第8章 命名和绑定技术 8.1 名字技术基础 8.1.1 COM名字对象 8.1.2 使用名字对象:绑定过程 8.2 IMoniker接口 8.2.1 名字管理 8.2.2 利用IMoniker实现绑定 8.2.3 管理复合名字对象 8.2.4 名字解析 8.3 复合名字对象 8.3.1 复合名字对象结构 8.3.2 ROT和绑定环境对象 8.3.3 复合名字对象绑定过程的剖析 8.3.4 Io1eItemContainer接口 8.4 COM名字对象分类 8.4.1 COM提供的系统名字对象 8.4.2 URL名字对象 8.4.3 自定义名字对象 8.5 COM名字对象的应用 8.5.1 服务程序中名字对象的应用 8.5.2 客户程序中名字对象的应用 第9章 统一数据传输 9.1 统一数据传输基础 9.1.1 数据交换与传输协议的分离 9.1.2 应用:剪贴板和拖—放 9.2 数据传输机制 9.2.1 数据结构FORMATETC和STGMEDIUM 9.2.2 数据对象和IDataObject接口 9.2.3 通报连接机制 9.2.4 有关数据对象的小结下载后 点击此处查看更多内容。