`

COM原理及应用----统一数据传输

    博客分类:
  • COM
阅读更多

1、概述

       COM提供了应用之间数据交换的标准方案,称为统一数据传输(UDT,uniform data transfer)。统一数据传输技术建立在结构化存储技术的基础之上,它通过一个“数据对象”来表达要传输的数据信息,因此,统一数据传输技术的核心在于数据对象的定义和实现。剪贴板和拖-放是统一数据传输的两个典型应用。

 

2、数据交换标准

       早期的OLE1.0版本使用DDE(Dynamic Data Exchange,动态数据交换)作为数据交换标准,但DDE使用的格式比较简单,并且只能用全局内存作为传输介质,所以传输的效率和功能都受限制。 OLE2.0版本引入了COM作为其基本的结构模型,使用COM提供的统一数据传输作为其数据交换机制,可直接在不同介质之间进行传输。

 

3、数据交换与传输协议的分离

       在不同应用之间进行数据传输操作包括两方面的内容,首先是数据格式的统一,其次是传输协议的建立。

       以前采用DDE方式只能使用简单的数据结构对信息进行描述,COM的统一数据传输机制使用“数据对象”作为信息实体,数据对象通过IDataObject 接口暴露其内部信息。由于数据对象本身是一个COM对象,因此它不仅可以表达一般的结构化信息,也可以表达一些非结构化信息,甚至是动态信息。 IDataObject接口为应用程序进行数据传输建立了标准。在Windows平台上,最基本的传输协议为剪贴板、拖-放,应用程序通常利用这两种协议获得数据对象。

       在统一数据机制引入到Windows系统之前,Windows提供了许多API函数以及预定义的消息用于应用之间传输数据的桥梁。这些API函数把传输协议和传输数据信息绑在一起,比如用于处理剪贴板数据传送的一组函数:GetClipboardData、SetClipboardData和 CloseClipboard等,而DDE则通过发送消息作为数据传送的手段。

       COM提供的统一数据传输机制可很好地避免Windows API函数的数据传输的限制,一方面它定义了两个数据结构FORMATETC和STGMEDIUM,分别用来描述数据格式和存储介质,使新的机制可适应更广泛的数据类型和存储介质;另一方面它为数据对象提供了“数据表化通知”的机制。

       数据对象的概念使统一数据传输机制不仅可用于应用之间传输数据,也可以成为组件程序之间的信息交换标准。

 

4、剪贴板

       剪贴板是一个全系统共享的数据缓冲区,每个应用都可以通过系统提供的API函数访问剪贴板。它的三个标准操作是:剪切、复制、粘贴。

       Windows系统在引入COM的统一数据传输机制之前,提供了一组API函数以及预定义的CF_***标准格式,这些格式包括文本类型、位图类型、图元文件(metafile)数据等,而且这些数据必须存放在全局内存中。但剪贴板技术与数据对象结合之后,情况有了很大的变化,可用于传输数据对象,比如 OLE文档对象、ActiveX控制对象等,或者是应用程序中自定义的数据对象,只要此对象实现IDataObject接口即可。剪贴板成为数据对象的提供方和接收方之间的通信协议,而且这种通信方式是异步进行的。

 

5、拖-放

       拖-放技术也是基本的传输协议,它的使用方式与剪贴板有所不同,程序采用同步的方式进行。

 

6、数据结构FORMATETC和STGMEDIUM

       FORMATETC结构定义了用于传输的数据格式,它扩充了基本的剪贴板数据格式;STGMEDIUM结构定义了用于传输的介质类型,它即可以描述常用的全局内存,也可以描述其他的存储介质。

 

7、数据对象和IDataObject接口

       统一数据传输中的数据对象是一个COM对象,它实现了IDataObject接口。在数据对象的实现方(即提供方)和客户(即接收方)之间,IDataObject接口为两者建立了标准,而各种传输协议如剪贴板和拖-放等,它们所传递的实际上是IDataObject接口指针。

 

8、通报连接机制

       为了实现从数据对象到客户程序的通信过程,要求数据对象在状态发生变化时能主动通知客户程序,而客户程序必须提供一个接收器对象以便接收这些通知,这是曾在第六章中介绍过的COM提供的通过接收器对象建立的通用的双向通信机制。而在统一数据传输机制中使用的通知接收器要简单一些,它是由客户程序实现的内部对象,只需实现IAdviseSink接口。

       数据对象与客户程序之间的连接方式较第六章中的可连接对象机制简便得多。


       客户程序通过IDataObject::DAdvise函数建立通报连接时,它除了要提供接收器对象的IAdciseSink接口指针,还要提供两个信息:格式信息和与通报连接有关的标志信息。

       COM提供了“数据通报控制器”(data advise holder)的内部对象,数据通报控制器对象实现了IDataAdviseHolder接口。数据对象利用COM API函数CreateDataAdviseHolder创建一个数据通报控制器对象,该函数返回对象的IDataAdviseHolder接口指针,然后,数据对象把IDataObject接口的三个与变化通知有关的成员函数直接委托给数据通报控制器对象IDataAdviseHolder接口的相应成员函数。

 

9、数据对象

       在实现数据对象时,不管是进程内组件程序,还是进程外组件程序,由于与数据对象有关的接口都是COM定义的标准接口,COM已经提供了这些接口的跨进程列集器,所以不用考虑跨进程的细节。进程模型只影响性能因素。

 

10、通过剪贴板传输数据

       在剪贴板与数据对象结合起来之前,Win32中为支持剪贴板操作而提供了一组API函数:OpenClipboard、CloseClipboard、 EmptyClipboard、SetClipboardData、GetClipboardData、 IsClipboardFormatAvailable、EnumClipboardFormats。

       因为剪贴板是Windows操作系统支持的特性,而COM是与平台无关的组件对象模型规范,所以剪贴板和数据对象结合之后的特性不属于COM范畴,严格来讲应该数OLE技术的一部分,称之为OLE剪贴板。OLE也提供了四个封装过的API函数:OleSetClipboard、 OleGetClipnoard、OleFlushClipboard、OleCurrentClipboard。

      

11、拖-放数据传输协议

       与剪贴板传输协议不同,OLE的拖-放数据传输协议只能传输数据对象,而不能传输其他的数据。

       拖-放操作是一个与界面有关的数据传输过程,通常涉及到源窗口和目标窗口。


OLE提供的API函数RegisterDragDrop把“放目标”对象与窗口联系起来。

 

12、MFC对剪贴板和拖-放的支持

       MFC提供了两个类用于支持数据对象,分别为COleDataSource和COleDataObject类。这两个类直接继承于CCmdTarget,其中COleDataSource类用于源程序一方,COleDataObject用于客户程序一方。

       COleDataSource类实现了IDataObject接口,但是不支持通报连接。COleDataSource类创建并管理了一组数据格式,这些数据格式被保存在对象内部(缓冲区中)。COleDataSource类实现了一个真正的COM对象,它有自己的引用计数。

分享到:
评论

相关推荐

    ARM原理与嵌入式应用--基于LPC2400系列处理器和IAR开发环境部分源码

    ARM原理与嵌入式应用是嵌入式系统开发中的一个重要领域,主要涉及到微处理器的设计、编程和应用。在这个场景中,我们关注的是基于LPC2400系列处理器的实现和IAR开发环境的源码。LPC2400是NXP(原飞利浦)公司推出的...

    单片机原理及应用-单片机原理及应用试题四(精选试题).doc

    单片机原理及应用是电子工程领域中的一个重要分支,它涉及到微处理器的结构、编程以及在实际系统中的应用。以下是一些关于单片机的基本知识点,主要基于提供的试题内容: 1. **函数返回类型**:在C语言中,void类型...

    数据库原理与应用-PPT课件.ppt

    * 数据管理的定义:数据处理的一系列活动中,数据的收集、存储、分类、传输等操作称为基本操作,这些基本操作环节称为数据管理。 数据库系统的发展 * 人工管理阶段:20世纪50年代中期以前,数据由人来管理,计算机...

    七号信令原理和应用-C.pdf

    MTP是SS7中最基础的部分,它负责提供可靠的数据传输服务。MTP分为三层: - **第一层:物理层**(Physical Layer)——提供比特流的传输。 - **第二层:数据链路层**(Data Link Layer)——实现帧同步、差错检测等...

    原创-REST原理及Opendaylight应用--冀烨

    ### REST原理及Opendaylight应用解析 #### REST概念与起源 REST(Representational State Transfer,表述性状态转移)并非一种具体的技术或规范,而是一种架构风格。它源于Roy Fielding于2000年在他的博士论文...

    计算机网络原理实验报告---Wireshark实验:HTTP协议分析

    HTTP(超文本传输协议)是应用层协议,用于客户端和服务器之间的通信。它基于TCP/IP协议栈,以请求/响应模型进行交互。HTTP请求报文和响应报文具有固定的格式。 **HTTP请求报文格式** 1. **请求行**:包括请求方法...

    WH-T 32-2008 DMX512-A灯光控制数据传输协议

    其目标是在剧场、演出、影视制作等多种应用场景下,为灯光控制系统提供一个统一的数据传输框架。 #### 1.2 概述 DMX512-A是一种用于控制舞台灯光、音响、特效等设备的数字通信协议。它采用异步串行数字数据传输...

    《合作式智能运输系统 车用通信系统应用层及应用数据交互标准》(TCSAE 53-2017)全文 中国 V2X 标准.pdf

    TCSAE(中国汽车工程学会)发布的《合作式智能运输系统 车用通信系统应用层及应用数据交互标准》(TCSAE 53-2017)是中国在V2X领域内首项正式标准,标志着国内相关技术的规范化发展。 该标准TCSAE 53-2017旨在提升...

    计算机组成原理课后答案-唐朔飞-第三章(“总线”文档)共21张.pptx

    总线的工作原理是通过总线来实现多个部件之间的数据传输。总线上每个部件都具备异步传输的特点,以便在不同时间进行数据传输。总线的工作周期是指总线完成一次传输所需的时间。 五、总线的应用场景 总线的应用场景...

    单片机原理及应用:第2章 MCS-51单片机结构及原理.ppt

    "单片机原理及应用:MCS-51单片机结构及原理" 单片机是一种微型计算机系统,它集成了中央处理器、存储器、输入/输出接口和其他部件于一块芯片上。MCS-51是Intel公司生产的一种常见的单片机系列,本章将详细介绍MCS-...

    linux原理与应用

    ### Linux原理与应用知识点概述 #### 一、硬件基础 **1.1 CPU** - **定义**: 中央处理器(Central Processing Unit),是计算机的核心部件之一,负责执行指令。 - **功能**: 解释计算机指令以及处理计算机软件传来...

    P2P对等网络原理与应用

    而在P2P网络中,每个节点都参与数据传输,共同承担网络负载,使得网络具有更强的鲁棒性和扩展性。此外,P2P网络中的节点间通过特定的路由算法建立连接,如Kademlia算法,实现快速查找和交换信息。 P2P应用种类繁多...

    互联网原理和应用的核心概念

    - **应用软件机制**:通过重传机制等手段,进一步增强数据传输的可靠性。 #### 7. 实现网络通信和网络应用一体化的途径 - **统一通信平台**:构建一个能够同时支持多种通信模式的平台。 - **协议融合**:利用标准...

    卫星电视原理和DVB-S制式整理.pdf

    本文将深入探讨卫星电视的基本原理及DVB-S制式的详细内容。 首先,让我们了解一下卫星通信的基本原理。卫星通信广泛应用于各个领域,包括资源探测、气象监测、军事通讯以及我们关注的电视广播。在地球静止轨道上,...

    计算机组成原理习题课-(2).pptx

    数据传输方式 #### 3.1 串行传输 - **定义**:数据通过一条传输线逐位发送。 - **特点**: - 每次只发送一位数据。 - 适用于长距离传输或者设备间的简单连接。 #### 3.2 全双工通信 - **定义**:数据可以在两个...

    无线数据传输在指纹手机上可以如何应用.docx

    ### 无线数据传输在指纹手机上的应用分析 随着信息技术的发展,指纹识别技术逐渐成为保障信息安全的重要手段之一。本文探讨了一种结合指纹识别技术与无线数据传输技术的应用方案,旨在为指纹身份验证考试系统提供一...

    VMware NSX原理与实践------逻辑交换(一)

    VXLAN是一种基于UDP的隧道技术,它可以将虚拟机之间的通信封装在UDP报文中,使得不同网络中的虚拟机在逻辑上处于同一网络,从而实现跨物理边界的数据传输。 VLAN(Virtual Local Area Network)与VXLAN的主要区别...

Global site tag (gtag.js) - Google Analytics