




已阅读5页,还剩54页未读, 继续免费阅读
(计算机应用技术专业论文)城市监控消息中间件的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他 教育机构的学位或证书而使用过的材料。与我,一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名: 廛i ! 荔 日期: 边! ! :f :拿 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密论 文注释: 本人 导师 * : 挚 c - ,飞 i r f q 城市监控消息中间件的设计与实现 摘要 随着计算机技术的发展和网络技术的进步,以提高软件灵活性、 扩展性为目的的中间件技术得到越来越多的关注。同时,国内城市监 控系统的需求也在日益增长。为了适应国内城市监控系统发展的需 求,提高系统的开发效率,本文提出了一种用于监控的消息中间件。 本文首先分析了中间件及监控系统的国内外情况。接着,本文介 绍了中间件的相关概念,并介绍了序列化、反射等实现一个消息中间 件系统需要利用的相关技术,阐述了采用这些技术的优势。然后,本 文介绍了监控消息中间件的通用功能需求、具体性能需求,并引出了 该中间件的设计与实现过程。最后,以具体的项目为例,论证了该中 问件的实际可行性。 本文设计的系统采用了常规的三层架构:通讯层、业务逻辑层及 数据访问层。在对三层进行设计时,以面向对象理论为指导,利用反 射与工厂设计模式相结合的方式实现,保证了系统的灵活性。同时, 本系统适当地采用多线程技术,对消息的传输做了一定的控制,增强 了系统的健壮性。通过对消息的分类,使得系统的消息处理部分更加 清晰。为了达到良好的可扩展性,本系统设计了消息处理的基类,在 基类中规定了消息格式验证、正常处理消息等通用操作。最后经过测 试及试运行,证明该系统不仅扩展容易,而且稳定、可靠,完全可以 满足城市监控的需要。 关键字消息中间件监控系统n e t 面向对象 屹,一 d e s i g na ndi m p l e m e n t a t i o no fm e s s a g e o r 正n t e dm i d d l e ,a r ei nc i t ym o n i t o r i n g a bs t r a c t a st h ed e v e l o p m e n to fc o m p u t e rt e c h n o l o g ya n di n t e m e tt e c h n o l o g y , m i d d l e w a r ei sp a i dm o r ea t t e n t i o nb yi t sf l e x i b i l i t ya n de x p a n s i b i l i t y b e s i d e st h i s ,t h er e q u i r e m e n to fc i t ym o n i t o r i n gs y s t e mi si n c r e a s e d f o r s a t i s f y i n g t h ed e v e l o p m e n to fm o n i t o r i n gs y s t e ma n di m p r o v i n gt h e e f f i c i e n c yo fd e v e l o p i n gs y s t e m ,t h i sp a p e rd e s i g n sam e s s a g eo r i e n t e d m i d d l e w a r ew h i c hu s e dt om o n i t o ra n dm a n a g e a tt h eb e g i n n i n g ,t h i sp a p e rs u m m a r i z e st h em e a n i n go fd o i n gt h i s r e s e a r c h t h e n , s o m et e c h n o l o g i e s r e l a t e dw i t ht h em i d d l e w a r ea r e i n t r o d u c e d ,s u c ha ss e r i a li z a t i o na n dr e f l e c t i o n m o r e o v e r , t h i sp a p e r i n t r o d u c e sr e q u i r e m e n t s ,o ft h i sm i d d l e w a r ea n ds h o w st h ed e t a i l sw h i l e d e s i g n i n g a tl a s t ,t h ep r a c t i c a lf e a s i b i l i t y o ft h em i d d l e w a r ei s d e m o n s t r a t e du s i n gt h es p e c i f i cp r o j e c t t h em i d d l e w a r e d e s i g n e d i nt h i s p a p e r i n c l u d e s3 p a r t s : c o m m u n i c a t i o nl a y e r , b u s i n e s sl o g i c 1 a y e ra n dd a t aa c c e s sl a y e r w h i l e d e s i g n i n g ,u s er e f l e c t i o na n df a c t o r yd e s i g nm o d et ok e e pf l e x i b l e ,u s e m u l t i t h r e a dt e c h n o l o g yt ok e e pr o b u s t n e s s ,d e s i g nb a s i cc l a s st ok e e p e x p a n s i b i l i t y t h r o u g ht e s t i n g ,i t i sp r o v e dt h a tt h i sm e s s a g eo r i e n t e d m i d d l e w a r ew o r k sv e r yw e l l k e yw o r d sm o mm o n i t o rs y s t e m n e to b j e c to r i e n t e d 气 t r:毋 目录 第一章引言1 1 1 课题提出及其意义1 1 2 国内外的研究现状1 1 2 1 中间件与分布式l 1 2 2 监控系统2 1 2 3 现存的监控中间件2 1 3 论文的主要工作及结构2 1 4 本章小结3 第章相关概念及技术介绍一4 2 1 中间件相关概念4 2 1 1 消息中间件概述4 2 1 2 中问件技术5 2 2 n e t 相关技术6 2 2 1 序列化技术一6 2 2 2 对象持久化技术7 2 2 3 反射技术8 2 3 多线程技术9 2 3 1 多线程的同步调用9 2 3 2 多线程的异步调用1 0 2 4 本章小结l l 第三章消息中间件系统需求分析1 2 3 1 需求分析的重要性及方法1 2 3 2 系统的需求1 3 3 2 1 功能需求1 3 3 2 2 性能需求1 6 3 2 3 其他需求16 3 3 本章总结1 6 第四章消息斗i 问件系统设计与实现1 7 4 1 设计思想l7 4 1 1 面向对象理论l7 4 1 2 软件架构设计思想18 4 2 消息中间件系统的总体设计1 8 4 3 通讯层设计与实现1 9 4 3 1 通讯层结构设计1 9 4 3 2 消息传输模块的实现2 0 4 3 3t c p 链接管理2 3 4 3 4 消息解析模块的实现2 5 4 3 5 消息队列的实现2 9 4 4 业务逻辑层设计与实现3 0 4 4 1 业务逻辑层结构发计3 0 4 4 2 消息处理模块的实现3 l 4 4 3 配置模块的实现3 3 4 4 4 消息处理反射工厂的实现3 4 4 4 5 消息处理基类3 5 4 5 数据访问层设计与实现3 6 4 6 本章小结3 7 第五章消息中间件系统应用及测试3 8 5 1 项目背景3 8 5 2 业务需求实现实例3 9 5 3 应用测试结果4 0 5 3 1 测试环境测试4 0 5 3 2 试运行测试结果4 4 5 4 本章小结4 5 第六章结束语4 6 6 1 总结4 6 6 2 展望4 6 参考文献4 7 致谢4 9 攻读学位期间发表的学术论文5 0 l i l p 北京邮电人学硕上学位论文 1 1 课题提出及其意义 第一章引言 目前,城市监控领域的软件多为针对特定应用环境分析、设计和开发,各个 部分紧密结合,模块之间耦合度高。这就产生了诸如资源浪费、可复用性不强等 一系列问题。 同时,随着城市建设的不断发展,需求的不断增加导致软件规模越来越大, 软件本身对于町扩展性的要求也越来越多,为了适应不断变化的实际需求,同时 很好的控制软件成本,也需要提 j 一种解决方案。 中间件技术是解决这些问题的一个很好的方法。本文针对城市监控系统的现 状,设计了一种面向城市监控的消息中间件系统。和其他的通用中间件相比,它 能够针对城市监控的特点,对于城市监控领域的业务有着更好的支持。同时在设 计时考虑软件的扩展性及稳定性,也具有很强的实用价值。 当前的一些成熟的消息中间件产品,功能强大、可靠性强,然而为了将监控 领域相关的业务逻辑更好的融入消息中问件系统里,设计开发一套城市监控消息 中间件系统是必要的。在完成了此种消息中间件系统设计之后,不但可以在功能 上、性能上完全吻合监控领域的需要,而且由于是针对性的设计,使得系统更加 简单、小巧灵活,有极高的易用性。 1 2 国内外的研究现状 1 2 1 中间件与分布式 随着计算机技术的发展,硬件系统、软件系统的种类日益繁多,环境呈现了 复杂性、多样性、多变性,由此产牛了开放系统技术。开放系统技术是在开放系 统的环境中实现不同结点、资源的互操作,而系统规模的逐渐发展形成了放大的 开放式分布结构。开放系统具有良好的可移植性、互操作性、可伸缩性及易获得 性,可以方便地开发、集成、升级和维护各种应用系统,这就是中间件的前身。 中间件的概念出现于国外2 0 世纪9 0 年代初,指处于系统软件与应用软件之间的 一种软件,可以使得远距离的应用软件协同工作,在应用层实现了分布式处理。 分布式的中间件可以兼容各种标准和规范,实现了与上下层系统的协i 司作用。 中间件的强大优势使得众多企业、公司投入人力、物力和财力,国外中间件 北京邮电人学硕上学位论文 产品如i b m 的m q s e r i e s 、o r a c l e ( b e a ) 的t u x e d o 等,国内的中间件以东方通 科技的t o n g l i n k q 为首,除此之外,金蝶的i m t s 也在国际上有着不- y d , 觑的 地位。 1 2 2 监控系统 从概念上说,监控系统指利用软件及硬件协同作用对入或设备实施远程监 督、控制、管理的一套系统。通常意义上,具有实时传输能力。 揽控系统可以应用在很多领域、场合,对于城市监控,国外在道路、治安、 公共社区、公共建筑等方面已经积累的很多经验,并且不断的将计算机技术、电 了信息技术应用到城市监控中。而我国的城市监控起步的较晚,相应的产业和产 品的发展也比国外盟控技术发展较快的国家晚了近2 0 年。我国真正大规模应用 监控是从9 0 年代开始,主要应用于大城市及大型的公共设施上。大多数的监控 应用是通过安装摄像头实现的,以此形成城市监控体系。 1 2 3 现存的监控中间件 在国外,存在一些具备监控功能的消息中间件,例如可以实现远程控制功能, ,将数据保存在中央数据库,- - y 以支持本地访问及远程访f 1 t 。在中国,也已经有 一些企业针对监控系统设计了中间件,例如金蝶的“平安广东”视频监控系统, 采用了中间件技术,建立了一个兼容性的统一管理平台,支持不同系统、不同网 络协议,通过传递视频流监控社会治安环境。 1 3 论文的主要工作及结构 本文基于n e t 平台设计实现了城巾监控消息中间件系统,并将该系统通过 扩展应用到了具体的项目中。本中间件系统主要采用了对象序列化,持久化,反 射机制等技术,结合了面向对缘的设计思想及软件架构设计思想。 论文中的主要工作如下: 第一,完成了城市监控消息中间中l :系统总体技术方案的设计与关键实现; 第二,根据需求完成了城市监控消息中问件系统的扩展,并将其应用于路灯 监控指挥系统中: 第三,在客户端、通信服务器、数据库及底层设备的辅助下完成测试环境下 的测试及试运行测试。 本文的主要结构如下: 2 北京邮电人学硕士学位论文 第一章引言,简述中间件及监控系统的概念,分析提出课题的意义; 第二章相关概念及技术介绍,简介系统中使用的几个主要技术; 第三章消息中间件系统需求分析,详细描述系统的需求分析并止l 纳出系统设 计的重点及难点; 第四章消息中间件系统设计与实现,介绍系统的具体设计及实现,特别是通 讯层及业务逻辑层的实现; 第五章消息中间件系统应用及测试,根据项目的具体需求实现系统的具体应 用,并进一步对具体的项目实施测试,分析结果,得出结论。 第六章结束语,即全文的总结和展望。 1 4 本章小结 在本章中,首先介绍了国内外对中间件及监控系统的概念、发展,接着介绍 了现有的监控中间件产品,最后引出课题的研究重心,列出论文的工作重心及主 要结构。在下面章节巾,将系统地介绍相关的内容。 北京邮电人学硕上。学位论文 第二章相关概念及技术介绍 本章主要介绍系统中的一些概念及相关的技术,包括中间件、n e t 相关技 术及多线程技术。 2 1 中间件相关概念 随着软件技术的不断发展,软件架构从传统的c s 结构向三层架构转化。中 问件的最早定义为:介于应用程序和操作系统之问的软件,它代表一类产品。i t 异构分布环境使得企业在进行信息化的建设中,需要构建一个能够集门户、集成、 运行和管理、安全、开发、部署等众多功能于一体的应用基础j f 台,这就是中间 件的巨大作用。 i d c ( 互联网数据中心) 对中间件的定义是:中间件是一种独立的系统软件 或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件 位于客户机服务器的操作系统之上,管理计算资源和网络通信1 2 1 。这意味着,中 间件是一类软件,要实现应用之间的互操作,基于分布式处理软件,突出的特点 是网络通信功能。 , 在企业中,中间件具有缩短应用开发周期、减少项目开发风险、应用系统质 量及可维护性、增加产品吸引力等优势。从应用程序的角度上讲,中间件可以实 现透明地同其他应用程序交互、与运行,r 台提供的嘲络通信服务无关、具有良好 的可靠性和可用性、具有良好的可扩展性等特点。 目前,中间件根据功能的划分已经不下l o 种,比如数据访问中间件、远程 过程调用【3 1 中间件、对象中间件【4 】【5 1 、企业应用集成中间件6 1 、安全中间4 - 1 :1 7 1 等。 消息中间件是本论文涉及的核心概念,下面对消息中问件的内容做简单的介绍。 2 1 1 消息中间件概述 消息i i l 问件是为了实现在分布式环境下的通信,支持多通信协议、语言、应 用程序、硬件和软件平台,基于消息派对模型进行消息传递,将不同的通信格式 转换成同一种格式。当一个应用程序共享系统的通信标准时,可以认为是基丁消 息中间件的【8 1 。 消息中间件实现消息传递的功能,同时为了具体的需要,也可以完成消息处 理的功能,如本文中设计实现的监控消息中间件。 4 消息中间件有两种工作模型:消息队列和发布预定。消息队列是指将要发 送的消息暂存在队列里,接收方通过监视、查看消息队列接受消息。而发布预 定模型则是把消息传递给多个接收端。消息中间件既可以利用同步方式实现,又 可以利用异步方式实现。异步中问件技术比同步中间件技术具有更强的容错性, 可以在系统故障时仍然保i j f 正常传输,因而已经成为消息中间件的发展主流。 消息中问件实现中有两个关键点:消息传递服务和消息队列。 消息传递服务类似中介服务,实现了将在应用程序之间传递消息,与以往软 件彳i 同的是,该服务软件可以配置,对外通过接口实现通信,以一种透明的方式 实现调用消息传递服务。利用消息传递服务,发端发送完成即认为发送成功,不 必等待确认信息,不必确认收端的开启状态。 消息队列 9 1 1 0 是异步传输消息中问件的核心。队列是消息的缓存,直到被应 用程序处理。利用队列实现异步通信,使得发端可以持续处理,提高了速率,同 时也具备故障恢复能力。一个系统会维护一个或多个消息队列,所有的消息都被 放入系统公共的消息队列中,本地或异地的消息接受程序会从队列中取出每一条 消息,而应用程序也会找到自己所属的消息进行处理,而在没有消息时,消息循 环的控制权就交给系统。在n e t 平台之上,利用微软提供的消息队列组件m s m q ( m i c r o s o f tm e s s a g eq u e u e ) ,c l r 提供了s y s t e m m e s s a g i n g 命名空间,它包含 了封装有m s m q 的a p i 核心功能的类型;它是一种分布式开发技术,利用暂存 机制,实现了在离线状态下完成工作。通常,主要有两种队列类型:用户创建的 队列和系统队列。用户创建的队列主耍涉及到具体信息的传递,而系统队列包括 报告队列等。当然,开发人员也可以不使用封装好的m s m q ,而是根据需求, 自定义消息队列。 消息中间什在企业应用中,主要由以下关键部分组成:数据传输机制、并发 机制、请求响应机制和公布预定机制等【。这些机制的原理不再介绍。 2 1 2 中间件技术 在具体实现上,中间件是,个应用程序接口定义的分布式软件管理框架,具 有强大的通信能力和良好的可扩展性l 2 】。中间件是不仅仅是一种思想,还有相 应的技术作为支撑。本节就介绍中间件技术发展历程。 粗糙的中间件技术最早由微软提出,计算机网络的发展促使微软希望 w i n d o w s 操作系统能在应用层析和体系上很好的融入网络技术,由此出现了 c o m 技术( 组件对象模型c o m p o n e n to b j e c tm o d e l ) ,即可以实现使得多个软件 系统完成用户多方面的需求。c o m 技术的发展经历了多个阶段,依次为d l l 、 o l e 、c o m 、d c o m 、c o m + 。d l l 包含只在运行时才与进程连接的函数及资 5 北京邮电人学硕上学位论文 源库文件,是c o m 组件的发布方式,c o m 发扬了d l l 的优势,摒弃了d l l 的不足之处。o l e 应用存特定领域,是对复合文档进行进程间连接和嵌入的应 用技术,支持c o m 技术。c o m 技术是程序组件问建立联系的规范,1 9 9 3 年由 微软正式引入,统一了各组件的交互方式。c o m 技术的实质是一种对象组件构 造和使用对象组件来构造应用程序的框架规范,同时也是一种组织软件的方法 1 1 3 1 。d c o m 实现了分布式环境中的跨进程、跨机器运行,即在两个机器问通过 网络实现c o m 对象的通信。c o m + 提供了以配置的方式使用c o m 的应用服务 功能,并针对分布式应用加入了许多关键特性。 值得一提的是,n e t 框架是c o m 技术的进一步发展,c o m + 是其中的一部 分,它利用分布式计算模型,并基于开放标准将p c 和其他智能设备连接在一起 引。本文的消息中间件系统正是利用n e t 框架提供的中间件技术来实现 的。n e t 框架使得c o m 开发变得十分容易,它为开发人员处理了所有与c o m 相关的任务,比如引用计算、接口描述及注册,通过n e t 框架类可以直接访问 c o m + 服务。 2 2 n e t 相关技术 在本节里,主要介绍与系统实现相关的- - 弄e l 技术:序列化技术、对象持久化 技术及反射技术。 2 2 1 序列化技术 2 2 1 1 序列化与反序列化 微软的m s d n 提n - 序列化是将对象状态转换为可保存或传输的格式的过 程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可 以轻松地存储和传输数据。对基于n e t 平台消息处理的中间件系统来讲,序列 化是十分关键的技术。 当你需要把内存中的对象状态保存到一个文件或者数据库中的时候,当你需 要利用套接字在网络上传送对象的时候,当你需要通过远程调用传送对象的时 候,就会使用序列化技术。序列化可以帮助你转换对象的状态进行保存或者传输, 并在需要读取的时候通过反序列化重新得到该对象。 在序列化时,只针对对象的状态,而不涉及到对象的方法。另外,当父类实 现序列化,子类自动实现;当对象的实例变量引用其他对象,序列化该对象时也 把引用对象序列化。 6 北京邮电入学硕上学位论文 然而,序列化虽然对保存状态和传输提供的极大的方便,也存在一些弊端。 对p f i v m e 的对象在处理的过程中保证不了原本的安全性,对t h r e a d 类在序列化 后无法对资源重新分配。 2 2 1 2 n e t 对序列化的支持 在实现序列化时,只需要实现i s e r i a l i z a b l e 接口,则在运行时,c l r 会负责 检验某个类是否已经被序列似1 4 】。n e tf r a m e w o r k 提供了两种序列化技术:二 进制序列化技术和x m l 序列化技术。 二进制序列化保持类型保真度,用于在应用程序的不同调用之问保留对象的 状态。x m l 序列化仅仅序列化公共属性和字段,且对w e b 数据而言,适用性好。 两种技术用各自的格式器实现,在第四章中会结合系统设计作详细介绍。 2 2 2 对象持久化技术 2 2 2 1 持久化 持久化,顾名思义,就是永久的保存。一般地,持久化是指把数据永久的保 存在设备中,主要应用是将内存中的数据存储在关系型数据库中,实现数据的永 久保存。 逐渐地,持久化成为对象服务的一种,持久化方案也层出不穷,比如对象数 据库方案、x m l 数据库方案。目前,主流的方案是关系数据库方案。方案与数 据库结构息息相关,数据库结构的基础是数据模型,目前数据库系统的数据模型 主要有:网状模型、层次模型、关系模型和面向对象数据模型。 l 一时,在需要将面向对象的软件与关系数据模型一起使用时,会产生面向对 象与关系数据之间的模式不匹配,主要利用对象关系映射解决。对象关系映射是 关系模型与面向对象数据模型的相互映射,其基本思想是用面向对象数据模型解 决数据表达的问题,利用关系模型成熟的理论实现数据存储的问题,即用于解决 如何将对数据库的操作归结到对对象的操作。这里不做介绍。 2 2 2 2 持久化与序列化 在上一小节中,提到序列化也用来实现转换对象为一个可保存的格式,之后 存储到数据库中,持久化也有相似的功能。从表面上看,两者是相同的,其实持 久化和序列化是有区别的。 北京邮电人学硕上学位论文 持久化侧重点在如何持久保存并再次获得,而序列化关心的是如何将对象转 换成字节流。不可否认两者在实用方面有相互覆盖,序列化一个类的值,转化为 字节流,将流写在磁盘文件或其他口标的过程,本身也可以称作持久化。 2 2 2 3 n e t 对象持久化技术 微软的a d o n e t 实体框架针对数据编程,提高了抽象的关系概念,减少了 应用程序和数据中心服务的不匹配l l 引。n e t 提供了对象持久化机制,用一种专 门的数据提供方式,减少商业逻辑代码及a d o n e t 数据访问代码的编写,从而 把开发人员从繁杂的数据访问处理代码i | i 解放出来。另一方面,n e t 对象持久 化实现了将一个业务对象作为参数传递到数据库表中,这个对象可以持久的作为 一个“列值 被永久的保存。 在具体应用中,首先定义一个类及其特有属性,将该类编译成d l l 文件并 注册到数据库表中。之后,可以在表中创建该类型并插入数据。n e t 对持久化 的支持,实现了对象关系映射,并且n e t 的数据访问命令和结果通过数据访问 层的a p i 传递,从而使得客户端代码变得更加清晰。 2 2 3 反射技术 准确地讲,反射是n e t 中的重要机制而非技术,它为了实现在运行时获得 一个类型的方法、属性或事件等。通过反射,即使一个对象在编译时还不知道, 只要获得了构造函数的信息,也可以直接创建对象。 反射是n e t 中获取运行时类型信息的一种方式,町以动态的创建类型的实 例,将类型绑定到现有对象。通常n e t 应用程序由3 部分组成【i6 】:程序集 ( a s s e m b l y ) 、模块( m o d u l e ) 和类型( c l a s s ) 。反射提供一种编程方式,使得程 序员可以在程序的运行期获得这几个组成部分的相关信息。a s s e m b l y 类刈。以获 得正在运行的装配件信息、动念加载装配件、在装配件中查找类型信息并创建该 类型的实例。t y p e 类可以获得对象的类型信息。m e t h o d l n f o 类包含方法的信息。 这些类都包含在s y s t e m r e f l e c t i o n 的命名空间下。需要明确的是,一个装配件里 面可以有多个命名空间,而一个命名空间内存在多个类。通常,使用一个类时, 要告诉编译器类的具体位置,即引用该装配件。但当编写程序的时候,如果只知 道名称而不知道类的明确位置,在程序运行时提供该类型的地址寻找类,就是反 射。 利用两种方法可以获得类型信息:得到实例对象和通过t y p e g e t t y p e 及 a s s e m b l y g e t t y p e 方法。第一种方法仪得到一个实例对象,得到的方式可以是上 8 北京邮电人学硕上学位论文 一个o b j e c t 的引用,可以是一个接口的引用,再获取实例对象的类型对象即可。 第二种方法应用在已经确定了装配什的基础上。 使用反射机制时,需要注意三点。一是反射可以动态地创建类型的实例,将 类型绑定到现有对象或者从现有对象中获取类型。是应用程序需要在运行时在 某个特定的程序集载入一个特定的类犁,以便实现任务时可以用到反射。最后, 一般反射主要应用在类库,因而这些类库需要知道一个类型的定义,以便提供更 多的功能。 反射也具有一定的缺陷。首先,反射会破坏类的封装性。再者,使用反射动 态绑定需要牺牲性能,同时,有些元数据信息是不能通过反射获取的。 2 3 多线程技术 长期以来,多线程被赋予了很神秘的色彩,他不仅仅实现同步地完成多项任 务,而是以提高资源使用效率提高系统的效率为目标。将多线程技术作为独立的 一节,是因为多线程被广泛的应h j 径各个环境 j ,监控系统需要多线程的支持 【吲,而n e t 本身就是一个多线程的环境。本小节主要剖析多线程技术,并不侧 重在环境的支持上。 线程是程序中独立的指令流。,个程序结构、个算法往往需要由几个并发 的任务组成,比如监听器线程,一旦收到客户的请求,就传送给另一个工作线程, 之后继续监听客户的状态,等待下一个请求。硬件的发展已经到达了一个瓶颈, 改进应用性能的唯,。方案就是合理地利用多线程技术【l 叭。 下面将首先讲述多线程的同步调用技术,之后介绍多线程异步调用技术。 2 3 1 多线程的同步调用 在使用多线程技术时,会m 现多个线程同时访问相同的资源,从而发生冲突, 这时候就需要i 司步对象。同步对象的目的是为了在访问冲突出现的情况下,使得 一个线程独自享用某个资源的控制权而不被j l :扰。合理地友好地同步一个程序是 最精细的软件开发任务之一,故不在这里详细讨论。这里主要介绍几种同步调用 的方法。在介绍之前,先简述一下与i 司步相关的两个概念:竞态条件和死锁。 竞态条件是这样一种情况,即两个或多个线程访问相同的对象,或者访问不 同步的共享状态。举一个例了来说明竞态条件,假定线程t l 修改了资源r ,在 释放了控制权之后,又重新拿同控制权,而在释放重新拿同的这段期间,线程 t 2 修改了r 的状态。竞态条件如果不被很好的处理,将是一个严重的安全漏洞。 要避免竞态条件的发生,可以利用“锁”,锁定共享的对象。 9 北京邮电人学硕上学位论文 死锁的产生是由于两个或多个线稃相互等待双方解除锁定,导致线程将处于 无限的等待中。简单来说,一个线程t l 获得了对资源r l 的控制权,而同时线 程t 2 获得了对资源t 2 的控制权。当t l 请求对r 2 的控制权时被迫陷于等待l j f i , 而同时t 2 请求对r l 的控制权也处于等待中,两个线程将永远维持着等待的局 面,陷入了死锁。为了避免死锁的发生,合理的方法是建立一个最大等待时间, 并处理请求失败的情况。较为乐观的是,几乎所有的n e t 同步机制都提供了这 种功能,便于我们处理死锁问题。 当一个线程被调用且方法完成后才继续执行,叫同步调用。下面简要介绍几 种同步调用的方法,其中l o c k 语句、i n t e r l o c k e d 类和m o n i t o r 类用于进程内的同 步,m u t e x 类、e v e n t 类则提供了多个进程问的同步。另外还有r e a d e r w r i t e r l o c k 类、s y n c h r o n i z a t i o n a t t r i b u t e 类等同步方法,这里不作介绍。 2 3 2 多线程的异步调用 同步调用可以解决多线程的竞态条件和死锁问题,但是同步既耗费资源又浪 费时间,在等待资源的过程中,等待的线程是阻塞的,在要求实时数据的情况下, 这种等待是事倍功半的。异步调用可以很好的解决这种情况,即线程在调用方法 后立耳| j 返回而不去等待调用的完成。在内部处理的过程中,该调用会立即被线程 池i - 的个线程接管。过些时候,程序可以获取异步调用的返回信息【1 8 】。在n e t 中,由c l r 管理异步调用技术。 异步程序使得速度较慢的应用能在单独的线程中执行,而主线程继续执行, 无疑可以极大的提高程序的性能和响应能力。这里介绍几种实现异步调用的常h j 方法。 l 、异步委托 异步委托是,利,简单的异步调用方式,定义。个委托并去异步调用它。委托 利用线程池完成异步任务。目前可以利用不同的技术异步调用委托,返回结果 i 1 9 1 。这里,简要介绍三种方式。一种方式足“投票”,获得委托的信息,验证委 托线程是否完成,在委托的任务完成之后就停止,否则就不断循环主线程。另 种方式是“等待句柄”,定义等待的最大时间,判断在到达时间之后委托任务是 否完成,从而决定退出还是继续循环等待。第三种方式是“异步回调”,启动一 个委托的实例,回调方法可以使用它获得异步方法的执行结果。 2 、t h r e a d 类 该类被用来创建和控制线程,并且可以设置线程的优先级,是最简单的方式。 3 、线程池 线程池指t h r e a d p o o l 类,用来动态的管理线程数,用户可以设置线程池可 l o 北京邮电人学硕上学位论文 以容纳的线程数。在双核c p u 中,默认设置为5 0 个工作线程和1 0 0 0 个i 0 线 程。线程池使用简单,缺点是4 能设置线程池中线程的优先级月只能是执行任务 时间较短的线程。 2 4 本章小结 本章介绍了实现系统需要的几种关键技术:中间件技术、序列化技术、对象 持久化技术、反射技术及多线程技术。在介绍中f b j 件技术中首先介绍了中间件, 最后概述了中间件技术的发展过程。n e t 平台提供了序列化技术、对象持久化 技术及反射技术的封装,因而在本章中归为一节作简要介绍。多线程技术中介绍 了同步及异步调用,分析了相对应的调用方法。 在下面的章节中,首先介绍该系统的设计的需求,接着详细介绍系统的设计 实现,最后通过应用实例及测试检查系统的设计成果。 北京邮电人学硕- j j 学 蕾淦文 第三章消息中间件系统需求分析 3 1 需求分析的重要性及方法 据权威部门统计,目前软件的成功率约为2 5 ,7 5 的软件是失败的。在这 7 5 的失败中,约有5 0 以上的软件是由于需求的原因造成的。作为软件的设计 和开发人员常抱怨用户需求不明确,需求常处于变更状态,新的需求往往在开发 阶段才被用户提出,造成软件的完成日期不断的迟后。 收集软件需求的方式是多种多样的,但总的来说可以将它们归结为三类1 2 0 1 : 1 、数据分析和数据流 2 、u i 设计和故事版 3 、业务概念和过程流分析 数据分析和数据量是这三者当中最原始的方法,它是通过了解引用程序所需 要的数据,以及这些数据如何流经系统来达到设计的目的。在设计面向对象的概 念时,尽管这个方法可行,但却不是一个好的方法,因为它没有运用业务概念的 思想来分析问题,而只是注重于对原始数据的分析。 基于u 1 分析的好处在于它便于最终用户对设计的理解,可以很直观地向用 户阐述u i 的构成,以及它们之间的流程关系。然而,它很可能会使得业务的认 证和处理最终被直接写到u i 中去。主要原因是基于界面的分析方法通常围绕一 个u i 的原型系统来展开的,随着分析过程的推进,该原型系统会包含越来越多 的业务逻辑,而在它上面所进行的大量工作会使得开发者最终决定使h j 该原型系 统作为该应用的基础。另外,在项目开始时给用户演示的u i 模型会给他们造成 该系统已经基本上完成的假象,导致的直接后果就是开发者在开发系统时面临巨 大和不切实际的时间压力。 业务概念和过程分析方法是采用业务概念和过程流的分析方法。可以认为它 足上面两种方法的一个折中,它需要对用户如何同系统交互、系统所支持的过程, 以及数据如何流经系统进行较深入的理解。它是基于业务的,系统系统分析人员 和用户直接使用业务语言进行交流和沟通,从而避免了使用计算机概念和术语。 此外,它还借鉴面向对象设计中的一些建模方法,在分析中产生的一些实体和概 念通常都会被转化为应用程序t l ,的对象。虽然它不能提供用户对系统的真实体 验,不能产生一个清晰的数据库设计模式,但侧重于业务概念和过程流的处理的 优点符合项目的需要,不失为一种合适的方法。 综合各利,冈素考虑,本项目采用业务概念和过程分析的方法。 1 2 用,发送配置到底层r t u 设备及获取底层r t u 的上报消息。根据业务概念和过 程需求分析方法,在综合考虑了涉及到的业务、如何交互及消息如何流经系统之 后,可得总体功能包括以下4 个方面: 1 、监听客户端和通信端,接收消息: 2 、解析消息,发送消息到具体模块; 3 、处理消息,实现软件的业务需求,包括控制模式的变化、控制信息的下 发及属性配置的下发等; 4 、操作结束,发送反馈消息。 其中,第l 、4 条迎合消息中问件设计规范,2 、3 条为自主创新设计。 3 2 1 2 局部功能需求 除了规划了系统的总体功能之外,还需要考虑系统的局部功能要求。通过沟 通与讨论,得到如下局部功能要求: 1 、提供三种消息类型,即中间件与客户端交互的消息、中间件与通信服务 器端交互的数据消息、通信服务器端交互的信令消息,且统一规定了消息格式; 2 、提供可靠传输的服务质量控制机制,除了采用t c p i p 传输协议外,数据 发送需要提供应答机制,在应用层控制消息的传输提升可靠性; 3 、系统操作记入日志,帮助问题分析。 3 2 1 3 用u m l 规范需求 根据上面两节对总体及局部功能需求的概述,本节利用用例图来规范系统的 总体需求。首先本系统的参与者有两个,一个是客户端,用例图如图3 1 所示。 北京邮电人学硕上学位沦文 客户端 图3 l 参与者客户端 客户端使用消息中问件系统提供的消息处理服务,向中问件发送消息,等待 中间件系统进行处理:同时客户端接收中间件系统回复的消息,根据具体的消息 内容,做成具体的操作,反馈给用户。客户端的数量可以是一个或者多个。 另外一个参与者是通讯服务器,其用例图如图3 2 所示。 厂、 消息中间件和中今 ¥ 间件进行通讯来 少、+| 发送:舷陉系统的 通磊服嘉器岜堡4 焦垦- j 图3 2 参与者通信服务器 消息中间件需要和通信服务器进行通信,通过通信服务器,监控系统中的控 制信息才能发送到底层的实时监控设备巾。 ,在找到参与者之后,就可以根据参与者来确定系统的用例,主要是看各参与 者需要系统提供什么样的服务,或者说参与者是如何使用系统的。根据这样的原 则,得到的用例图如图3 3 所示。 1 4 9 入 北京邮电大学硕上学位论文 吴 客户 图3 3 消息中间件用例图 图3 3 中一共有1 1 个用例,其中“监听客户端消息”、“回复客户端消息” 两个用例直接和参与者客户端进行交互。“连接通信服务器”、“监听通信服务器 消息”、“同复通信服务器消息”三个用例直接和参与者通信服务器进行交互。 其余用例是这三个用例的扩展用例,他们组合在一起共同完成了整个消息中 间件系统的功能。 吴蝌 北京邮电人学硕上学位论文 3 2 2 性能需求 系统的功能是系统设计的核心,而系统的性能是另- 个考核标准,与客户体 验密切相关。通常,具有较高质量的软件具备较好的性能。 由于监控系统的特殊性,要求设备状态的判断准确度为9 9 9 ,消息处理的 正确性要求9 9 9 ;时问上要求下发指令的消息回复不超过5 秒,状态的判断延 迟不大于3 秒;灵活性上要求如果系统需求更新,一项业务的开发周期不超过5 个工作日。 3 2 3 其他需求 除了功能需求和性能需求外,还包括接口需求、硬件需求等。 接口需求包括: 1 、硬件接口 c p u p 42 0 h z ;硬盘:8 0 g ;内存:5 1 2 m 2 、软件接口 操作系统:w i n d o w sx p ( s p 2 ) ;数据库:s q ls e r v e r 3 、通信接口 局域网通信,1 0 0 m 网络接口,t c p i p 协议 硬件配置:i b mx s e r i e s3 4 68 8 4 0 1 0 5c p u 3 0 g 1 gd d r i i 7 3 g d v d 3 3 本章总结 本章首先强调了进行需求分析的重要性,列举了三种常规的需求分析方法。 接着,主要从功能和性能两个方面描述了系统设计的需求。下面将在需求分析的 基础卜进行设计实现。 1 6 北京邮电人学硕上学位沦文 第四章消息中间件系统设计与实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 场地合作协议书
- 新解读《GB-T 30675-2014阁楼式货架》
- 重庆江北社区知识培训课件
- 人教版八年级英语上册单元同步知识点与语法训练 unit1 section B
- 人教版八年级物理上册知识点归纳总结
- 新解读《GB-T 8239-2014普通混凝土小型砌块》
- 人教版八年级数学下册期末培优提分专项训练
- 老年人防火宣传知识培训课件
- 重大危险源知识培训
- 老年人茶饮培训课件模板
- 2025年彩票技术管理员招聘笔试模拟题
- 迷彩九月+启航青春+课件-2025-2026学年高一上学期开学军训动员主题班会
- 2025年暑期教师研修心得-研修蓄力笃行致远
- 2025秋人教版初中数学九年级上册教学计划及进度表
- 2025年中国烟花爆竹协会烟花工艺师认证考试专项练习含答案
- 2025年政府会计准则制度实施能力考试(气象事业单位)高频错题及答案
- 2024年陕西事业单位联考A类综合应用能力试题及答案
- 河北省大厂回族自治县2025年上半年事业单位公开招聘教师岗试题含答案分析
- 人教版物理九年级全一册16.1《电压》听评课记录
- (2025年标准)被迫堕胎补偿协议书
- 咸阳赤壁市事业单位招聘笔试真题2024
评论
0/150
提交评论