




已阅读5页,还剩69页未读, 继续免费阅读
(计算机应用技术专业论文)联通营业自动化系统的设计和实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着通信行业的蓬勃发展,通信业务的迅速扩大,通信营业系统自动化、电 子化程度越来越高,要求采用更科学、更迅速、更准确地采集和处理客户信息; 更加有效的使用各种资源。 本文所介绍的联通营业自动化系统正是基于以上问题所提出。首先,本系统 采用专用技术和通信运营商已有系统无缝集成,不修改现有营帐系统、不影响营 帐系统使用安全、不改变现有营帐系统的使用习惯;其次,支持对多种证件的自 动扫描识别,能够自动填写营业账单,大大缩短了通信运营商前台客服人员业务 办理时间,提高了工作效率,并杜绝了以前可能存在的错误填单的不足;大大简 化业务的办理难度,降低业务办理的劳动强度和出错机率;最后,基于卡、号、 套餐完全分离的选号技术,提高了手机号码、s i m 卡的利用率。 本文在分析当前联通营业厅业务办理流程的基础上,阐述了系统实现需要解 决的主要问题;对系统整体进行了概要描述,对需求分析和系统架构设计的方法 进行了阐述,同时对系统实现过程中的关键问题给出了具体的技术和方法。 本系统以w i n d o w s 为开发平台,采用c o m 、b h o 、a d o 和i o c p 等技术建 立了一个集营业厅自动填单、手机选号和后台数据管理于一体的综合自动化系统。 本系统强调完整而规范的软件开发过程,按照需求分析,系统设计到实现和测试 的步骤,所以系统具有很好的灵活性、稳定性和扩展性。 关键词:完成端口,c o m ,b h o ,a d o a b s t r a c t a b s t r a c t w i t ht h e r a p i dd e v e l o p m e n t o fc o m m u n i c a t i o ni n d u s t r y ,t h es c a l eo f c o m m u n i c a t i o nb u s i n e s se n l a r g e sr a p i d l y t h ed e g r e eo fa u t o m a t i o na n de l e c t r o n i co f c o m m u n i c a t i o nb u s i n e s si n c r e a s e sc o n t i n u a l l y t h ec u s t o mi n f o r m a t i o ns h o u l db e c o l l e c t e da n dd e a l e d 谢t hm o r es c i e n t i f i c a l l y , m o r er a p i d l ya n dm o ee x a c t l y t h eb u s i n e s sa u t o m a t i o n s y s t e mo fu n i c o r n i nt h i s p a p e rh a s s e v e r a l c h a r a c t e r i s t i c s f i r s t , t h es y s t e mu s i n gp r o p r i e t a r yt e c h n i c a li n t e r g r a t e s 、以t he x i s t i n g s y s t e ms e a m l e s s i td on o tc h a n g et h ee x i s t i n gs y s t e m ,d on o t a f f e c tt h es e c u r i t yo f e x i s t i n gs y s t e m ,d on o tc h a n g et h eo p e r a t eh a b i t s e c o n d , b ys u p p o r t i n gt os c a ns e v e r a l i dc a r da n df i l lt h ei n f o r m a t i o no fi dc a r di n t 0b i l l i tc u tt h eb u s i n e s st i m e r e m a r k a b l e l y , r a i s et h ew o r ke f f i c i e n c ya n dp u t a l le n dt oe l t o ri nf i l l i n gb i l lw i t hh a n d i t c o u l dp r e d i g e s tt h ed i f f i c u l to f b u s i n e s sd r a m a t i c a l l y , c o u l dr e d u c et h ew o r ki n t e n s i o ni n b u s i n e s st r a n s a c t i o na n dt h ep r o b a b i l i t yo fm a k i n gf a u l t l a s t ,b a s e do nt h et e c h n i c a lo f s e l e c ts i mc a r da n dp h o n en u m b e rs e p a r a t e l y , i tc o u l dr a i s ee f f i c i e n c yo ft h es i mc a r d a n d p h o n en u m b e ra n dc o u l d r e l i e v et h ep r o b l e mo fs c a r i c i t yo f p h o n en u m b e r u n d e rt h ef o u n d a t i o no ft h ea n a n l y s i n gt h ef l o wo fb u s i n e s st r a n s a c t i o n , t h ep a p e r e x p a t i a t et h ep r o b l e ms h o u lb er e s o v l e di ni m p l e m e n t i n gs y s t e m t h ep a p e rb r i e f l y d e s c r i b e dt h es t r u c t u r eo fs y s t e m , e x p a t i a t et h en e e da n a l y s i sa n dt h em e t h o do f d e s i g n i n gt h es t r u c t u r eo fas y s t e m ,a n di tg i v e su st h em e t h o d so f h o w t or e l i z et h ek e yp r o b l e m t h es y s t e mi sb a s e do nt h em i c r o s o f t sw i n d o w ss t r u c t u r e ri n t e r g r a t e sw i t ht h e f u n c t i o n so ff i l l i n gb i l l a u t o m a t i o n , s e l e c t i n gp h o n en u m b e ra n db a c k g r o u n dd a t a m a n a g e m e n tb yu s i n gt h et e c h n i c a ll i k ec o m ,b h o , a d o ,i o c p t te m p h a s i z e st h ef u l l a n dn o r m a t i v es o f t w a r ed e v e l o p m e n tp r o c e s sa c c o r d i n gt ot h es t e p so fr e q u i r e m e n t s a n a l y s i s ,s y s t e md e s i g n a t i o n , r e a l i z a t i o na n dt r i a l s ot h e s y s t e m h a s 9 0 0 d c h a r a c t e r i s t i c sl i k ea g i l i t y , s t a b i l i t ya n de a s ya n de x p a n d a b i l i t y k e y w o r d s :i o c p ,c o m ,b h o ,a d o i i 主要符号表 主要符号表 a d oa c t i v ed a t ao b j e c t b h ob r o w s e rh e l po b j e c t a p i a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e c o m c o m p o n e n to b j e c tm o d e l i o c pi 0c o m p l e t i o np o r t b ab u s i n e s sa u t o m a t i o n m b am o b i l eb u s i n e s sa u t o m a t i o n g u i g r a p h i cu s e ri n t e r f a c e m d i m u l t i p l ed o c u m e n ti n t e r f a c e i i si n t e m e ti n f o r m a t i o ns e r v e r i si n t e r m e d i a t el a n g u a g e s d i s i n g l ed o c u m e n ti n t e r f a c e u m lu n i f i e dm o d e l i n gl a n g u a g e v i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明 确的说明并表示谢意。 签名:羔鍪牡日期:c 吵年占月尹日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:宣。室盘 导师签名: 日期: 砷年 l 6 月9 日 l 第一章绪论 1 1 系统开发背景 第一章绪论 随着通信技术的向前发展,通信行业已经走进人们的日常生活中,是日常生 活的必备消费项目,也是推动社会进步,加快信息化交流的快捷平台。通信行业 的发展带动了各行业的进一步发展,也是人们工作、生活、学习、交流的必备工 具,每年各大运营商都会有成千上万的新客户增加,说明通信市场远远没有达到 饱和,市场前景十分看好,市场挖掘还有很长的路要走,如何维系挽留老客户, 是运营商立足之本,如何发展新客户才是运营商发展之路。 第一,必须抓住客户群的心理,通过大量的数据分析和市场调查,价格、服 务都是客户关心的问题,如何给客户推荐一个真正适合他要求的资费标准,让他 使用起来物有所值,如何让服务更为方便快捷,给客户提供一套优质的服务,如 上门办理业务、随时提供公司最新活动、随时反映意见和建议等等。这些都是客 户所迫切需要的。 第二,必须拓宽市场面,加强销售渠道的建设。目前,销售渠道建设是一个 长期的过程,资金的投入十分庞大,这是制约运营商销售渠道建设的一个瓶颈, 没有一个完善的销售渠道,就不可能发展更多的新客户,客户也了解不到公司的 政策。目前中国移动、中国联通都投入了数以万计的资金加强销售渠道的建设, 其建设速度远远赶不上客户的需求,渠道的建设已迫在眉睫了,如何快速地建设 销售渠道,如何低成本建设销售渠道,给我们提出了一个全新地研究课题。 第三,必须加强销售渠道的管理,通信行业的销售渠道总体来说是比较松散 的,小的代理点繁多、偏远,结构复杂,很难利用人工去跟踪和统计各项数据, 销售情况无法及时上报,客户意见和建议无法反馈,直接导致运营商在产品市场 定位上出现较大地偏差,很多时候推出的新产品、新方案与市场结合不紧密,大 大地影响产品在市场上的销售。运营商制定的新政策也不能及时传达到销售第一 前线,通过各级代理的层层转达,时间浪费非常严重,也会出现信息、政策层层 失真,严重影响了产品销售。 第四,增加和提高代理商、渠道商的信心和积极性,代理商、渠道商是销售 产品的主要力量,在当前销售模式下,代理商或渠道商需要先购买已配置好的大 电子科技大学硕士学位论文 量号卡,由于号码和套餐已与卡号配置,不能更改,在多数情况下,这些号卡因 为号码或套餐的原因会造成积压,且这些号卡不能退回,因此对代理商或渠道商 的积极性和信心有较大影响。 1 2 现状分析 目前通信行业竞争激烈,如何发展更多的客户,是各通信运营商当务之急,特 别是移动通信行业竞争更加激烈。通过大量的销售数据分析,移动通信行业发展的 新客户8 0 都是通过客户经理和零售渠道进行销售的,如何加强客户经理和零售渠 道管理,提升客户经理和零售渠道的销售能力和服务水平是提升运营商整体销售业 绩和服务水平的重要环节,客户经理和零售渠道在销售中起到至关重要的作用,加 强客户经理和零售渠道的管理也是各大运营商在抢占市场份额运用的手段。 现有客户经理和零售渠道商在管理上和规范上十分薄弱,客户经理在销售中的 业务流程是客户经理备齐预登录卡后,到客户处进行销售,客户经理完成销售后, 填写入网登记表,让用户签字并签订相关协议,收取用户证件复印件。客户经理亲 自回公司交付客户资料及款项【3 4 1 。这样会造成客户经理在完成销售后,花费了大 量的资料填写时间,当遇到大型集团但以个人名义入网时表现尤为突出,客户资料 填写、证件复印非常困难。客户经理各卡数量有限,客户选择余地小,业务谈判缺 少灵活性,不易成功。 零售渠道商在销售中的业务流程是零售渠道商向代理商买断号卡后,等客户上 门咨询购买,实现销售。零售渠道商完成销售后,填写入网登记表,让用户签字并 签订相关协议,收取用户证件复印件,定期带回分公司,分公司资料录入人员审核 录入客户资料,这样会造成零售渠道商收集客户资料、将客户资料带回分公司、分 公司专人实施审核录入的流程环节多、零售渠道商经办人员业务素质不高、设备条 件差,造成业务办理时间长、客户资料填写困难、资料差错多,证件复印难等问题。 由于号码、套餐和卡号已配置完好,因此零售渠道商各卡数量有限,客户选择余地 小,仅可以按渠道商所提供的号码及套餐进行选择,难以满足客户合理需求,不易 销售成功。公司营销政策繁多,零售渠道经办人员业务知识有限,经办人员推荐方 式不当时,客户容易出理解性差错,也会给日后客户的维系服务工作带来困难。 2 第一章绪论 1 3 本文的主要工作 针对通信业务的迅速扩大,通信营业自动化、电子化程度要求越来越高的现 状,以提升营业效果、方便客户办理、缩短客户等待时间为目标,以提高营业效 率、减少营业差错为出发点,提出营业系统自动化思路,研制设计了营业自动化 系统。本系统必须与联通现有营账系统无缝连接,以保证不改变现有操作习惯, 不影响现有系统的安全。由此可见,联通现有业务逻辑也是研究内容的一部分。 由于联通业务逻辑固有的复杂性和易变性,系统除了稳定性,还必须有很高的灵 活性和可扩充性。本课题的主要任务包括如下内容: 1 研究c o m ,b h o ,s o c k e t ,a d o 等应用开发技术和基于组件的软件开发 模式; 2 研究基于完成端口的大容量服务器的设计与实现; 3 在以上理论的基础上完成对营业自动化系统的设计和实现。 4 :_ t 采用软件测试v 模型对营业自动化系统的测试 本文总结了在实际的开发过程中对各项技术进行的研究,并在此基础上对中 国联通成都分公司营业自动化系统实现过程的各个阶段进行了详细的描述。本文 的组织结构如下: 第一章是绪论,介绍了课题的研究背景、现状和意义,以及课题解决的主要 问题和论文结构。 第二章介绍了c o m 技术,包括c o m 原理和一套能够快速的开发出高效、 简洁代码的模板库a = r l ;b h o 原理,包括如何构建b h o 对象以及b h o 对象如 何与正进行通讯。 第三章分析了联通营业自动化系统的总体设计,包括系统的硬件结构和软件 结构、系统的开发和运行环境、软件的开发模式和系统的主要功能模块的化分。 第四章主要讲述了联通营业自动化系统的详细设计与实现,详细介绍了选号 功能和通信服务器的实现方法,以及数据库表和通信协议的设计。 第五章讲述了采用软件测试v 模型对营业自动化系统的测试用例以及相关测 试数据。 最后对论文工作进行了总结,简要描述了论文的成果,并提出了论文存在的 不足之处以及以后的研究方向。 电子科技大学硕士学位论文 第二章c o m 及b h o 原理 2 1c o m 原理及a t l 2 1 1c o m 原理 c o m 是由m i c r o s o f t 提出的组件标准,它不仅定义了组件程序之间进行交互 的规范,并且也提供了组件程序运行所需的环境。在c o m 标准中,一个组件程序 也被称为一个模块它可以是一个动态连接库,被称作进程内组件( i n - p r o c e s s c o m p o n e n t ) ;也可以是一个可执行程序( 即e x e 程序) ,被称作进程外组件 ( o u t - p r o c e s sc o m p o n e n t ) t 2 1 。 c o m 是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用一 种统一的方式进行交互。c o m 既提供了组件之间进行交互的规范,也提供了实现 交互的环境,因为组件对象之间交互的规范不依赖于任何特定的语言,所以c o m 也可以是不同语言协作开发的一种标准。 c o m 标准包括规范和实现两大部分,规范部分定义了组件和组件之间通信的 机制,这些规范不依赖于任何特定的语言和操作系统。只要按照此规范,任何语 言都可使用。c o m 标准的实现部分,是c o m 库,c o m 库为c o m 规范的具体实 现提供了一些核心服务【3 】。 2 1 1 1 c o m 规范 1 、c o m 对象 c o m 提供的是面向对象的组件模型8 1 ,c o m 组件提供给客户的是以对象形式 封装起来的实体,客户程序与c o m 组件程序进行交互的实体是c o m 对象,它并 不关心组件模块的名称和位置( 即位置透明性) ,但是必须知道自己在与哪个c o m 对象进行交互;为了保证c o m 对象标识的唯一性,c o m 规范采用了1 2 8 位全局 唯一标识符g u i d 。 类似于c c + + 语言中类( c l a s s ) 的概念【3 3 】,c o m 对象也包括属性( 也称为状态) 和方法( 也称为操作) ,对象的状态反映了对象的存在,也是区别于其他对象的要素; 而对象所提供的方法就是对象提供给外界的接口,客户必须通过接口才能获得对 象的服务,对于c o m 对象来说,接口是它与外界进行交互的唯一途径。因此,封 4 第二章c o m 及b h o 原理 装特性是c o m 对象的基本特征。 2 、c o m 接口 从技术上讲,接口是包含了一组函数的数据结构,通过这组数据结构,客户 代码可以调用组件对象的功能。接口定义了一组成员函数,这组成员函数是组件 对象暴露出来的所有信息,客户程序利用这些函数获得组件对象的服务。 客户程序用一个指向接口数据结构的指针来调用接口成员函数,如2 1 所示, 接口指针实际上又指向另一个指针,这第二个指针指向一组函数,称为接口函数 表,接口函数表中每一项为4 个字节长的函数指针,每个函数指针与对象的具体 实现连接起来。通过这种方式,客户只要获得了接口指针,就可调用到对象的实 际功能【1 1 】。 p v t a b l e v t a b l e i 接口指针 - j 垃n 始外 指针函数1毛i - 4 了日节l 指针函数2 对象实现 指针函数3 图2 1 接口结构 c o m 规范在采用o s f 的d c e 规范的描述远程接口i d l ( i n t e r f a c e d e s c r i p t i o n l a n g u a g e ,接口描述语言) 的基础上,进行扩展形成了c o m 接口的描述语言。它 提供了一种不依赖于任何语言的接口描述方法,因此,它可以成为组件程序和客 户程序之间的共同语言。 因为接口被用于组件程序和客户程序之间的通信桥梁,所以接口应具有不变 性,一个c o m 对象可以支持很多个接口。类似于c o m 对象的标识方法,c o m 接口也采用了一个全局标识符,被称为接口标识符( i d ,i n t e r f a c ei d e n t i f i e r ) 。客 户程序通过接口标识符,就可以使用c o m 对象相应的接口。 接口特点: 1 ) 二进制特性 接口规范并不建立在任何编程语言的基础上,而是规定了二进制一级的标准。 任何语言只要有足够的数据表达能力,它就可以对接口进行描述,从而可以用于 与组件程序有关的应用开发。 电子科技大学硕士学位论文 2 ) 接口不变性 接口是组件客户程序和组件对象之间的桥梁,接口如果经常发生变化,则客 户程序和组件程序也要跟着变化,这对于应用系统的开发非常不利,也不符合组 件化程序设计的思想,因此,接口应该保持不变,只要客户程序和组件程序都按 照既定的接口设计进行开发,则可以保证在两者独立开发结束后,它们的协作运 行能力能达到预期的效果。 3 ) 继承性( 扩展性) c o m 接口具有不变性,但不变性并不意味着接口不再发展,随着应用系统和 组件程序的发展,接口也需要发展。类似于c + + 中类的继承性,接口也可以继承 发展,但接口继承与类继承不同。首先类继承不仅是说明继承,也是实现继承。 既派生类可以继承基类的函数实现,而接口继承只是说明继,即派生的接口户继 承了基接口的成员函数说明,并没有继承基接口的实现,因为接口定义不包括函 数实现部分。其次,类继承允许多重继承,一个派生类可以有多个基类,但接口 继承只允许单继承,不允许多重继承。 根据c o m 规范,所有的接口都必须人i u n k n o w n 派生,要以直接派生,也可 以间接派生。 3 、i u n k n o w n 接口 c o m 定义的每一个接口都必须从i u n k n o w n 继承过来,其原因在于i u n k n o w n 接口提供了两个非常重要的特性:生存期控制和接口查询。客户程序只能通过接 口与c o m 对象进行通信,虽然客户程序可以不管对象内部的实现细节,但它要控 制对象的存在与否。如果客户还要继续对对象进行操作,则它必须保证对象能一 直存在于内存中;如果客户对对象的操作已经完成,以后也不再需要该对象了, 则它必须及时地把对象释放掉,以提高资源的利用率。i u n k n o w n 引入了“引用计 数”的方法,可以有效的控制对象的生存周期。 另一方面,如果一个c o m 对象实现了多个接口,在初始时刻,客户程序不太 可能得到该对象所有的接口指针,它只会拥有一个接口指针。如果客户程序需要 其他的指针,它可以使用i u n k n o w n 提供的“接口查询”的方法来完成接口之间的跳 转。 1 ) 引用计数 c o m 采用“引用计数”技术来解决内存管理的问题,c o m 对象通过引用计数 来决定是否继续生存下去。每一个c o m 对象都记录了一个称为“引用计数”的数值, 该数值的含义为有多少个有效指针在引用该对象。当客户得到了一个指向该对象 6 第二章c o m 及b h o 原理 的接口指针时,引用计数值增1 ;当客户用完了该接口指针后,引用计数减l 。当 引用计数减到0 时,c o m 对象就应该把自己从内存中清除掉。 通过引用计数,c o m 对象的客户程序可以通过接口指针很好的控制对象的生 命周期。 2 ) 接口查询 按照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 所要解决的问题。其 声明如下: h r e s u l t q u e r y i n t e r f a c e ( i n t r e f i i di i d , o u t 】v o i d 料p p v ) ; 函数的输入参数甜为接口标识符l i d ,输出参数p p v 为查询得到的结果接口 指针,如果对象没有实现迸所标识的接口,则输出参数p p v 指向空( n u l l ) 。 餐如果一个c o m 对象支持多个接i :l ,则客户通过调用q u e r y i n t e r f a c e 函数,可 以灵活的在接口指针之间来回跳转,而且不同的客户跳转的顺序也不见得一样, 所以必须制定一些规则避免引起矛盾。c o m 规范给出了以下一些规则: 对于同一个对象的不同接口指针,查询得到的1 u n k n o w n 接口必须完全相同 接口自反性:对一个接口查询其自身总应该成功。 :接口对称性:如果能从一个接口指针查询到另一个接口指针,则从第二个接 口指针再回第一个接口指针。 接口传递性:如果从第一个接口指针查询到第二个接口指针,从第二个接口 指针查询到第三个接口指针,则从第三个接口指针一定可以查询到第一个接口指 针。 接口查询时间无关性:如果在某一时刻可以查询到某一接口指针,则以后任 何时候再查询同样的接口指针,一定可以查询成功。 2 1 1 2c o m 库 c o m 除了定义了组件程序和客户程序交互的规范以外,它也提供了c o m m 的实现部分即c o m 库,使得这些规范能够被真正地应用起来。并且c o m 库也充 当了组件程序扣客户程序之间的桥梁,尤其是在组件对象的创建过程中,以及在 对象管理、内存管理和一些标准化操作等方面起着重要的作用 1 、c o m 库的初始化 7 电子科技大学硕士学位论文 如果一个应用程序要用到c o m 的特性那么它就不可避免地要调用到c o m 厍中的某些函效。为了使函数调用有效在进行函数调用之前,首先必须调用c o m 库的初始化函数: h r e s u l t c o l a i t i a l i z c ( 1 m a l l o c 幸p m a l l o c ) ; 参数p m a l l o c 用于指定一个内存分配器,它是一个l m a l l o c 指针接口,可由应 用程序指定内存分配原则,例如,我们可以限制c o m 库使用内存的总量,或者在 c o m 库分配的内存中增加辅助信息等。一般情况下,我们直接把参数设为n u l l , 则c o m 库将使用缺省提供的内存分配器。 函数的返回值有三种可能:如果返回so k ,则表明初始始化成功;如果返回 sf a l s e ,则表明初始化虽然成功,但这次调用不是本进程中首次调用初始化函 故:如果返回eu n e x p e c t e d ,则表明在初始化过理中发生了错误,应用程序不 能使用c o m 库。 应用程序对c o m 厍进行初始化之后,就可以调用c o m 库所提供的各种服务。 在调用过程中必然要消耗由c o m 库管理的资源,尤其是一些影响系统全局的资 源。因此,c o m 程序在用完c o m 库服务之后,通常是在程序退出之前,一定要 调用终止c o m 库服务函数,以便释放c o m 库所维护的资源。c o m 库的终止函 数为: v o i dc o u n i n i t i a t i z e ( v o i d ) ; 2 、c o m 库的内存管理 在客户程序和组件程序建立起协作关系之前,它们之间的通信只能靠c o m 库 来传递,并且组件程序和客户程序都可能要用到c o m 库提供的各种服务、c o m 库在完成这些功能的过程中,它不可避免地要用到系统资源,尤其是需要申请内 存,这些内存不一定是c o m 库本身所使用的,也可能是它替组件程序或者客户程 序申请并提交出来的;另一种情况是,因为客户程序通过接口指针对组件程序进 行操作,虽然这种调用可能是直接进行的,但组件程序申请的内存有可能要由客 户程序来释放,所以,在c o m 库和组件程序、客户程序之间需要有统一的内存管 理办法。 通常我们直接利用c + + 语言提供的内存分配器,在程序中很方便地使用n e w 和d e l e t e 操作符进行内存的分配和释放操作。但由于c o m 组件程序和客户程序是 通过二进制级标准建立连接的,而且两端程序并不一定部用c c + + 语言编写所 以在c o m 应用程序中凡是涉及客户、c o m 库和组件三者之间内存交互( 分配扣释 放不在同一个模块中、的操作必须使用一致的内存管理器。 8 第二章c o m 及b h o 原理 3 、组件程序的装载和卸载 客户程序是在运行时刻与组件程序建立连接的,而且,一旦连接起来以后, 客户程序和组件程序的通信是直接进行的,并不需要c o m 库的参与,便组件程序 的装载是在创建第一个组件对象时进行的,组件程序的卸载是在最后一个对象释 放时进行的,这两个动作并不由客户程序完成,而是在c o m 库中完成的。 由于本系统中只用到了进程内组件,所以这里只讨论进程序内组件的装载和 卸载。 1 ) 进程内组件的装载 客户程序调用c o m 库的c o c r e a t e i n s t a n c 圯或者c o g e t c l a s s o b j e e t 函数创建 c o m 对象,在c o g c t c l a s s o b j c c t 函数中,c o m 库根据系统注册表中的信息,找 到类标识符c l s i d 对应的组件程序的全路径,然后调用l o a d l i b r a r y 函数,并调 用组件程序中的d l l g e t c l a s s o b j e e t 引出函数,d l l g e t c l a s s o b j e e t 函数创建相应的类 厂对象,并返回类厂对象的i c l a s s f a e t o r y 接口,至此,c o g c t c l a s s o b j c c t 函数任务 完觑然后客户程序或c o c r e a t e l n s t a n c e 函数继续调用类厂对象的c r e a t e l n s t a n c e 成员函数,由它负责c o m 对象的创建工作。 2 ) 进程内组件的卸载 当组件程序满足2 个条件时,它才能被卸载,这两个条件是:组件中对象数 为0 ,类厂的锁计数器为0 。当满足了这两个条件时,d l l c a n u n l o a d n o w 引出函数 返加t r u e 。c o m 提供了一个函数c o f r e e u n u s e d l i b r a r i e s ,它会检测当前进程中 的所有组件程序,当发现某个组件程序的d l l c a n u n l o a d n o w 函数返回t r u e ,就 调用f r e e l i b r a r y 函数把该组件从内存中卸出。但问题是由谁来调用 c o f r e e u n u s e d l i b r a r i e s 函数呢? 因为在组件程序执行过程中,它不可能把自己从内 存卸出,所以这个任务应该由客户来完成。客户程序当然知道组件程序什么时候 应该从内存中卸出,它随时可以调用c o f r e e u n u s e d l i b r a r i e s 函数完成卸出工作。 但通常的做法是,在程序的空闲处理过程中调用c o f r e e u n u s e d l i b r a r i e s 函数。这 样做即可以避免程序中处处考虑对c o f r e e u n u s e d l i b r a r i e s 函数据调用,又可以使 不再使用的组件程序得到及时的清除,提高资源的利用率,同时也不损失应用程 序的运行效率。 4 、常用函数 c o m 库涉及到了c o m 客户程序和组件程序所有实现方面的细节,从对象的 标识和对象的创建,以及内存管理,一直到组件程序的卸载,c o m 库均提供了一 9 电子科技大学硕士学位论文 组辅助函数以及标准接口,用于帮助应用程序完成有关的功能。如下表,按功能 分类列举了c o m 库中一此常用的函数。 表2 - 1c o m 库常用函数 类别函数功能 c o b u i l d v c r s i o n获取c o m 库的版本号 初始化函数c o l n i f i a l i z e c o m 库的初始化 c o u n i n i t i a l i z ec o m 库功能服务终止 c o f r e e u n u s e a l i b r a r i e s释放进程中所有不再使用的组件程序 i s e q u a l g u i d 判断两个g u i d 是否相等 i s e q u a i i i d 判断两个l i d 是否相等 i s e q u a l c l s i d 判断两个c l s i d 是否相等 g u i d c l s i d f r o m p r o g l d 把字符串形式的对象标识符转化为c l s i d 形式 有关的函数 s t r i n g f r o m c l s i d 把c l s i d 形式转化为字符串形式 i i d f r o m s t r i n g 把字符串形式的接口标识符转化为1 1 1 ) 形式 s t r i n g f r o m l i d 把l i d 形式转化为字符串形式 s t r i n g f r o m g u i d把g u i d 形式转化为字符串形式 c o g e t c l a s s o b j e c t 获取对象类厂 c o c r e a t e i n s t a n c e 创建c o m 对象 对象创建函数c o c r e a t e l n s t a n c e e x 创建c o m 对象,可指定多个接口或远程对象 c o r e g i s t e r c l a s s o b j e c t 登记一个对象,以便其他应用可以使用该对象 c o r e v o k e c l a s s o b j e c t 取消对象的登记操作 c o d i s c o n n c c t o b j e c t 断开其他应用与对象的连接 c o t a s k m c m a u o c内存分配函数 内存管理函数c o t a s k m e m r e a l l o c 内存重新分配函数 c o t a s k m e m f r e e内存释方函数 c o g e t m a l l o c 获取c o m 库的内存管理器接口 2 1 2a t l a t l 是a c t i v e xt e m p l a t el i b r a r y 的缩写,它是一套c + + 模板库。使用a t l 能够 快速地开发出高效、简洁的代码( e f f e c t i v ea n ds l i mc o d e ) ,同时对c o m 组件的开 发提供最大限度的代码自动生成以及可视化支持n 1 。 1 0 第二章c o m 及b h o 原理 在a t l 产生以前,开发c o m 组件的方法主要有两种:一是使用c o ms d k 直接 开发c o m 组件,另一种方式是通过m f c 提供的c o m 支持来实现。 直接使用c o ms d k 开发c o m 组件是最基本也是最灵活的方式,但是这种开发 方式的难度和工作量都很大。一方面,要求开发者对于c o m 的技术原理具有比较 深入的了解( 虽然对技术本身的深刻理解对使用任何一种工具都是非常有益的, 但对于c o m 这样一整套复杂的技术而言,在短时间内完全掌握是很难的) ,另一 方面,直接使用c o ms d k 要求开发人员自己去实现c o m 应用的每一个细节,完成 大量的重复性工作。这样做的结果是,不仅降低了工作效率,同时也使开发人员 不得不把许多精力投入到与应用需求本身无关的技术细节中。虽然这种开发方式 对于某些特殊的应用很有必要,但这种编程方式并不符合组件化程序设计方法所 倡导的可重用性,因此,直接采用c o ms d k 不是一种理想的开发方式。 a t l 的基本目标就是使c o m 应用开发尽可能地自动化,这个基本目标就决定 了a t l 只面向c o m 开发提供支持。目标的明确使a t l 足j c o m 技术的支持达到淋漓 尽致的地步。对c o m 开发的任何一个环节和过程,a t l 都提供支持,并将与c o m 开发相关的众多工具集成到一个统一的编程环境中。对于c o m a c t i v e x 的各种应 用,a t l 也都提供了完善的w i z a r d 支持。所有这些都极大地方便了开发者的使用, 使开发者能够把注意力集中在与应用本身相关的逻辑上。 其次,a t l 因其采用了特定的基本实现技术,摆脱了大量冗余代码,使用a t l 开发出来的c o m 应用的代码简练高效,即所谓的“s l i mc o d e 。a t l 在实现上尽可 能采用优化技术,甚至在其内部提供了所有c c + + 开发的程序所必须具有的c 启动 代码的替代部分。同时a t l 产生的代码在运行时不需要依赖于类似m f c 程序所需 要的庞大的代码模块,包含在最终模块中的功能是用户认为最基本和最必须的。 这些措施使采用a t l 开发的c o m 组件r 包括a c t i v e xc o n t r 0 1 ) 可以在网络环境下实 现应用的分布式组件结构。 第三,a t l 的各个版本对m i c r o s o f t 的基于c o m 的各种新的组件技术如m t s 、 a s p 等都有很好的支持,a t l 对新技术的反应速度大大快于m f c 。a t l 已经成为 m i c r o s o f t 支持c o m 应用开发的主要开发工具,因此c o m 技术方面的新进展在很短 的时间内都会在a t l 中得到反映。这使开发者使用a t l 进行c o m 编程可以得到直 接使用c o ms d k 编程同样的灵活性和强大的功能畸1 。 电子科技大学硕士学位论文 2 2 b h 0 原理 2 2 1 b h o b h o ( b r o w s e rh e l p e ro b j e c t ,测览器辅助对象,简称b h 0 1 是微软推出的 作为洲览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可 以进入浏览器领域的“交互接口”( i n t e r a c t i v e di n t e r f a c e ) 【弼。通过这个接 口,程序员可以编写代码获取浏览器的行为比如“后退”、“前进”、“当前页 面”等,利用b h o 的交互特性,程序员还可以用代码控制浏览器行为,比如修 改替换浏览器工具栏,添加自己的程序按钮等。b h o 原来的目的是为了更好 的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在 很多i e 个性化工具就是利用b h o 的来实现。 从某种观点看,i n t e r n e te x p l o r e r 同普通的w i n 3 2 程序没有什么两样。 借助于b h o ,你可以写一个进程内c o m 对象,这个对象在每次启动时都 要加载。这样的对象会在与洲览器相同的上下文中运行,并能对可用的 窗口和模块执行任何行动。倒如,一个b h o 能够探测到典型的事件,如 g o b a c k 、g o f o r w a r d 、d o c u m e n t c o m 口l e t e 等:另外b h o 能够存取浏览器的 菜单与工具栏并能做出修改,还能够产生新窗口来显示当前网页的一些 额外信息,还能够安装钩子以监控一些消息和动作。b h o 对象依托于浏 览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个新的b h o 对象实例就要生成。任何b h o 对象与浏览器实例的生命周期是一致的。 i n t c r n e te x p l o r e r 浏览器初始化这一对象并要求某一接口功能。如果发现 这一接口,i n t e r n e t e x p l o r e r 使用其提供的方法传递i u n k n o w n 指针到b h o 对象。 圉2 - 2b h o 结构图 浏览器在注册表中发现一系列的c l s i d ,并由此为每个c l s i d 建立一 个进程中实例。结果是,这些对象被装载至浏览器上下文中井运行起来 圈圈 第二章c o m 及b h o 原理 好象它们是本地组件一样。b h o 的确能够做许多潜在的有用的事情,如 子类化组件窗口或者安装线程局部钩子。为了钩住浏览器的事件或者自 动化浏览器,b h o 需要建立一个私有的基于c o m 的通讯通道。 为此,该b h o 应该实现一个称为i o b j e c t w i t h s i t e 的接口。事实上, 通过接口i o b je
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医院电子病历系统在医院信息化建设中的增强现实技术应用报告
- 在线教育平台2025年用户界面交互优化与满意度提升报告
- 2025年医药企业研发外包(CRO)模式企业研发战略规划与实施报告
- 2025年农业面源污染治理土壤修复技术进展与市场分析报告
- 湖南省长沙市雅礼教育集团2025年英语七下期中统考试题含答案
- 农村教育政策实施效果与教育公平研究报告
- 文化产业园产业链整合与服务体系优化报告2025
- 安全助产试题及答案
- 2025数字货币对货币政策传导机制影响的金融稳定性研究报告
- 疫情背景下航空业2025年复苏策略与航空业税收政策分析报告
- 2025年甘肃省农垦集团限责任公司招聘428人历年高频重点提升(共500题)附带答案详解
- 生物制造产业园项目实施规划与进度安排
- 高校物业管理服务实施方案
- 工程造价咨询服务投标方案(专家团队版-)
- 马工程管理学
- 电焊工安全培训(超详)课件
- 幼儿园口算题卡100组口算练习题直接打印版
- 2024年机动车检测站质量手册程序文件记录表格合集(根据补充要求编制)
- 环境保护行动计划承诺书模板
- 大规模分布式存储系统架构设计与优化
- 2023年计量经济学总题库
评论
0/150
提交评论