




已阅读5页,还剩60页未读, 继续免费阅读
(运筹学与控制论专业论文)基于ip组播的电视播放技术的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
at h e s i si no p e r a t i o n a lr e s e a r c ha n dc y b e r n e t i c s r e s e a r c ha n d i m p l e m e n t a t i o n o ft v p l a y i n gt e c h n o l o g y b a s e do ni pm u l t i c a s t b yw a n g z h i h a i s u p e r v i s o r :p r o f e s s o ry a n gd o n g m e i n o r t h e a s t e r nu n i v e r s i t y j a n u a r y2 0 0 8 独创性声明 本人声明,所呈交的学位论文是在导师的指导下完成的。论文中 取得的研究成果除加以标注和致谢的地方外,不包含其他人已经发表 或撰写过的研究成果,也不包括本人为获得其他学位而使用过的材 料。与我一同工作的同志对本研究所做的任何贡献均己在论文中作了 明确的说明并表示谢意。 学位论文作者签名:王老翊 日期:7 i * o7 、7 ; 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学 位论文的规定:即学校有权保留并向国家有关部门或机构送交论文的 复印件和磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学 位论文的全部或部分内容编入有关数据库进行检索、交流。 ( 如作者和导师不同意网上交流,请在下方签名;否则视为同意。) 学位论文作者签名: 签字日期: 导师签名: 签字日期: 2 夕 i l,kl l _ 一 t 六 东北大学硕士学位论文摘要 基于ip 组播的电视播放技术的研究与实现 摘要 随着网络的普及与发展,流媒体技术是近几年来研究的一个热点。它是为 了解决多媒体的传输和网络带宽的矛盾而产生的。流媒体技术在网络中有着越来 越广泛的应用,已经逐步应用到商业领域。在网络媒体播放应用方面,流媒体传 输技术中的组播技术具有很大的优势,它能让媒体服务器同时向多个客户端发送 连续数据流而不产生延时,极大地提高了网络利用率。而网络电视播放系统由于 成本低廉、实施简单、扩展性高且灵活性强,今后将被广泛应用。 但是目前很多电视播放系统都是采用t u n e r 卡所附带的s d k ( s o f t w a r e d e v e l o p m e n tk i t ) 或基于v f w ( v i d e o f o rw i n d o w s ) 技术,这种传统的编程模 式在整体上破坏了软件的体系结构,因此系统存在通用性差、维护困难、依赖于 t u n e r 卡的类型等缺点。而w 存在很多缺点,是一种趋于废弃的技术。 本文针对以上这些问题,提出了一种基于d i r e c t s h o w 和c o m ( c o m p o n e n t o b j e c tm o d e l ) 技术的网络电视播放系统,该系统具有通用性,且降低了成本。 同时,本系统采用口组播技术实现了数据的多点传输,节省了网络带宽资源, 提高了数据传送的效率。本文首先探讨了c o m 技术;其次分析了电视播放系统 服务器端和客户端的功能和需求;最后实现了组播传输、网络视频流传输过滤器 和多线程。 文中采用i p 组播技术实现多点之间视频流传输方案,以及开发的网络视频 流处理过滤器,对今后同类软件的开发具有很好的参考价值和实用价值。 关键词:c o m ;组播;d i r e c t s h o w ;过滤器;针 f 一 , a b s t r a c t w i t ht h e d e v e l o p m e n t a n d p o p u l a r i z a t i o n o f i n t e r n e t ,s t r e a m i n g m e d i a t e c h n o l o g yi sah o ti s s u ei nr e s e a r c ht h e s ey e a r s i tc o m e si n t ob e i n gb e c a u s eo ft h e c o n t r a d i c t i o n so ft h et r a n s m i s s i o no fm u l t i m e d i aa n dn e t w o r kb a n d w i d t h s t r e a m i n g m e d i a t e c h n o l o g y i s w i d e l ya p p l i e d i nn e t w o r k , w h i c hh a sb e e n a p p l i e d t o c o m m e r c i a lf i e l d t h et e c h n o l o g yo fm u l t i c a s ti ns t r e a mm e d i ah a sm o r ea d v a n t a g e s w h e ni ti sa p p l i e df o r t h ea p p l i c a t i o no fm u l t i m e d i an e t w o r k i tc a nm a k et h em e d i a s e r v e rs e n dc o n t i n u o u sd a t at om o r et h a no n ec u s t o m e rc l i e n tw i t h o u ta n yd e l a y t h e r e f o r ei tg a l li m p r o v et h ea v a i l a b i l i t yo ft h en e t w o r ks y s t e m n e t w o r kt v p l a y i n g s y s t e mi su n d e ri n c r e a s i n gp o p u l a r i t yi nm a r k e tb e c a u s eo fi t sd i s t i n c ta d v a n t a g ei n l o w p r i c e ,c o n v e n i e n to p e r a t i o na n da g i l ef u n c t i o n b u tn o wm a n yt vp l a y i n gs y s t e m su s e dt u n e rc a r ds d ko rb a s e do nv f t o d e v e l o ps o f t w a r e ,t h i sk i n do ft r a d i t i o n a lp r o g r a m m e dm o d e la tw h o l eu pb r o k et h e s y s t e ms t r u c t u r eo ft h es o f t w a r e ,t h e r e f o r eg e n e r a l i t yp o o r , m a i n t e n a n c ed i f f i c u l ta n d d e p e n d i n go nt u n e rc a r dt y p e v f t e c h n o l o g yh a sm a n ys h o r t c o m i n g sa n dt e n d st o d i s c a r d a i m i n ga tt h e s ep r o b l e m s ,t h i sp a p e rp r o p o s e san e t w o r kt e l e v i s i o ns y s t e mw h i c h b a s e do nm i c r o s o f td i r e c t s h o wa n dc o mt e c h n o l o g i e s t h es y s t e me n h a n c e st h e g e n e r a l i t ya n dd e c l i n e st h ec o s t a tt h es a m et i m e ,t h es y s t e mu s e si pm u l t i c a s t t e c h n o l o g yt ot r a n s m i td a t as ot h a t i ts a v e sn e t w o r kb a n d w i d t hr e s o u r c e sa n d i m p r o v e st h ee f f i c i e n c y o fd a t a t r a n s m i s s i o n f i r s t l y , t h i sp a p e rd i s c u s s e sc o m t e c h n o l o g y ;s e c o n d l y d e s i g n sa n da n a l y z e st h i ss y s t e md e p e n d i n go na n a l y s i so ft h e f u n c t i o n sa n dr e q u i r e m e n t so fs e t r v e l ra n dc l i e n ti nt h i ss y s t e m ;f i n a l l y , i m p l e m e n t s m u l t i c a s tt r a n s m i s s i o n ,s e n d i n ga n dr e c e i v i n gf i l t e ra n dm u l t i t h r e a d i i i 东北大学硕士学位论文 t h i sp a p e rt h a tu s e si pm u l t i c a s tt ot r a n s m i tv i d e oa n dt h ef i l t e rw h i c hi s i m p l e m e n t e df o rv i d e ot r a n s m i s s i o nh a v eg r e a tr e f e r e n c ea n dp r a c t i c a l i t yf o r d e v e l o p i n gs i m i l a rs o f t w a r ei nt h ef u t u r e k e yw o r d s :c o m ;m u l t i c a s t ;d i e s h o w ;f i l t e r ;p i n j 气 , 7 i d 目录 独创性声明i 摘要。ii a b s t r a ( 可ii i 第一章绪论1 1 1 课题背景1 1 2 国内外研究现状1 1 3 本课题研究的意义3 1 4 本文的组织结构4 第二章c o m 技术5 2 1c o m 技术简介5 2 1 1c o m 技术的产生5 2 1 2c o m 技术的特征。6 2 2c o m 的实现8 2 2 1c o m 对象的标识。8 2 2 2c o m 接口。9 2 2 3 类厂。1 1 2 3 本章小结1 3 第三章电视播放系统的总体设计:1 5 3 1 系统架构1 5 3 2 系统各功能模块1 7 3 2 1 服务器端功能模块1 7 3 2 2 客户端功能模块1 8 3 3 运行平台及开发环境1 9 3 4 本章小结1 9 第四章电视播放系统的实现2 0 v 东北大学硕士学位论文目 录 4 1 涉及到的理论与技术2 0 4 1 1d i r e c t s h o w 技术2 0 4 1 2i p 组播技术2 4 4 1 3 设计模式。2 9 4 2 服务器端和客户端的实现3 1 , t d 东北大学硕士学位论文第一章绪论 1 1 课题背景 第一章绪论 2 0 世纪8 0 年代中后期开始,多媒体计算机技术成为人们关注的热点之一。 多媒体技术是一种迅速发展的综合性电子信息技术,它给传统的计算机系统、音 频和视频设备带来了方向性的变革,将对大众传媒产生深远的影响。多媒体计算 机将加速计算机进入家庭和社会各个方面的进程,给人们的工作、生活和娱乐带 来深刻的革命。 随着网络的发展人们不再满足于只有文本和图像这种静态的信息表达方式, 而是越来越希望能看到更丰富、更直观信息表达方式,在这种情况下,多媒体技 术得到了很好的应用和研究。多媒体在网络中的应用,使得计算机能够处理声音、 视频、图像、文字等,给人们的视觉、听觉以极大享受,给人们的生活和工作带 来了很大变化。 多媒体技术的广泛应用和网络的普及,流媒体的发展成为必然结果。流媒体 技术解决了网络带宽和传统播放文件形式之间的矛盾。如果不使用流媒体技术, 网络上的多媒体文件要先将其从服务器上完全下载后才能播放,这样就需要等待 很长时间才能观看,而流媒体技术是一边下载一边观看的形式播放媒体,节省了 网络带宽资源,提高了数据传送的效率,丰富了网络的功能。 1 2 国内外研究现状 网络多媒体的发展方兴未艾,这得益于两个方面:多媒体技术促进了计算机 的人性化,而网络技术促进了计算机的普及化。面向计算的传统计算机功能简单 且操作复杂,而多媒体技术通过视频、音频和更广义的人机交互等手段拓展了计 算机的功能,同时降低了计算机的操作复杂度。随着计算机硬件的飞速发展,多 媒体数据的存储、压缩、检索和渲染技术也逐渐成熟,多媒体技术己进入其发展 的高潮阶段。i n t e r n e t 为广大用户提供了规模非常大的信息服务,极大地提高了 人们获得信息的能力,日益成为人们交通、交流、娱乐、工作的重要信息工具。 东北大学硕士学位论文第一章绪论 在这样背景下,流媒体的出现成为必然。流媒体的应用系统、国际标准和基础研 究正成为目前产业界和科研机构密切关注的焦点。 流媒体技术改变了传统互联网的呆板形象,丰富了互联网的功能,使之成为 一种有强大吸引力的新媒体。一般认为,这种技术会在网络直播【l 。3 】、多媒体新 闻发布、网络视频广告、电子商务、视频点播、远程教育、网络电台、视频会议 【“】、远程医疗【7 1 、远程监控3 1 等领域得到广泛的应用。对于广电行业而言,流 媒体更是拥有巨大潜力的竞争对手。事实上,流媒体不但可以播放广电媒体的所 有节目内容,还可以提供更具有吸引力的多媒体内容点播、游戏等个性化的互动 服务。流媒体领域涉及很多待解决的科学技术问题,其背后是数字电视、无线通 讯和宽带网络多媒体的广阔市场和巨大的经济利益。流媒体技术的几项应用简介 如下【1 4 】: 视频播出:娱乐是流媒体的重要应用场合。用摄像机或其它装置获得视频信 号后,就可以通过站点进行基于i n t e m e t 的现场直播;或者保存为流媒体格式的 文件,以供按需播放。需要在一台较高配置的p c 机或服务器上安装上普通视频 采集卡和声卡,然后通过视频采集卡输入视频和通过声卡输入声音信号就可以用 实时编码工具来进行直播或录制成流媒体文件。在这种应用中可加入一定的计费 手段,从而能够提供有偿多媒体内容服务。 远程教育:远程教学将为更多的人提供接受教育的机会。教学者事先在 i n t e m e t 上发出通知,听众在讲座开始前访问某个u r l 地址,当讲座开始时,听 众可以看到演讲者的演讲画面并听到他的声音。整个讲座也可以流媒体文件的形 式记录下来,用于以后按需播放。教学者事先把流媒体文件传给远程教学服务器, 当听众需要听讲座时,同样访问相应的u r l 地址,请求获取服务器中的流媒体 内容。媒体数据通过流式传输下载到用户的浏览器高速缓存中,由媒体播放器实 时回放。 视频会议:视频会议和远程教学有很多类似之处,但它对实时性的要求更高。 在一个视频会议中,各个会议点用音视频采集设备得到多媒体内容信息,经过数 字化后用某种压缩方法进行压缩。压缩数据可以通过网络直接在各个会议点之间 组播,或传到多点处理器经过合成或转换后再向各与会点组播。但不管采用哪种 方式,都需要保证以尽量小的时延在各个点进行回放,这正是流媒体技术发挥作 一一 东北大学硕士学位论文第一章绪论 用的地方。 另外,流媒体技术也是三网合一( 电信网、因特网和电视网) 的关键技术之一。 世界上几大有影响的媒体,如b b c 、c n n 、v o a 、a b c 、n b c 等,都在网上开 通了自己的网上广播。国内的一些广播电台和电视台,例如c c v t c o m 、b t v c o m 虽然也已经在自己的网站上开始了试验性的音视频点播,但其音视频点播系统平 台无一例外采用的都是国外公司的核心技术,系统规模不大,安全性也没有保证, 很难大规模开展这方面的业务,随着网络宽带化的飞速发展,作为第四媒体的 i n t e m e t 必将超过另外三种媒体成为主流的信息交换平台,因此对流媒体业务平 台安全性的认识需要上升到国家安全的高度。目前我国政府正在大力推进并积极 鼓励流媒体事业的发展,宽带流媒体技术及其平台是国家8 6 3 项目之一。独立自 主开发安全可靠、具有自主知识产权的流媒体增值业务平台已经成为国内同仁的 当务之急。 1 3 本课题研究的意义 网络技术和通信技术飞速发展的同时,也增加了多媒体信息在网络上的传播 量,但是庞大的多媒体信息量使得网络带宽严重阻塞,尤其是具有音频、视频媒 体信息的网络中,问题更加突出。虽然通过对硬件的改进提供高效的通信,但是 又面临着成本的提高,同时由于目前的电视播放系统大部分利用t u n e r 卡所附带 的s d k ( s d k 函数在形式上是一组普通函数、宏函数和回调函数) 或基于v f w 技术进行电视播放软件的开发,这种传统的编程模式在整体上破坏了软件的体系 结构,因此系统存在通用性差、维护困难、依赖于t u n e r 卡的类型等缺点。 针对以上问题,本文提出了基于组播技术的电视播放系统。利用m i c r o s o f t 公司的d i r e c t s h o w 技术设计并实现了网络发送和接收过滤器、视频采集、电视 系统的播放、基于i p 组播技术的数据传输等功能。基于i p 组播技术的实现,节 省网络带宽资源,提高数据传送的效率。同时由于本系统基于c o m 和d i r e c t s h o w 技术,降低了成本,便于系统升级,有更好的兼容性和扩展性。 东北大学硕士学位论文第一章绪论 1 4 本文的组织结构 本文的具体内容和章节安排如下: 第一章绪论; 第二章c o m 技术; 第三章电视播放系统的总体设计 第四章电视播放系统的实现 第五章本文的总结和展望 东北大学硕士学位论文第二章c o m 技术 第二章c o m 技术 c o m 技术是m i c r o s o f t 提出的组件通信的规范。在软件行业除c o m 组件技 术,还有i b m 的s o m ( s y s t e mo b j e c tm o d e l ) 系统对象模型、o m g ( o b j e c t m a n a g e m e n tg r o u p ) 对象管理组织的c o r b a 组件技术、s u n 公司的j a v a b e a n s 组件技术等。本系统是基于w i n d o w s 操作系统下的应用程序,所以选择了c o m 技术。 2 1 c o m 技术简介 2 1 1c o m 技术的产生 一个应用程序通常是由单个的二进制文件组成的。当编译器生成此应用程序 之后,在对下一个版本重新编译并发行新生成的版本之前,应用程序不会发生任 何变化。操作系统、硬件及客户需求的改变都必须等到整个应用程序被重新编译 之后才能够运行。 现在c o m 技术改变了这种状况,使应用程序在发布后不应该保持那种静止 的状态,能够给已经发布的软件不断注入新的活力。这种技术就是将一个应用程 序分割成多个独立的模块,就是所说的组件。这使得当某个组件改变时,直接用 新的组件取代旧的组件,不用全部更新,从而随着新组件不断取代旧的组件而趋 于完善。 c o m 技术是一个说明如何建立可动态互变组件的规范。它定义了一些客户 ( 一个术语,指需要某种组件的程序) 组件必须遵循的标准,c o m 技术就是一 套为组件架构设置标准的文档形式的规范。c o m 的发布形式是:以w i n 3 2 动态 链接库( d l l ) 或者可执行文件( e x e ) 的形式发布的可执行代码组成。 c o m 组件是动态连接的,而且c o m 组件是完全与语言无关的。同时,c o m 组件可以以二进制的形式发布。c o m 组件还可以在不妨碍老客户的情况升级成 新的版本。 东北大学硕士学位论文第二章c o m 技术 2 1 20 0 m 技术的特征 c o m 技术具有以下特征【1 5 ,1 6 】 ( 1 ) 面向对象 c o m 组件技术引用了面向对象的思想,通常把它称为c o m 对象。c o m 对 象的概念与所熟悉的j a v a 或c + + 中的对象不一样,c o m 对象是建立在二进制可 执行代码级的基础上,而c + + 等语言中的对象是建立在源代码级基础上的,因此 c o m 对象是语言无关的。这一特性使用不同编程语言开发的组件对象进行交互 成为可能。访问c o m 对象的唯一途径是通过接口,通常把这种接口称为c o m 接口,c o m 对象被很好地封装起来,客户无法访问对象的内部实现细节,也无 法知道对象使用了什么数据结构。 ( 2 ) 客户服务器 对象和客户之间的相互作用是建立在客户n 务器模型的基础上的,客户服 务器模型的一个很大的优点是稳定性好,而稳定性正是c o m 模型的目标,尤其 对于跨进程的程序通信,稳定性更会带来性能上的高可靠性。 客户服务器模型是一种发展比较成功的模型,有以下优点:稳定性、可靠性 好;软件的扩展性更好;提高性能;在网络上实现时,可以降低网络流量;在数 据库方面,可以实现事务机制,提供数据备份能力等。 ( 3 ) 语言无关 c o m 具有语言无关性,它可以用任何语言编写,也可以在任何语言平台上 被调用。因为c o m 规范定义不倚赖于特定的语言,只要能够生成符合c o m 规 范的可执行代码即可。c o m 是采用一种二进制标准,而不是源代码的标准。 c o m 规范的定义与语言无关,所以很多语言在实现时都提供了对c o m 的支 持,如v i s u a lb a s i c 、v i s u a lc + + 、b o r l a n d 公司的d e l p h i 、c + + b u i l d e r 等都支持 c o m 组件的开发和使用。 ( 4 ) 进程透明 c o m 所提供的服务组件对象在实现时有两种模型:进程内组件和进外组件。 如果是进程内组件,则它在客户进程空间中运行,通常服务程序的代码以动态连 接库的形式实现;如果是进程外组件,则它运行在同一机器上的另一个进程空间 或者在远程机器的进程空间中,服务程序是一个独立的应用程序,通称它是一个 东北大学硕士学位论文 第二章c o m 技术 e x e 文件。 不管是进程内组件还是进程外组件,客户程序可以用一致的方法创建c o m 对象。对于进程内组件,无论是创建过程,还是对接口函数的调用过程,我们都 可以按照同一进程内部函数调用的过程来理解组件和客户之间交互操作;但对于 进程外组件,实际的情形要复杂的多,因为组件程序和客户程序拥有不同的进程 空间,所以,它们之间所有的交互过程都涉及到进程之间的通信过程。虽然客户 程序和对象在不同的进程空间中,但所有对接口的调用都是间接进行的,客户程 序调用接口成员函数就如调用本进程内的函数一样,这正是c o m 所达到的透明 效果。 ( 5 ) 可重用 与c + + 类在原代码级别的重用不同,c o m 组件的重用是建立在对二进制代 码重用的基础上的。具体包括包容( c o n t a i n m e n t ) 和聚合( a g g r e g a t i o n ) 两种重 用模型。这两种重用机制非常相似,其本质也都是在一个组件中对另外一个组件 的使用。 如图2 1 在包容机制中,外部组件除了实现自己的接口外,还包含了指向内 部组件所有接口的指针,使内部组件接口相对于外部组件的客户是不可见的,只 有通过外部组件提供的接口才能间接完成对内部组件接口的调用,并以此实现对 已有组件的重用。由于包容机制为内部组件接口提供了外部接口实现,因此可以 通过在外部接口添加适当的代码以完成与被重用组件所提供服务类似的功能。这 有些类似于对c + + 类中虚函数的重载。 i x i y 图2 i 包容模型 f i g 2 1c o n t a i n m e n tm o d e l 东北大学硕士学位论文 第二章c o m 技术 聚合机制的本质其实就是包容,只不过是其一个特例而己。采用聚合机制的 组件并没有实现用于转发给内部组件接口的接口,而是直接将客户发出的对内部 组件接口的请求直接传递给内部组件的接口,使其直接暴露于外部组件的客户。 但是客户在请求到此接口指针并对其接口进行调用时,仍不会意识到被重用组件 的存在。由于外部组件对内部组件的重用只是通过传递对接口的请求而将被请求 接口暴露于客户,因此只能实现与被重用组件所提供服务完全一样的重用功能。 与包容不同,并不是所有的组件都能够支持聚合。至于在重用时是采取包容机制 还是聚合机制,关键在于要实现的功能与待重用的组件所提供服务是类似还是完 全一致。聚合机制如图2 2 所示: i x i y 2 2c o m 的实现 图2 2 聚合模型 f i g 2 2a g g r e g a t i o nm o d e l c o m 不仅提供了客户程序和组件程序之间的交互的协议细节,也提供了全 面的实现过程。不管是客户程序还是组件程序,在建立交互之前以及交互完成之 后,不可避免地与系统打交道,因此c o m 作为一套完整的组件模型体系,也提 供了所有的实现细节,用于协调客户程序和组件程序的行为,并尽可能提高资源 利用率。实现细节大概包括以下内容。 2 2 1c o m 对象的标识 c o m 组件位置对客户来说是透明的,因为客户并不直接去访问c o m 组件, 客户程序通过一个全局标识符【1 5 ,1 7 】进行对象的创建和初始化。c o m 规范采用了 东北大学硕士学位论文第二章c o m 技术 1 2 8 位全局唯一标识符g u i d ,是一个随机数。虽然g u i d 是1 2 8 位随机数,但 是并不绝对保证唯一性,但发生重复的概率非常小。 以下是一个g u i d 的例子( 可以用v c + + n e t 中的c r e a t eg u i d 工具创建) 4 a b 9 3 c 2 e 一8 0 2 7 - 4 2 b f - 8 e 8 5 一f 8 a 7 c 3 c b b b 6 4 ) 在c + + 语言中的结构体描述: t y p e d e fs t r u c t _ g u i d d w o r dd a t a l ; w o r dd a t a 2 ; w o r dd a t a 3 : b y t e d a t a 4 8 】; ) g u i d ; g u i d 是一个随机数,其随机性由两方面保证:一方面是空间,对于网络中 的计算机,通常取网络适配器的地址值,没有网络适配器的机器用其它随机数生 成算法产生;另一方面是时间值,同一机器在不同的时候产生的标识符总不相同。 2 2 2c o m 接口 c o m 对象的客户与对象之间通过接口进行交互,所以c o m 规范的核心内 容是关于接口的定义。接口是通过定义一组成员函数,这些函数是组件对象提供 给客户的唯一信息,客户利用这些函数获得组件的服务。 客户利用一个指向接口指针来调用接口成员函数。如图2 3 所示,借口指针 实际上又指向另一个指针,称之为接口函数表,接口函数表中每一项为4 个字节 长的函数指针,每个函数指针与对象的具体实现连接起来。通过这种方式,客户 只要获得了接口指针,就可以调用到对象的实际功能。 东北大学硕士学位论文 第二章c o m 技术 p v t a b l e v t a b l e 接口指针 指针 指针函数1 指针函数2 对象实现 指针函数3 图2 3 接口函数表 f i g 2 3i n t e r f a c ef u n c t i o nt a b l e 对于一个接口虚函数表是确定的,因此接口的成员函数个数是不变的,而且 成员函数的先后顺序也是不变的。对于每个成员函数来说,其参数和返回值也是 确定的。所以不管什么语言,只要能支持这样的结构描述,就可以定义接口。从 而接口具有以下特性: ( 1 ) 二进制特性 接口规范并不建立在任何编程语言的基础上,而是规定了二进制一级的标 准。任何语言只要有足够的数据表达能力,就可以对接口进行描述,从而可以用 于与组件程序有关的应用开发。 ( 2 ) 接口不变性 接口是组件客户程序和组件对象之间的桥梁,接口如果经常发生变化,则客 户程序和组件程序跟着变化,这对于应用系统的开发非常不利,也不符合组件化 程序设计的思想。 ( 3 ) 继承性( 扩展性) 接口的继承与c + + 中类的继承不同,在c + + 中类继承允许多重继承,一个派 生类可以有多个父类,但接口只允许单继承;类继承时不仅说明继承,也实现继 承,而接口继承只是说明继承,而不继承接口的实现,不包括函数实现部分。 ( 4 ) 多态性( 运行过程中的多态性) 多态性是面向对象的重要特征之一,c o m 对象也同样具有,而其多态性是 通过接口体现。多态性使得客户程序可以用统一的方法处理不同的对象,甚至是 不同类型的对象,只要它们实现了同样的接口。 定义c o m 的接口都必须从1 u n k n o w n 接口继承,其中定义了三个函数,每 个函数都类似于c + + 中的纯虚函数,i u n k n o w n 定义如下: 东北大学硕士学位论文 第二章c o m 技术 i n t e r f a c ei u n k n o w n p u b l i c : v i r t u a lh r e s u l ts t d m e t h o d c a l l t y p eq u e r y i n t e r f a c e ( 木【i n 】木r e f i i dr i i d , 木 i i d _ i s o u t 幸v o i d 木木p p v o b j e c t ) 2o ; v i r t u a lu l o n gs t d m e t h o d c a l l t y p ea d d r e f ( v o i d ) = o : v i r t u a lu l o n gs t d m e t h o d c a l l t y p er e l e a s e ( v o i d ) = o : ) ; c o m 采用了引用计数”【1 5 1 技术来解决内存管理的问题,c o m 对象通过引 用计数来决定是否继续生存下去。每一个c o m 对象都记录了一个称为“引用计 数的数值,该数值的含义为有多少个有效指针在引用该c o m 对象。当客户得 到了一个指向该对象的接口指针时,引用计数值增1 ;当客户用完了该接口指针 后,引用计数减1 。当引用计数减到0 时,c o m 对象就应该把自己从内存中清 除掉。当客户程序对一个接口指针进行了复制( 可能是赋值) ,则引用计数也应该 增加,i u n k n o w n 的接口成员函数a d d r e f 和r e l e a s e 分别完成引用计数的增i 和 减1 操作。 按照c o m 规范,一个c o m 对象可以实现多个接口,客户程序可以在运行 时刻对c o m 对象的接口进行询问,如果对象实现了该接口,则对象可以提供这 样的接口服务,否则,对象就可以拒绝提供这样的服务,那么对象的多个接口之 间是如何联系起来的呢? 这就是i u n k n o w n 中的q u e r y i n t e r f a c e 函数所完成的任 务。 2 2 3 类厂 类厂就是用来创建c o m 的工厂,对应每一个c o m 类,都有一个类厂专门 用于该c o m 类的对象的创建操作。 客户程序通过在注册表中查找组件的标识符,得到组件的位置,载入组件然 后通过调用c o c r e a t e l n s t a n c e 函数就可以创建一个组件对象,而在组件内部是通 过类厂用标识符创建相应的组件对象。类厂的定义如下: 东北大学硕士学位论文第二章c o m 技术 i n t e r f a c ei c l a s s f a c t o r y :p u b l i ci u n k n o w n p u b l i c : v i r t u a lh r e s u l ts t d m e t h o d c a l l t y p ec r e a t e l n s t a n c e ( 、 i u n k n o w n 宰p u n k o u t e r , j r e f i i dr i i d , - v o i d * * p p v o b j e c t ) = o : 5 v i r t u a lh r e s u l ts t d m e t h o d c a l i ,t y p el o c k s e r v e r ( b o o lf l o c k ) = o ; ) ; 其中的c r e a t e l n s t a n c e 方法用来创建相应的c o m 对象。c o m 规范规定每一 个c o m 对象都有一个相应的类厂。类厂也是一个c o m 对象,类厂也应该有相 应的创建过程,这个过程就是通过调用d l l g & c l a s s o b j e c t 引出函数。 d l l g e t c l a s s o b j e c t 函数定义如下: h r e s u l t d l l g e t c l a s s o b j e c t ( r e f c l s i dr c l s i d ,r e f i i dr i i d ,l p v o i d 木p p v ) 所以整个c o m 组件的创建过程就是:客户发出创建指令,c o m 库接到指令 , 后,调用进程内组件的d l l g e t c l a s s o b j e c t 函数,由此函数创建类厂对象,c o m 库 : 通过类厂方法c r e a t e i n s t a n c e 仓j 建c o m 对象。 通过以上分析,可以得到如图2 4 所示c o m 对象创建过程中,客户程序、 c o m 库和进程内组件之间的顺序关系。 1 2 t , l , 东北大学硕士学位论文 第二章c o m 技术 客户程序组件程序 o 调m c o c r e a t e l n s t a n c 冶 o 一 c o m 对象 k 调用c o g e t c l a s s o b j e c t 旷1 l ,获得类厂接e l 指针 一 廷 创建对象 、一 弋 樟f 玎对费叁 衙 w 使用对象7 q u e r y i n t e r f a c e ( i i d _ i a m v f w c a p t u r e d i a l o g s ,( v o i d 宰宰) p v 细) ; i f ( s u c c e e d e d ( h r ) ) p v f w 一 r e l e a s e 0 ; r e t u r nt r u e ; ) e l s e r e t u r nf a l s e ; ) ) b o o l i s w d m c a r d ( i b a s e f i l t e r 幸p d e v i c e f i l t e r ) i a m a n a l o g v i d e o d e c o d e r * p w d m = n u l l ; h r e s u i t h r = p d e v i c e f i l t e r - q u e r y i n t e r f a c e ( i i d _ i a m a n a l o g v i d e o d e c o d e r , ( v o i d 宰宰) p w d m ) ; i f ( s u c c e e d e d ( h r ) ) p w d m 一 r e l e a s e ( ) ; r e t u r nt r u e ; ) e l s e r e t u r nf a l s e ; ) 、, 本系统通过利用d i r e c t s h o w 框架与w d m 驱动模型相结合,使得系统可以应 用不同计算机,使用不同的采集设备,具有通用性和良好的兼容性。过程如下: 3 2 i , 东北大学硕士学位论丈第四章电视播放系统的实现 创建i c r e a t e d e v e n u m 接口; c c o m p t r p d e v e n u m ; c h e c k _ h r ( p d e v e n u m c o c r e a t e l n s t a n c e ( c l s i d _ s y s t e m d e v i c e e n u m ) ) ; 使用i c r e a t e d e v e n u m 接口中的c r e a t e c l a s s e n u m e r a t o r 方法创建一个枚 举器i e n u m m o n i k e r 接口; c c o m p t r p c l a s s e n u m ; c h e c kh r ( p d e v e n u m - c r e a t e c l a s s e n u m e r a t o r ( c l s i d ,& p c l a s s e n u m ,o ) ) ; 使用i e n u m m o n i k e r 的n e x t 方法枚举设备标识i m o n i k e r ,使用i m o n i k e r 的b i n d t o s t o r a g e 方法访问设备的名字及其它属性; i m o n i k e r 幸p m o n i k e r = n u l l ; w h i l e ( p c l a s s e n u m - n e x t ( 1 ,& p m o n i k e r , & c f e t c h e d ) = = s _ o k ) c c o m p t r p p r o p b a g ; h r e s u l t h r = p m o n i k e r - b i n d t o s t o r a g e ( 0 ,0 ,i i d i p r o p e r t y b a g ,( v o i d 宰木) & p p r o p b a g ) ; c c o m v a r i a n tv a l ; c h e c k _ h r ( p p r o p b a g - r e a d ( t y p e e _ s t r ( ) ,& v a l ,0 ) ) ; t 使用i m o n i k e r 的b i n d t o o b j e c t 方法把指定的设备绑定到一个过滤器中; i b a s e f i l t e r 幸p p f i l t e r2n u l l ; h r e s u l t h r = m _ m o n i k e r l i s t i - b i n d t o o b j e c t ( 0 ,0 ,i i d _ i b a s e f i l t e r , ( v o i d 木木) p p f i l t e r ) ; 把得到的过滤器添加到图形管理器中。 4 2 2 电视接收的实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理记账劳务合同标准文本
- 三方协议代付款合同样本
- 代缴公积金合同样本
- 公司委托公司合同样本
- 公寓房源合同标准文本
- 2025中外合作生产、零部件组装合同
- 2025中小学教育服务合同范例
- 公寓项目运营管理合同样本
- 人防门施工合同标准文本
- 个人赞助合作合同标准文本
- 《幼儿园混龄民间游戏的研究》课题研究方案
- 《脊柱肿瘤》课件
- 礼仪部计划书
- H酒店品牌管理策略研究
- 物业费用测算表
- S7-200-SMART-PLC-应用教程电课件
- 无人机地形匹配导航
- 新人教版高中英语必修第二册-Unit-5THE-VIRTUAL-CHOIR精美课件
- 一身边的“雷锋”(课件)五年级下册综合实践活动
- 高考语文复习:诗歌语言鉴赏
- 工程造价司法鉴定报告案例
评论
0/150
提交评论