(电路与系统专业论文)新一代工业过程控制软件接口标准——opc开发与研究.pdf_第1页
(电路与系统专业论文)新一代工业过程控制软件接口标准——opc开发与研究.pdf_第2页
(电路与系统专业论文)新一代工业过程控制软件接口标准——opc开发与研究.pdf_第3页
(电路与系统专业论文)新一代工业过程控制软件接口标准——opc开发与研究.pdf_第4页
(电路与系统专业论文)新一代工业过程控制软件接口标准——opc开发与研究.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(电路与系统专业论文)新一代工业过程控制软件接口标准——opc开发与研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

原刨性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研 究作出重要贡献的个人和集体,均己在文中以明确方式标明。本人完 全惹识到本声明的法律责任由本人承担。 论文作者签名:j 量! 垦壁苤目期: 趁! 生: 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学校 保留或向国家有关部门或机构送交论文的复印件和电子版,允许论文 被查阅和借阅;本人授权山东大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段保 存论文和汇编本学位论文。 ( 保密论文在解密后应遵守此规定) 论文作者签名:i 垒必导师签名;趟日期: h 各。s ,2 山东大学硕士学位论文 摘要 工业过程控制规模日趋庞大,如何实现系统内部硬件设备及软件程 序之间的开放性连接,成为业界关注的首要问题。论文首先从分析传统 的过程控制系统结构和基于o p c 技术的过程控制系统结构入手,通过比 较可以看出,e 是基于o p c 的统一开放性,它可阻很好地解决传统方式 所无法解决的诸多问题。o p c 所代表的是一种全新的结构体系和思想, 具备无可比拟的优势,其必将成为新一代的工业过程控制软件标准。为 了深入地理解该技术的内涵,作者主要做了两方面的工作,一方面对o p c 标准进行了系统地分析和研究:另一方面,结合实际问题并运用该技术 开发出了一套完整的应用系统,获得了良好的预期效果,发现并解决了 些关键性的问题,从而进一步加深了对该技术的认识。 在第三章中,作者简要地介绍了o p c 的核心技术c o m d c o m 的一 些基本概念。在此基础上,引入o p c 的相关内容。o p c 采用客户机n 务器结构。支持多客户、多服务器间的连接。服务器组件由服务器、组 和项三级对象组成,各级对象之间存在着内在的逻辑关系。“接口”的统 一不变性是o p c 的实质,客户同服务器通过“接口”实现数据的交互。 第四章和第五章,作者分别从服务器和客户的角度进一步揭示o p c 的内在机制。第四章首先对系统开发采用的软硬件和系统基本组成结构 进行了介绍,在服务器程序设计中作者采用了a t l ( a c t i v et e m p l a t e l i b r a r y ,活动模板库) 框架,可以更加方便地建立快速的组件程序,在 山东大学硕士学位论文 此基础上作者又进一步提出了实现窗体风格进程外服务器的新方法,这 是本系统开发中的一个特色。然后作者深入地分析了服务器、组和项对 象的接口及其接口函数,如何通过接口来组织和管理各级对象。最后, 作者总结出开发过程中出现的若干问题并给出了可行的解决方法。 第五章侧重于对客户端的分析研究。在o p c 中,客户和服务器间的 数据传送分为同步和异步方式,作者比较了两种方式的异同,详细分析 了每种方式的机制和原理,给出了客户程序开发的一般过程。接下来, 作者探讨了如何在分布式网络环境中实现客户与服务器间的数据交互以 及如何进行网络的安全管理等问题。 陔应用系统的开发工作主要包括系统硬件设备构建和程序设计( 服 务器程序、客户程序) 两部分。本系统实现了在分布式网络环境下的应 用,同时验证了o p c 可以解决软硬件之间兼容性的问题,取得了较好的 实用效果。在论文的实验及撰写过程中,作者对o p c 的开发积累了一些 经验,通过发现和解决问题,对o p c 也有了较深的理解,为后续的开发 工作奠定了基础。 关键词:过程控制o p c ( 用于过程控制的自动化) c o m ( 组件对象模型) d c o m ( 分布式组件对象模型) 接口 山东大学硕士学位论文 a b s t r a c t t h es c a l eo fi n d u s t r i a lp r o c e s sc o n t r o li s b e c o m i n gm o r ea n dm o r e l a r g e h o wt oi m p l e m e n tt h eo p e nc o n n e c t i v i t yb e t w e e nh a r d w a r ea n d s o f t w a r ei nt h es y s t e mh a sb e c o m et h em o s tc o n c e r n e dp r o b l e mi nt h i s f i e l d t h ed i s s e r t a t i o n b e g i n s w i t h a n a l y z i n gt h e t r a d i t i o n a l p r o c e s s c o n t r o ls t r u c t u r ea n dt h eo p c - b a s e ds t r u c t u r e b yc o m p a r i s o n ,b e c a u s e o fi t so w nu n i f o r mo p e n n e s st h eo p cc a ns u c c e s s f u l l ys o l v em a n yo ft h e p r o b l e m sw h i c hc a n n o tb es o l v e di n t r a d i t i o n a lw a y o p cr e p r e s e n t sa n e wk i n do fs t r u c t u r ea n dt h o u g h t w i t hi t s i n c o m p a r a b l es u p e r i o r i t y , o p cw i l l s u r e l y b et h en e w g e n e r a t i o n o fs o f t w a r es t a n d a r df o r i n d u s t r i a lp r o c e s sc o n t r 0 1 t ou n d e r s t a n dt h ec o n n o t a t i o ni nd e p t h ,t h e a u t h o rw o r k si nt w om a i na s p e c t s o no n eh a n d ,t h ea u t h o ra n a l y z e s a n ds t u d i e st h es t a n d a r ds y s t e m a t i c a l l y o nt h eo t h e rh a n d ,t h ea u t h o r a p p l i e st h et e c h n o l o g yi n t op r a c t i c a la p p l i c a t i o n ,d e v e l o p sa ni n t e g r a t e s y s t e ma n da c h i e v e st h eg o o de x p e c t a n tr e s u l t s i nc h a p t e r3 ,t h ea u t h o rb r i e f l yi n t r o d u c e ss o m eb a s i cc o n c e p t so f c o ma n dd c o m ,w h i c ha r et h ec o r et e c h n o l o g yo fo p c a f t e rt h a t ,t h e a u t h o r e x p l a i n s w h a to p cm e a n s o p c a d o p t s t h ec i i e n t ,s e r v e r $ t r u c t u r et oc o n n e c tm u l t i - c l i e n t sw i t hm u l t i - s e r v e r s t h es e r v e r c o m p o n e n t c o n s i s t so f s e r v e r , g r o u p a n di t e m o b j e c t s ,w h i c h a r e 山东大学硕士学位论文 l o g i c a l l yr e l a t e d t h en n i f o r m i t ya n du n c h a n g e a b i e n e s so fi n t e r f a c ea r e e s s e n t i a lt oo p c w i t ht h ei n t e r f a c e ,d a t ac a nb e e x c h a n g e db e t w e e n c l i e n ta n ds e r v e r i nc h a p t e r4a n d5 ,t h ea u t h o ru n v e i l st h em e c h a n i s mo fo p ci nt h e v i e wo fs e r v e ra n dc l i e n t r e s p e c t i v e l y i nc h a p t e r4 ,t h e a u t h o r i n t r o d u c e st h es o f t w a r e ,h a r d w a r eu s e di nt h es y s t e ma sw e l la st h e f u n d a m e n t a ls t r u c t u r eo ft h e s y s t e m f i r s t i nt h es e r v e r d e s i g n ,t h e a u t h o ru s e sa t l ( a c t i v et e m p l a t el i b r a r y ) f r a m e ,w i t hw h i c hq u i c k c o m p o n e n tc a nb ee a s i l yc r e a t e d t h ea u t h o ra l s op u t sf o r w a r da n e w m e t h o do fi m p l e m e n t i n gw i n d o w - s t y l eo u t - o f - p r o c e s ss e r v e r , w h i c hi sa c h a r a c t e r i s t i co ft h e s y s t e m a n d n e x t t h ea u t h o rd i s c u s s e st h e i n t e r f a c e so ft h es e r v e r , g r o u pa n di t e mo b j e c t sa n dt h e i rf u n c t i o n si n d e t a i l s ,h o w t o m a n a g e t h e o b j e c t s a sw e l l i nt h ee n d ,t h ea u t h o r s u m m a r i z e ss o m ep r o b l e m sm e tw i t ha n dg i v e st h ef e a s i b l es o l u t i o n st o t h e m c h a p t e r5m a i n l yd e a l sw i t ht h ec l i e n t s i d e t h et r a n s m i s s i o no f d a t ab e t w e e nc l i e n ta n ds e r v e rc a nb ea c h i e v e di ns y n c h r o n o u s w a y o ri n a s y n c h r o n o u sw a y t h ea u t h o rc o m p a r e so n ew i t ht h ea u t h o r , a n a l y z e s t h em e c h a n i s ma n dp r i n c i p l eo fe a c hk i n da n do u t l i n e st h e g e n e r a l p r o c e d u r e f o rc l i e n t n e x t ,t h ea u t h o rd i s c u s s e sh o wt oe x c h a n g ed a t ai n d i s t r i b u t e dn e t w o r ka n dh o wt os a f e l ya d m i n i s t e rt h en e t w o r k t h ed e v e l o p m e n to ft h i s a p p l i c a t i o ns y s t e mi n c l u d e sm a i n l y t w o 山东大学硕士学位论文 p a r t s ,t h e c o n s t r u c t i o no fh a r d w a r ea n dt h es o f t w a r ed e s i g n ( b o t hf o r s e r v e ra n df o rc l i e n t ) t h e s y s t e m a c h i e v e st h e g o a l o fd i s t r i b u t e d a p p l i c a t i o n ,v e r i f i e st h ec o m p a t i b i l i t yo p cp r o v i d e sf o r s o f t w a r ea n d h a r d w a r ea n da c q u i r e sf a i r l yg o o dp r a c t i c a le f f e c t d u r i n gt h ec o u r s eo f e x p e r i m e n ta n dw r i t i n g ,t h ea u t h o rg e ts o m ev e r yu s e f u le x p e r i e n c e b y f i n d i n ga n ds o l v i n gp r o b l e m s ,t h ea u t h o r su n d e r s t a n d i n go fo p c h a s b e e ng r e a t l ye x t e n d e d a l lt h e s ep r o v i d et h ef o u n d a t i o nf o rs u b s e q u e n t w o r k k e y w o r d s :p r o c e s sc o n t r o lo p c ( o l ef o rp r o c e s sa n dc o n t r 0 1 ) c o m ( c o m p o n e n to b j e c tm o d e l ) d c o m ( d i s t r i b u t e dc o m p o n e n to b j e c tm o d e l ) i n t e r f a c e 山东大学硕士学位论文 符号说明 o p c ( o l e f o rp r o c e s sa n dc o n t r 0 1 ) :用予过程控制的自动化 c o m ( c o m p o n e n to b j e c tm o d e l ) :组件对象模型 d c o m ( d i s t r i b u t e dc o m p o n e n to b j e c tm o d e l ) :分布式组件对象模型 h m i ( h u m a n m a c h i n ei n t e r f a c e 】;人机接口 s c a d a ( s u p e r v i s o r yc o n t r o la n d d a t aa c q u i s i t i o n ) :数据采集监控 l a n ( l o c a la r e an e t w o r k l :局域网 c s ( c l i e n t s e r v e r ) :客户服务器模型 c o m p o n e n t :组件 o b j e c t :对象 i n t e r f a c e :接口 s e r v e r :服务器对象 g r o u p :组对象 i t e m :数据项 i n p r o c e s sc o m p o n e n t :进程内组件程序 o u t o f - p r o c e s sc o m p o n e n t :进程外组件程序 d l l ( d y n a m i c l i n kl i b r a r y ) :动态链接库 e x e :可执行程序 a t l ( a c t i v et e m p l a t el i b r a r y ) :活动模板库 p l c ( p r o g r a m m a b l el o g i cc o n t r o l l e r ) :可编程序控制器 - 8 山东大学硕士学位论文 p p i ( p o i n tt op o i n t ) :点对点协议 s y n c h r o n i z a t i o n : 同步传输 a s y n c h r o n i z a t i o n ;异步传输 山东大学硕士学位论文 第一章前言 微处理器在工业领域的广泛应用,大大提高了工厂自动化的程度, 降低了人们的劳动强度,提高了劳动生产效率。与此同时,工业过程控 制本身也发生了日新月异的变化,控制的规模日趋庞大,复杂程度不断 提高,功能也越来越强大。现在的一个实际的过程控制系统中可能包含 有成千上万个不同类型的硬件采集控制设备和相关的监控程序。如何使 它们有机协调地在一起工作,成为过程控制领域研究人员当前最为关,l = 的问题。传统的过程控制系统结构是一种单一、专有的模式,这种结构 特点带来了诸多自身无法克服的问题,不能适应过程控制发展的新要求。 因此,我们必须突破旧的模式寻求一种新的解决方法。 为了解决上述问题,许多世界领先的自动化软、硬件公司与微软公 司合作共同制订出了o p c 标准。o p c 标准是一个新的工业过程控制软件 标准,它定义了应用m i c r o s o f t 操作系统在基于p c 的客户机之间交换自 动化实时数据的方法。管理该标准的组织是o p c 基金会,其会员单位包 括了世界上几乎全部的控制系统、仪器仪表和过程控制系统的主要供应 商。o p c 标准是基于m i c r o s o f t 的c o m d c o m 技术,标准的实质内容是 定义了若干工业标准接口,使得c o m 技术适用于过程控制和制造自动 化等应用领域。o p c 技术采用客户机服务器模式,具有语言无关性、代 码重用性、易于集成性等优点。不管现场设备以何种形式存在,客户都 以统一的方式去访问,从而保证软件对客户的透明性,使得客户完全从 山东大学硕士学位论文 低层的开发中脱离出来。 正是基于o p c 的统一、开放特性,o p c 正逐渐成为事实上工业标准。 随着我国国民经济的快速发展,如何利用先进的科学技术改造传统产业, 成为日益迫切的要求。借鉴新的o p c 技术并应用到我国工业过程控制领 域中,必将具有深远的现实意义和实用价值。 本论文所引用到的文献中: 文献【1 卜【13 介绍了o p c 相关内容及其制定的各类标准。 文献【1 4 - 2 0 介绍了c o m 和d c o m 的相关内容。 文献 2 1 】- 2 3 介绍了如何使用a t l 进行组件程序的开发。 文献 2 4 - 2 8 介绍了s 7 2 0 0 系列p l c 硬件结构、电气特性及软件 编程的相关内容。 山东大学硕士学位论文 第二章0 p c 技术的产生背景 第一节传统的过程控制系统结构及其局限性 传统的过程控制系统是一种一对一的系统,任何一种人机界面 ( h m i ) 、数据采集与处理软件( s c a d a ) 等上位监控软件或其他应用 软件( 如显示软件、趋势图软件、数据报表与分析软件等) 在使用某种 硬件设备时都需要开发专用的驱动程序。如图2 1 所示: 图2 1 传统的过程控制系统结构 系统构建完成后的最终结果是 ( a ) 每种软件要使用n 类硬件设备需要开发n 个驱动程序: ( b ) m 类软件要使用n 类硬件设备需要开发m + n 个驱动程序 ( c ) 每增加一个新的应用软件需要另外开发n 个硬件设备的驱动程序 ( d ) 每增加一个新的硬件设备需要为m 个软件开发新的硬件设备驱动程 序: 山东大学硕士学位论文 在上图所示的例子中,针对4 种硬件设备所完成的3 个应用系统一 共需要开发3 4 = 1 2 种驱动程序。实际的过程控制系统可能包含有上千个 不同类型的硬件设备和不同的应用软件,每种应用软件为了同底层的硬 件设备进行通信,需要为每一硬件设备开发“专用”的驱动程序,新增 应用软件或者硬件设备带来的只会是驱动程序种类和数量的迅速增长。 对于开发典型监控程序软件的技术人员来说,有2 0 3 0 的时间是用在 编写通信驱动程序耗费了相当多的精力在做一些大量的重复性工作。 另外,并不是所有的应用软件开发人员都能获得关于硬件设各完整的第 一手资料,硬件设备的性能无法得到广泛的支持,导致了不同设备供应 商的驱动程序之间的不一致;原有的驱动程序无法适应升级后的硬件设 备,这就要求应用软件不得不为升级后的硬件设备重新开发新的驱动程 序;两个应用软件因为使用相互独立的驱动程序,因而通常不能同时访 问同样的设备,可能会发生存取冲突。 应用软件的提供者花费太多的资金开发和维护专用接口,这不仅增 加了用户的负担,而且在实际上并不能真正解决不同系统的互操作性。 在某种意义上,用户被他们的软件的提供者所控制。 采用传统的过程控制系统结构将不可避免地导致系统的低开放性和 互操作性。这个问题已经变得比连接不同的操作系统的网络所遇到的问 题更尖锐。解决这个问题的关键在于给出一个标准,这个标准将为过程 控制和工厂自动化提供真正的即插即用软件技术,使得过程控制和工厂 自动化的每一系统、每一设备、每一驱动器能够自由地连结和通信。有 了这样一个标准,使得系统及设备之间,包括从车间级到m i s ( 管理信 山东大学硕士学位论文 息系统) 和更远距离,完全无缝地、真正开放和方便地进行企业级的通 信成为可能。o p c 技术就是在这种背景下产生的一种标准。 第二节基于o p c 技术的过程控制系统结构解决方案 基于o p c 技术的过程控制系统则可以完美地解决传统方式的上述问 题。其基本系统结构如图2 2 所示 图2 2 基于o p c 技术的过程控制系统结构 任何一种设备只需要提供一种驱动就可以供任何软件系统使用,系 统构建完成后的最终结果是: ( a ) m 类软件要使用n 类硬件设备只需要开发n 个驱动程序 ( b ) 每增加1 个新的应用软件不需要另外开发硬件设备的驱动程序 ( c ) 每增加1 个新的硬件设备只需要开发1 个新的设备驱动程序 在上图所示的例子中,针对4 种控制设备所完成的3 个应用系统一 共仅需要开发4 种驱动程序。新增应用软件或者硬件设备可以轻松地扩 展系统。o p c 技术为硬件设备( 实际上是指硬件设备的驱动程序) 和上 山东大学硕士学位论文 位应用软件之间的数据通信定义了一系列规范的接口标准,基于这样的 标准,任何应用软件可蚍从任何的底层硬件设备读写数据。我们通常把 符合o p c 规范的设备驱动程序成为o p c 服务器( o p cs e r v e r ) ,而将符 合o p c 规范的应用软件统称为o p c 客户( o p cc l i e n t ) 。o p c 所提供的 接口标准事实上是一种“软件接口标准”或“软件总线”,它明确定义了 服务器端同客户端之间的通信机制,是连接服务器端固客户端的桥梁和 纽带。这样,我们可以自由选择最符合我们实际要求的软、硬件产品 然后将它们像“搭积木”一样组合在一起进行无缝地工作,这一切都来 源于o p c 所提供的强大互操作性的特点,对此我们可以作一个形象的比 喻:尽管家用电器的种类繁多,但它们的电源插头与插座却是统一的。 接下来,我们再分析一下o p c 技术是如何解决传统方式所不能解决 的其他问题的。设备制造商掌握了关于硬件设备的完整资料,由他们负 责提供符合o p c 规范的服务器程序( 即设备驱动程序) ,而应用软件开 发者只需按照规范要求较方便地开发客户通信程序即可,他们不用关,t l , 具体是在和哪种设备打交道,因为客户程序直接面向的是服务器程序, 客户对设备的访问通过服务器问接完成。这样,不仅硬件设备的性能得 到了最广泛的支持,而且将软件开发者从开发设备驱动程序中解放出来, 可以将更多的精力投入到为软件增加新的功能上。当硬件功能升级后, 由于接口的“不变性”( 详见下章) ,硬件厂商只需重新开发一次服务器 程序,而原有的客户程序不需要做任何的改动就可实现同新的服务器程 序的通信,从而适应升级后的设备。另外,因为真正的控制设备的是服 务器程序,当发生多个客户同时对统一设备的访问时,由服务器协调处 山东大学硕士学位论文 理,避免了存取冲突的发生。当然,o p c 技术所具备的优势不仅如此 我们将在以后的各章中详细介绍。 综上所述,传统方式下的数据采集方式和基于o p c 技术的数据采集 方式的根本区别在于后者引入了“接口”的概念,在思维上突破了原有 日模式的限制,所代表的是一种新的结构体系和思想。因为o p c 技术所 具备的无法比拟的优势,它越来越普遍的被应用到工业过程控制中,受 到越来越多的人们的重视和认可,o p c 技术代表了新的发展方向,正成 为新一代的工业过程控制软件接口标准。 山东大学硕士学位论文 第三章c o m 与0 p c 介绍 o p c 技术的核心是微软( m i c r o s o f t ) 的c o m d c o m ( 组件对象模型 分布式组件对象模型) 技术。本章首先介绍c o m d c o m 的一些基本概 念,在此基础上引出o p c 规范中相关的内容。有关c o m d c o m 的内容 请参阅文献【1 4 2 0 】,o p c 规范及其各类标准见文献 1 卜【13 。 第一节c o m 组件、对象和接口 从软件模型角度出发,一个复杂的应用程序设计时往往被划分为多 个模块,每一个模块可独立地完成一定的功能,每个模块可以单独开发、 编译和调试当所有的模块开发完成后,我们可将它们组合在一起构成 完整的应用程序,模块间的协同工作通过相互之间的接口来完成,我们 把这样的模块成为“组件( c o m p o n e n t ) ”。这种组件化软件结构既不同于 结构化程序设计,也不同于面向对象程序设计,它是从全局的角度来考 虑问题,但具体到某个组件或模块设计时,我们仍需借助于结构化程序 设计或面向对象程序设计。对于c o m 来说,我们可以理解为:c o m = 组 件化软件结构+ 面向对象程序设计。 我们知道,在面向对象程序设计语言c + + 中,对象是类的实例,使 用对象的应用成为客户。类是一种复合的数据类型,具有数据成员( d a t a m e m b e r ) 和成员函数( m e m b e rf u n e t i o n ) ,类似于类的概念,c o m 对象 也包括属性和方法,而c o m 对象所提供的方法被称为“接口”。c o m 组 山东大学硕士学位论文 件提供给客户的是以对象的形式封装起来的实体,客户程序与c o m 组 件进行交互的实体是c o m 对象,它以接口的形式暴露给客户,客户必 须通过接1 2 1 才能获得对象的服务。图3 1 给出了c o m 组件、c o m 对象、 c o m 接口和客户之间的关系,其中一个c o m 组件可以包含多个c o m 对象,并且每个c o m 对象可以实现多个接1 2 1 。 印固 乒d i 毕口2 护m 客户器序 图3 1c o m 组件、c o m 对象、c o m 接口和客户之间的关系 类似于t c p i p 网络协议中计算机采用3 2 位i p 地址标识的方法 c o m 对象和接口分别采用1 2 8 位全局唯一标识符( g u i d ,g l o b a l l y u n i q u ei d e n t i f i e r ) 来标识各自的c l s i d 和l i d ,这样做的目的是为了便 于实现在分布式环境下数据的通信。 为了更深入地理解c o m 对象和接口的概念,下面给出c + + 定义形 式: c l a s si u n k o w n p u b l i c : v i r t u a lh r e s u l t s t d c a l lq u e r y i n t e r f a c e ( c o n s t l i d & i i d v o i d + + p p v ) = o : 山东大学硕士学位论文 v i r t u a lu l o n g s t d e a l la d d r e f 0 2 0 ; v i r t u a lu l o n g s t d c a l lr e l e a s e ( ) 2 0 c l a s si x :p u b l i ci u n k o w n p u b l i c v i r t u a lv o i df x 1 ( ) - o ; v i r t u a lv o i df x 2 0 = 0 : c l a s si y :p u b l i ci u n k o w n p u b l i c v i r t u a lv o i df y 1 ( ) = 0 v i r t u a lv o i dv y 2 0 = 0 c l a s sc a :p u b l i ci x , p u b l i ci y p r i v a t e : i n tm r e f ; p u b l i c : 1 9 山东大学硕士学位论文 v i r t u a lv o i df x l ( ) ) v i r t u a lv o i df x 2 0 ) v i r t u a lv o i df y l ( ) ) v i r t u a lv o i df y l ( ) c a o m r e f = o ) v i r t u a lh r e s u l t q u e r y i n t e r f a c e ( ( c o n s tl i d & i i d ,v o i d ”p p v ) i f ( i i d = = l i d i u n k n o w ) + p p v 2 ( i x + ) t h i s ; ( ( i x + ) ( + p p v ) ) 一 a d d r e f ( ) ) e l s ei f ( i i d = = l i d i x ) + p p v = ( i x + ) t h i s ; ( ( i x + ) ( p p v ) ) a d d r e f 0 ; e l s ei f ( i i d = = i i d i y ) + p p v = ( i y + ) t h i s ( ( i y + ) ( + p p v ) ) 一 a d d r e f ( ) ) e l s e + p p v = n u l l ; 2 0 山东大学硕士学位论文 r e t u r ne n o i n t e r f a c e r e t u r ns0 k : v i r t u a lu l o n g a d d r e f o m r e f + + ; r e t u r n ( u l o n g ) m r e f v i r t u a lu l o n g r e l e a s e ( ) m r e f - 一; i f ( m r e f _ 。0 ) d e l e t et h i s r e t u r no : ) r e t u r n ( u l o n g ) m r e f ; 在上面的例子中首先定义了i x 和i y 两个接口,每个接口都必须从 接口i u n k n o w n 继承而来,这种继承可以是直接的或间接的,但必须保 2 l - 山东大学硕士学位论文 证这种继承关系是单重的。接口中定义的方法都是纯虚方法,只描述了 接口具有哪些方法,而没有说明方法是如何具体实现的。c o m 对象c a 中包含i x 、i y 和i u n k o w n 3 个接口,在对象c a 内具体实现了接口的方 法。其中,i u n k n o w n 是类特殊的接口,它包括q u e r y i n t e r f a c e 、a d d r e f 和r e l e a s e 3 种方法,q u e r y i n t e r f a c e 方法负责接口的查询,通过调用该方 法我们就可以找到l i d 参数所指定的接口。a d d r e f 和r e l e a s e 方法是负 责管理c o m 对象的生存期的,c a 对象的数据成员i t i r e f 负责记录当前 有多少个有效指针在引用该对象,当客户得到了一个指向该对象的接口 指针时,调用a d d r e f 方法1 1 1 一r e f 增l ;当客户用完了该接口指针后,调 用r e l e a s e 方法m r e f 减1 ;当应用计数i t i r e f 减到0 时,c o m 对象把 自己从内存中清除掉。c o m 就是采用对象一级的引用技术方案控制对象 和组件的生存周期的。我们前面提到c o m 对象以接口的形式暴露给客 户,客户通过接口来完成楣应方法的调用。事实上,客户所获得的是 指向接口的指针,该指针指向接口函数表( 或称为虚函数表) 。图3 2 详 细描述了接口的结构。 p v l , a b l et a b l e , 、 l 接口指针卜l 指针卜+ 指针函数1 卜 对 指针函数z 1 象 指针函数3 实 现 指针函蔹4 图3 2 接口的结构 2 2 山东大学硕士学位论文 接口是组件客户程序和组件对象之间的桥梁,接口如果经常发生变 化,则客户程序和组件程序也要跟着变化,这对于应用系统的开发非常 不利,也不符合组件化程序设计思想。因此,接口应该保持不变,只要 客户程序和组件程序都按照既定的接口设计进行开发,就可以保证在两 者独立开发结束后,它们的协作能力能达到预期的效果。c o m 接口的不 变性并不意味着接口不再发展,当接口的功能需要扩展时,我们可以在 原有的基础上重新定义一个新的接口加入到c o m 对象中去,c o m 对象 就同时具备了新、老两种接口,原有的客户程序仍然可以同新的组件程 序进行通信,不会受到任何的影响。接口的这种不变特性是组件化程序 设计的关键。 第二节客户、服务器结构 c o m 采用的是客户、服务器结构模型。组件程序主要向客户程序提 供服务,因此我们把组件程序一方称为服务器端,而把客户程序称作客 户端。有时客户程序也可以反过来向组件程序提供服务,或者组件程序 本身也需要其他组件程序提供服务,在这样的情况下,个组件程序可 能既是服务器也是客户,所以客户和服务器的定义是相对的而非绝对的。 这种客户,服务器结构模型的优点是稳定可靠、利于软件的扩展、利于性 能的提高和便于网络实现。 我们知道,进程是一个正在运行的程序,由单独的内存地址空间和 自己的一些系统资源。在w i n d o w s 系统平台上,按照服务器同客户进程 - 2 3 - 山东大学硕士学位论文 间的关系,可以将服务器程序划分为进程内( i n p r o c e s s ) 和进程外 ( o u t o f - p r o c e s s ) 服务器。当客户程序和组件程序运行在同一个进程空 间中,我们把这种组件程序称为进程内组件,进程内组件程序的形式是 动态链接库d l l 文件( d y n a m i cl i n kl i b r a r y ) 。因为c o m 组件运行在 客户程序的进程中,客户程序与组件程序之间通过直接函数调用的方法 进行交互,所以运行效率很高;另一方面,组件程序中的严重错误有可 能引起客户进程的崩溃,因此组件程序要对客户程序的稳定性负责。 当客户程序和组件程序运行在不同的进程空间中,我们把这种组件 程序称为进程外组件,进程外组件程序的形式是可执行程序e x e 文件。 显而易见,进程外组件的运行效率比进程内组件的效率低,但是进程外 组件的严重错误不会引起客户程序的崩溃,这一点确保了跨进程间程序 通信的稳定可靠,这要优于进程内组件。 接下来我们具体分析一下处于不同进程的组件程序和客户程序之间 的通信是怎样实现的。 组件进程 客户进程i 组件对象l : 代理对象 存根m 工 图3 3 进程外组件程序同客户程序之间的通信 如图3 3 所示,在客户程序一方有一个代理d l l ( p r o x yd l l ) ,组 山东大学硕士学位论文 件程序一方则对应有一个存根d l l ( s t u bd l l ) 。客户程序只与同一进 程内的代理对象打交道,组件程序也只与同一进程内的存根d l l 打交道 不同进程间的通信事实上是通过代理对象和存根d l l 之问进行,它们之 间的通信采用的是本地过程调用( l o c a lp r o c e d u r ec a l l ,l p c ) 或远过程 调用( r e m o t ep r o c e d u r ec a l l ,r p c ) 机制。l p c 和r p c 的原理相同 不同之处在于l p c 用于同一机器上的不同进程问的通信,而r p c 用于不 同机器上不同进程之间的通信。客户程序同组件程序的通信可以这样来 描述:客户程序调用代理d l l 的接口成员函数,代理对象通过l p c 或 r p c 调用组件程序的存根d l l ,组件程序的存根d l l 调用组件对象的接 口成员函数,当组件对象完成服务后,通过存根d l l 由l p c 或r p c 向 代理对象返回结果最后再由代理对象将最终结果返回给客户程序。代 理对象和存根d l l 之间的l p c 或r p c 调用是双向的。方将参数以及 其他些调用信息组装成个数据包传递给另一方。这一过程称为参数 列集( m a r s h a l i n g ) ;另一方将接受到的数据包进行解包操作。把参数信 息提取出来,这一过程称为散集( u n m a r s h a l i n g ) 。列集和散集的实现完 全建立在操作系统所提供的l p c 和r p c 模块的基础上,不需要开发人员 去考虑底层细节是如何具体实现的,从而大大简化了开发的过程。 第三节c o i l 组件的注册和管理 随着c o m 组件种类和数量的增多,如何才能有效地组织和管理 c o m 组件变得十分重要。一种可行的解决方案是将c o m 组件的相关信 山东大学硕士学位论文 息存放在w i n d o w s 的注册表中。在w i n d o w s 中,注册表示一个二进制的 树形结构。是操作系统的一个正式的共享数据库,注册表中包含了系统 中的硬件、软件配簧以及用户的各种信息。注册表示一个由许多元素构 成的层次结构。每一个元素被称作一个“键”,每一个键可以包含一系列 的子键一系列命名的键值及或一个未命名的键值( 缺省值) 。子键也 可以包含其他的子键及键值,但键值却不能有子键或键值。每一个键值 都有其相应的类型,大多数情况下,键值都是字符串。 前面我们提到每一个c o m 对象都有一个1 2 8 位的二进制数c l s i d 与其唯一对应。在注册表中的h k e y c l a s s e s r o o t c l s i d t 存放了 当前机器上所有的已注册组件对象的相关信息。在这些信息中,我们最 为关心的是某一特定组件对象所在组件程序的位置。对于进程内组件来 说,在c l s i d 子键下的i n p r o e s e r v e r 3 2 子键下指明了进程内组件程序的 路径。对于组件外程序来说,进程外组件程序所在的位置则由另一子键 l o c a l s e r v e r 3 2 指明。这样,只要客户程序获得了组件对象的c l s i d 值, 由c o m 库通过查找注册表找到匹配的c l s i d ,就可以快速她确定组件 程序所在的具体位置,从而建立同该组件程序的通信。只要组件程序被 注册到注册表中,组件程序可以位于系统的任何一个目录下,不一定与 客户程序放在同一目录下,这说明了c o m 组件具有“位置透明”的特 性。 在实际应用中,为了将c o m 组件的信息注册到注册表中,我们可 以直接编辑注册表,把c o m 组件的相关信息添加进去,也可以在组件 程序内添加自动注册的功能,这种组件程序称为自注册组件程序。在组 山东大学硕士学位论文 件程序的所处位置发生变化后,要重新为组件程序注册。注销组件的过 程同注册正好相反,是把注册表中关于该组件的信息删除掉

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论