(计算机应用技术专业论文)server+push在监控组态软件平台下的应用.pdf_第1页
(计算机应用技术专业论文)server+push在监控组态软件平台下的应用.pdf_第2页
(计算机应用技术专业论文)server+push在监控组态软件平台下的应用.pdf_第3页
(计算机应用技术专业论文)server+push在监控组态软件平台下的应用.pdf_第4页
(计算机应用技术专业论文)server+push在监控组态软件平台下的应用.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

摘要 监控组态软件,作为一羊申全新的高效的远程监控软件开发平台和 开发模式,越来越受到企业的欢迎,不仅如此,它在机房监控管理、 糖能大厦监控镑理、环保监控管理、智能小区监控管理、变电站迷程 篮控管理等众多领域也展示了其独特的优势。 s e r v e rp u s h 实现技术是实现b s 模式下监控缀态软件的关键技 术,本文在介绍监控组态软件的基础上对其中的软件平台设计做了进 步的研究。对当今监控组态软件平台的发展情况进行了综述,说明 了b s 模式下监控组态软件在监控领域中的重要意义。讨论了在船控 组态平台实现s e r v e r p u s h 的几项关键技术,包括r m i 体系结构,基 于w e b 方式的在线组态设计技术和双缓冲技术,通过分析和比较几 种实现s e r v e rp u s h 豹方法,羞重讨论了将基于r m i 的s e v e rp u s h 技 术应罐子监控组态软件平台的设计方法。 完成后的软件平台满足了项目的设计要求,提供了快速有效的控 制管理平台。问国内外主流的监控组态软件相比,具有简单易用,兼 容性好,移植便捷,系统配黼要求和成本低等优点。 关键词s e r v e rp u s h ,监控组态软件,b s ,r v i i ,组态元 a b s t r a c t m o n i t o r i n gc o n f i g u r a t i o ns o t h v a r eh a sb e e na c c e p t e da n dw e l c o m e d b ym o r ea n dm o r ee n t e r p r i s e s a san e wh i 西e f f i c i e n ts o f t w a r e d e v e l o p m e n tp l a t f o r ma n dm o d e l ,w h a t sm o r e ,i t h a ss h o w ni t s p a r t i c u l a ra d v a n t a g e si ni n t e l l i g e n tb u i l d i n gm a n a g e m e n t ,e n v i r o n m e n t m o n i t o r i n g ,i n t e l l i g e mc o m m u n i t ym a n a g e m e n t ,e l e c t r i c a l t r a n s f o r m e r s u b s t a t i o nm a n a g e m e n ta n ds oo u s e r v e rp u s ht e c h n o l o g yi sak e yt e c h n o l o g yo fr e a l i z i n gf l t e m o n i t o r i n gc o n f i g u r a t i o ns o f t w a r eb a s eo nb s ,i nt h i st h e s i s ,t h ed e s i g n a n da c h i e v e m e n to fc o n f i g u r a t i o ns o f t w a r ep l a t f o r mi sd e e p l yd i s c u s s e d a f t e ri n t r o d u c i n gt h e m o n i t o r i n gc o n f i g l l r a t i o ns o f t w a r e ,f i r s t l y , t h e d e v e l o p m e n to ft h ec o n f i g u r a t i o ns o f t w a r ep l a t f o r mi ss u m m a r i z e da n d i t si m p o r t a n c ea n dv a l u ei n m o n i t o r i n gf i l e da r ee x p l a i n e d s e c o n d l y ; s o m ek e yt e c h n o l o g yi nr e a l i z a t i o nt i l es e r v e rp u s ho fc o n f i g u r a t i o n s o f t w a r e p l a t f o r m a r ed i s c u s s e d t h et e c l m o l 0 9 3 i n c l u d et h er m i s t n l c t u r e ,o n l i n em o d u l ed e s i g na n dd o u b l eb u f f e r i n g ,c o m p a r e ds e v e r a l m e t h o do fr e a l i z a t i o nt h es e r v e rp u s h ,t h er e a l i z a t i o no fs e r v e rp u s h b a s e do nr m ii nm o n i t o r i n gc o n f i g u r a t i o ns o f t w a r ei sd i s c u s s e d d e t a i l y , t h es o f t w a r em e e t st h er e q u i r e m e n to ft i l ep r o j e c t ,a n di tc a np r o v i d e af a s tw a yo fd e v e l o p i n gt h ec o n f i g u r a t i o np i c t u r e s 。c o m p a r e dw i t ho t h e r k i n d so fm ec o n f i g u r a t i o ns o f t w a r ep o p u l a ru s e d t b es o f t w a r ep l a t f o r m h a st h ec h a r a c t e r so fe a s yu s i n g ,g o o dc o m p a t i b i l i t ya n de a s yt r a n s p l a n t , l o ws y s t e mr e q u i r e m e n ta n dl o wc o s t k e yw o r d s :s e r v e rp u s h ,m o n i t o r i n gc o n f i g u r a t i o ns o f t w a r e ,b s , r m i ,c o n f i g u r a t i o nm o d u l e 原剖性声鹗 本人声明,搿呈交黪学健论文是本大在簿努摇浮下述行豹麟究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的媳方癸,论文中不包含其毽人墨缝发表或撰写过的磅究残票,也不 包含为获得中南大学或其他单位的学位或证书而使用过的燃料。与我 共羁工作酶同志对本磅究掰作懿贡献均已在论文中作了骥确憋说明。 作者签名:壶塑日期:趁竺堕年细2 函 关于学镶论文健薅授衩说明 本入了簿申南大学有关爨餐、蕊鲻学位论文熬勰定,g i :学校 有权保留学位论文。允许学位论文被查阅和借阕;学校可以公布学位 论文的金部或部势内容,可以采孀复印、缩印线其它手段保存学位论 文;学校可极据国家或湖南省有关部f 1 规定送交学位论文。 终者签名:袭盟导隳签名撇期逊枣鱼雅妇 硕士学位论文第一章绪论 第一章绪论 s e r v e rp u s h ( 服务器推送) 是近年出现的一种新技术,主要应用于b s 模式 下的系统实现。它主要是针对数据传送的发起端而言,s e r v e rp u s h 由服务器 主动传送数据而不是等待客户端的定期刷新,它和传统的c 1 l e n tp u l l ( 客户端 拉) 相比有极大的优势。对系统和网络带宽占用率低,处理更加灵活。它的基础 思想是将浏览器主动查询信息改为服务器主动发送信息“1 。浏览器仅仅在第一次 发起连接时通知服务器需要哪些信息,服务器处理各个客户端( 浏览器) 的请求, 并把信息并主动推送给浏览器,浏览器显示这些数据,同时保持与服务器的连接。 当服务器发现浏览器需要的信息发生改变时候,主动重新推送数据而不是等待浏 览器请求更新o “1 。以后,服务器仍然可以发送批量数据,依次类推。在监控 组态软件中,数据推送主要是指从各种现场设备采集回来的信息首先由服务器进 行处理,由客户机在服务器上进行定制,服务器将客户需要的那部分监控信息发 送给浏览器。实现b s 模式下的在线监控。 组态软件是指一些数据采集与过程控制的专用软件,它们是在自动控制系统 监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建 工业自动控制系统监控功能的、通用层次的软件工具“。组态软件应该能支持各 种工控设备和常见的通信协议,并且通常应提供分布式数据管理和网络功能。对 应于原有的h m i ( 人机接口软件,h u m a nm a c h i n ei n t e r f a c e ) 的概念,组态软 件应该是一个使用户能快速建立自己的h m i 的软件工具,或开发环境。在组态软 件出现之前,工控领域的用户通过手工或委托第三方编写h m i 应用,开发时间长, 效率低,可靠性差;或者购买专用的工控系统,通常是封闭的系统,选择余地小, 往往不能满足需求,很难与外界进行数据交互,升级和增加功能都受到严重的限 制。组态软件的出现,把用户从这些困境中解脱出来,可以利用组态软件的功能, 构建一套最适合自己的应用系统。随着它的快速发展,实时数据库、实时控制、 s c a d a 、通讯及联网、开放数据接口、对i o 设备的广泛支持已经成为它的主要 内容,随着技术的发展,监控组态软件将会不断被赋予新的内容。“。 监控组态软件,作为一种全新的高效的远程监控软件开发平台和开发模式, 越来越受到企业的欢迎,不仅如此,它在机房监控管理、智能大厦监控管理、环 保监控管理、智能小区监控管理、变电站远程监控管理、远程医疗、远程会议等 众多领域也展示了其独特的优势“”“。 目前国内较多使用的监控组态软件主要有如下几种:美国w o n d e r w a r e 公司的 i n t o u c h ;美国i n t e l l u t i o n 公司的f i x 产品;澳大利亚c i t 公司的c i t e c h 产品; 硕士学位论文 第一章绪论 s i e m e n s 公司的w i n c c ;北京亚控公司的组态王;大庆三维公司的 f o r c e c o n t r o l ( 力控) 等。它们各有特色,在不同的方面有其优势和劣势“2 3 1 1 课题的提出 近年来,随着网络技术不断发展,尤其是基于w e b 的信息发布、j a v a 计算技 术以及网络分布式对象技术的飞速发展,很多应用系统的体系结构从c s 结构向 更加灵活的多级分布结构演变,使得软件系统的网络体系结构跨入一个新阶段, 即b s 体系结构( 浏览器n 务器模式) ,基于b s 模式的监控组态软件,具有 c s 模式下的监控组态软件所不具备的一系列优点“”“: ( 1 ) 具有分布性特点,可以方便地应用于i n t e r n e t 和i n t r a n e t 。 ( 2 ) 维护简单方便,只需要改变服务器程序,即可实现所有用户的同步更新。 ( 3 ) 通用性强,针对不同的客户无须重新开发客户端。 但是b s 模式也有其缺点: ( 1 ) 个性化特点明显降低,无法实现具有个性化的功能要求。 ( 2 ) 安全性和网络压力比较大 ( 3 ) 功能弱化,难以实现传统模式下的特殊功能要求。 ( 4 ) 技术方面相对c s 技术来晚不够成熟,而且客户端为浏览器,为了实现其 通用性而牺牲一定的功能且限制较多,开发比较困难。 通过对比我们可以发现,b s 模式和c s 模式的优缺点互相补充,因此,我 们希望可以开发b s 模式下的监控组态软件以弥补一直以来被广泛采用的c s 模式的监控组态软件的不足,然而,目前使用的监控组态软件都主要采用c s 模 式,主要原因是采用传统的p u l l 方式基本上不可能实现基于b s 模式的监控组态 软件。 1 1 1 传统c i i e n tp u l i 方式实现b s 模式下监控组态软件的不足 传统的c l i e n tp u l l 方式由浏览器定时刷新页面来请求服务器的更新信息, 也就是在文件头力n 标签,表示每隔三 秒浏览器刷新一次信息,从服务器重新请求整个页面来更新页面数据“。c l i e n t p u l l 就是以这种h t m l 文件头来自动刷新页面的方式,来重新读取服务器的最新 信息。这种方式显然不适合于监控组态软件的应用,主要的缺点有以下几个方面: ( 1 ) 每次刷新都会刷新整个页面,对于监控软件来讲,如果作为图像传送, 网络的流量会变得极大。 硕士学位论文第一章绪论 ( 2 ) 实时性差,每次刷新都有一定的时间间隔,在网络流量大时更是如此 因此很难应用于实时性要求比较高的监控组态软件。 ( 3 ) 定时的刷新整个页面会造成严重的图像闪烁。 1 1 2 使用s e r v e rp u s h 实现监控组态软件的优势 s e r v e rp u s h 的出现,很好地解决了以上这些问题: ( 1 ) 在s e r v e rp u s h 模式下,服务器和浏览器并不挂断连接,因此可以把信 息传递的发起端放在服务器端,无需刷新整个页面,通过适当的j a v a s c r i p t 脚 本更新浏览器页面的一部分,因此对网络的压力比较小。 ( 2 ) 在s e r v e rp u s h 模式下,更新数据信息的发起端为服务器端,当服务器 检测到监测的硬件有更新信号或者报警信号时,启动线程发送数据,实时性比较 好。 ( 3 ) 而且更新小部分页面而不是整个页面,可以解决监控界面的闪烁问题。 因此,我们可以看出,s e r v e rp u s h 可以解决长期以来困扰b s 模式下监控 软件实时性差,网络压力大的问题,是能否将组态软件应用于b s 平台的关键。 1 1 3 实现s e r v e rp u s h 的几种方法 在现有技术条件下,能够实现s e r v e rp u s h 主要有几种方法: ( 1 ) 利用多重m i m e 报文实现s e r v e rp u s h ( 2 ) 利用s o c k e t 编程序实现s e r v e rp u s h ( 3 ) 利用r m i 编程实现s e r v e rp u s h 这些方法在不同的方面应用,各有优劣,本文将在后面章节中对这些方法作 出详细的分析比较。 1 1 4s o c k e t 编程简要介绍 m i m e 报文是h t t p 协议中一种报文组织形式“”。 s o c k e t ( 套接字) 接口是t c p i p 网络最为通用的a p i ( 应用程序接口) ,也是 在i n t e r n e t 上进行应用开发最为通用的a p i 。最初为,研究人员为t c p i p 网络 通信开发了的用于u n i x 系统a p i “。9 0 年代初,由m i c r o s o f t 联合了其他几家 公司共同制定了一套w i n d o w s 下的网络编程接口,即w i n d 0 w s s o c k e t s 规范。它 是b e r k e l e y s o c k e t s 的重要扩充,主要是增加了一些异步函数,并增加了符合 硕士学位论文第一章绪论 w i n d o w s 消息驱动特性的网络事件异步选择机制。w i n d o w s s o c k e t s 规范是一套开 放的、支持多种协议的w i n d o w s 下的网络编程接口。从1 9 9 1 年的1 0 版到1 9 9 5 年的2 0 8 版,经过不断完善并在i n t e l 、m i c r o s o f t 、s u n 、s g i 、i n f o r m i x 、 n o v e l l 等公司的全力支持下,已成为w i n d o w s 网络编程的事实上的标准。目前, 在实际应用中的w i n d 0 w s s o k c e t s 规范主要有1 1 版和2 o 版。两者的最重要区 别是1 1 版只支持t c p i p 协议,而2 0 版可以支持多协议。2 0 版有良好的向 后兼容性,任何使用1 1 版的源代码,二进制文件,应用程序都可以不加修改地 在2 0 规范下使用“”o 。 s o c k e t 实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个 具有s o c k e t 接口的计算机通信。应用程序在网络上传输,接收的信息都通过这 个s o c k e t 接口来实现。在应用开发中就像使用文件旬柄一样,可以对s o c k e t 旬柄进行读写操作”“。 1 1 5r m i 的简要介绍 j a v ar m i ( r e m o t em e t h o di n v o c a t i o n ) 是s u n 公司的基于j a v a 软件的分布 式处理机制,它提供了一种简单、直接的分布式应用系统的实现模式。2 1 它允许 不同虚拟机上、不同地址空间里的对象彼此调用其它对象的方法。实际上r m i 采用了r p c ( r e m o t ep r o c e d u r ec a l l ,远程过程调用) 机制,但它更具有面向 对象的特征而且又限制在两个j v m ( j a v a 虚拟机) 之间。j a v ar m i 的最大优势 是允许能够像传递简单类型数据一样直接进行整个对象的传递。除此之外,就是 其绝对的平台无关性,由于目前j a v a 语言已成为i n t e r n e t 上占绝对优势的广泛 运用的程序语言,所以基于i n t e r n e t 的多操作系统平台应用系统来说,其优势 所在是d c o m 和c o r b a 所不能及的。 r m i 通过t c p i p 在内部使用s o c k e t ,它能够帮助我们查找并执行远程对象 的方法o ”。r m i 的目的是让位于不同j v m 中的对象,在外观及行为上都像是本地 的对象。 通常,我们把调用这种远程对象的j v m ,称为客户机:而把包括这种远程对 象的j v m ,称为服务器。尽管对一个远程对象的引用和获得对本地对象的引用有 所不同,但我们可以把远程对象像本地对象一样使用。应用程序并不知道一个对 象是远程的还是本地的。实际上,远程对象上被调用的方法与本地对象上调用的 方法,具有相同的语法结构。 作为r m i 的底层( 会包含复杂的s o c k e t 操作) ,它会自动截获方法调用, 找到远程对象,然后处理远程请求。r m i 设计的重要之处,就在于不但在设计上 硕士学位论文 第一章绪论 实现了远程访问功能,而且实现了设计的透明性。 r m i 的基本体系结构如图卜1 ,概括起来说,由三个抽象层组成“: ( 1 ) 桩框架层( s t u b s s k e l e t o n sl a y e r ) r m i 为我们引入了两种特殊类型的对象,称为桩( s t u b ) 和框架( s k e l e t o n ) , 它们组成了r m i 的第一层。 在远程通信的时候,要利用t c p i p 协议,做很多底层数据的打包传输。运 用j a v a 技术,我们先要把数据或者对象转换成字节流( b y t es t r e a m ) ,便于网络 传输,这个过程叫汇集( m a r s h a l i n g ) ;当收到远程传来的字节流后,我们要把流 信息转换成对象或者数据,这个过程叫解读( u n m a r s h a l i n g ) ,它与汇集刚好相反 “。s t u b 和s k e l e t o n 层位于实际应用程序之下,建立在p r o x y ( 4 - 4 理) 设计 方案之上。s t u b 类的作用是远程服务器实现的代理的角色,s t u b 是客户方对象; s k e l e t o n 类用于帮助对象通过r m i 链接与s t u b 通信,它从链路中读取方法调用 的参数,向远程服务实现对象进行调用,接受返回值,然后再把返回值写回到 s t u b 。 图卜ir m i 体系结构 ( 2 ) 远程引用层( r e m o t er e f e r e n c el a y e r ) 远程引用层定义和支持着r m i 连接的调用语义( s e m a n t i c s ) 。 r m i 进行远程访问要用到j r m p ( j a v ar e m o t em e t h o dp r o t o c o l ,即j a v a 远程 方法协议) ,这一层提供专用于j r m p 的r e m o t e r e f 对象,它位于j a v a r m i s e r v e r 包内,代表着远程对象的一个句柄。r e m o t e r e f 使用远程引用来执行远程对象的 一个远程方法调用。 硕士学位论文 第一章绪论 ( 3 ) 传输层( t r a n s p o r tl a y e r ) 传输层在j v m 之间建立基于流的网络连接,并且负责设置和管理这些连接。 这时候,r m i 使用一种线级( w i r e l e v e l ) 协议进行基于t c p i p 的连接,该协议 就是j a v a 远程方法协议( j r m p ,即j a v ar e m o t em e t h o dp r o t o c 0 1 ) 。 1 2 本文主要的研究内容 论文的主要研究内容包括以下几个方面: ( 1 ) 分析比较了几种实现s e r v e rp u s h 的方法 ( 2 ) 结合监控组态软件,重点介绍了基于r m i 方式的s e v e rp u s h 的实现 方法。包括接口的设计与实现,数据库设计,服务器端设计及数据处理流程,以 及嵌入a p p l e t 的浏览器作为客户端的客户端定制及数据显示。 此外,论文对一些相关技术也有涉及,如现场总线,通信总线技术等。由于 篇幅限制,论文没有单独对这些技术作深入探讨。 1 3 本文的结构安排 本文的结构安排如下: 第一章绪论 本章介绍了s e r v e rp u s h 的概念,分析了监控软件的发展及现状,介绍了国 内外的几种常见监控组态软件,阐述了论文课题提出及其研究意义,本章简要介 绍了目前已经实现的几种s e r v e rp u s h 方法,重点介绍了基于r m l a p p l e t 的 s e r v e rp u s h 技术。并对本文的主要工作和文章结构进行了简单的说明。 第二章几种s e r v e rp u s h 的实现方法及比较 本章从理论上分析了几种实现s e r v e rp u s h 的方法,并对这些方法的有劣进 行比较,通过比较得出利用r m i 实现s e r v e rp u s h 在监控组态软件中最具有优势 的结论。 第三章基于r m i 的数据p u s h 流程 本章结合监控组态软件的实现讨论了基于s e r v e rp u s h 的监控组态软件的总 体设计实现及数据p u s h 流程,详细分析了利用s e r v e rp u s h 实现。 第四章利用r m i 实现s e r v e rp u s h 的接口设计及实现 本章主要介绍在监控组态软件平台下利用r m i 实现s e r v e rp u s h 的接口设计 及实现。定义并实现了主要的系统接口。 硕士学位论文 第一章绪论 第五章基于s e r v e rp u s h 技术的监控组态软件服务器端设计 本章主要介绍了基于s e r v e rp u s h 技术的监控组态软件的服务器端设计与实 现,包括数据轮询推送的一些关键实现。 第六章客户端实现 本章主要介绍了客户端实现,包括在线路定制组态元信息,推送组态元的客 户端显示,组态元的在线编辑等。 第七章总结与展望 本章是论文的结束部分,总结了本文的研究成果,分析了基于r m i 的s e r v e r p u s h 技术的不足与优势,分析了监控软件发展趋势,对以后的工作做出了进一 步的展望。 1 4 课题研究的意义 功能完善,易扩展的远程监控组态平台能够在很大程度上增强企业的竞争力 和管理的高效性。面对激烈的市场竞争,为了及时掌握和分析最新信息和提高整 个系统的运行效率,企业对监控系统提出了更高的要求。特别是当企业对原来系 统进行功能扩展和应用维护时,系统的可重用性,易扩展性和稳定性是设计者首 先要考虑的问题。 基于b s 模式的组态软件的开发,可以降低组态软件的维护难度,将以往用 于i n t r a n e t 的监控组态软件延伸到i n t e r n e t ,并可以大大提高组态软件的通用 性,更好地适用于各种平台而无须重新开发,大大节约了成本。 基于j a v a 的r m i 技术的s e r v e rp u s h 在b s 模式组态软件下应用,可以有 效地加强系统的伸缩性和适应能力,并且大大提高的分布处理能力。提高了系统 性能,降低了对网络资源的消耗。 硕士学位论文 第二章几种s e r v e rp u s h 的实现方法及比较 第二章几种s e r v e rp u s h 的实现方法及比较 2 1 几种s e r v e rp u s h 的实现方法 2 1 1 利用特殊的m i m e 报文实现s e r v e rp u s h 服务器在响应请求时,h t t p 使用m i m e 报文格式来封装数据 2 8 o 通常一个h t t p 响应只能包含一个数据块。但m i m e 有一种机制可用一个报文( 或h t t p 响应) 表 示将多个数据块,这种机制就是成为“m u l t i p a r t m i x e d ”的标准m i m e 类型。 m u l t i p a r t m i x e d 报文大体格式如下: c o n t e n t t y p e :m u l t i p a r t m i x e d :b o u n d a r y = t h i s r a n d o m s t r i n g 一一t h i s r a n d o m s t r i n g c o n t e n t t y p e :t e x t p l a i n 第一个对象的数据。 一一t h i s r a n d o m s t r i n g c o n t e n t t y p e :t e x t p l a i n 第二个对象的数据。 t h i s r a n d o m s t r i n g 上述报文包括两上数据块,二者的类型都是“t e x t p l a i n ”。最后一个 “t h i s r a n d o m s t r i n g ”后的两条短线( - - ) 表示报文结束,后面没有数据。对 于服务器推送,使用一个“m u l t i p a r t m i x e d ”类型的变种 一m u l t i p a r t x - m i x e d r e p l a c e 。这里,“x 一”表示属于实验类型。“r e p l a c e ” 表示每一个新数据块都会代替前一个数据块。也就是说,新数据不是附加到旧数 据之后,而是替代它“1 。 下面是实际使用的m u l t i p a r t x m i x e d r e p l a c e 类型: c o n t e n t t y p e :m u l t i p a r t x m i x e d r e p l a c e :b o u n d a r y = t h i s r a n d o m s t r i n g 一一t h i s r a n d o m s t r i n g c o n t e n t t y p e :t e x t p l a i n 第一个对象的数据 一一t h i s r a n d o m s t r i n g c o n t e n t t y p e :t e x t p l a i n 第二个对象的数据。 t h i s r a n d o m s t r i n g l r 硕士学位论文第二章几种s e r v e r p u s h 的实现方法及比较 “m u l t i p a r t x m i x e d r e p l a c e ”报文没有结尾。也就是说,服务器可以永 远保持连接,并发送所需的数据。如果用户不再在浏览器窗口中显示数据流,或 者浏览器到服务器问的连接中间( 例如用户按“s t o p ”按钮) ,服务器的推送才 会中断。这是使用服务器推送的典型方式。 当浏览器发现“c o n t e n t t y p e ”头标或到达头标结束处时,浏览器窗口中的 前一个文档被清除,并开始显示下一个文档。发现下一个报文边界时,就认为当 前数据块( 文档) 已经结束。 使用这一技术的关键是 “m u l t i p a r t x m i x e d r e p l a c e ”报文, ,服务器并不是推送整个 而是每次发送后数据块。h t t p 连接始终 保持,因而服务器可以按自己的需要推送新的数据,当服务器需要发送新数据时, 它开始,客户端相应的窗口进行自我更新。 “m u l t i p a r t x m i x e d r e p l a c e ”类 型的报文由唯一的边界线组成,这些边界线分割每个数据块。每个数据块都有自 己的头标,因而能够指定对象相关的内容类型和其他信息。由于 “m u l t i p a r t x m i x e d r e p l a c e ”的特性是每一新数据块取代前一数据对象,因 而浏览器中总是显示最新的数据对象。 总之,服务器推送的数据由一组头标( 通常包括“c o n t e n t t y p e ”) 、数据 本身和分割符( 报文边界) 三部分组成。浏览器看到分割符时,它保持状态不变, 直到下一个数据块到达。 2 1 2 利用s o c k e t 编程实现s e r v e rp u s h 采用s o c k e t 编程,编写一个专用的w e b 服务器进行数据推送,根据h t t p 协 议、h t m l 规范,接收到浏览器的请求以后,模仿b t t p 服务器的响应,将信息数 据发回客户机( 浏览器) ,在h t t p 协议中, 一般浏览器发过来的请求头都为如下的格式。“: g e t i n d e x h t m l h t t p 1 1a c c e p t :w w w s o u r c e :t e x t h t m l :i m a g e g i f :i m a g e j p e g : u s e r a g e n t :m o z i l l a 4 0 ( c o m p a t i b l e :m s i e5 0 0 :w i n d o w s9 8 ) c o n n e c t i o n :k e e p a 1 i r e 空行料 这个报文是向主机请求一个缺省h t m l 文档。客户端h t t p 协议版本号是1 1 版,头信息包括可接收的文件格式,用户代理,每一段之间用回车换行符分g e t 硕士学位论文第二章几种s e r v e rp u s h 的实现方法及比较 后面那一页就是表示要请求的页。当服务器建立连接成功时,发送一个如下的返 回头给浏览器: h t t p 1 12 0 0o k d a t e :t u e ,2 0s e p2 0 0 00 2 :1 9 :5 7g m t s e r v e r :a p a c h e 1 2 6 c o n n e c t i o n :c l o s e c o n t e n t t y p e :t e x t h t m l $ $ 空行料 h t t p 1 1 表示这个h t t p 服务器是1 1 版,2 0 0 是服务器对客户请求的应答 状态码,o k 是对应答状态码的解释,之后是这个文档的信息和文档正文。在一 般情况下,服务器发送完数据则挂断连接,实现推送技术的关键是:,然而我们 并不把整个页面输出给浏览器,我们只返回整个页面中的静态部分,这一部分在 完成后不需要更新数据,然后是一个j a v a s c r i p t 块, p r e l o a d ( “图片名”) : 将仪表可能需要的图片预装入浏览器,显示所需要更新的图片不是从服务器 上读而是直接从浏览器的缓存里面读取,这样可以大大加快浏览器刷新数据的速 度,减小网络流量。最后是动态的部分,每一个动态的仪表都要设置一个i d , 然后是一个j a v a s c r i p t 块,完成仪表和数据的初始化。完成s e r v e rp u s h 的关 键是,完成这些工作以后,线程并不主动挂断连接,而是直接返回,这样,浏览 器好像在接收一个非常巨大的页面,始终保持和服务器的连接。当完成上面的工 作后,我们就可以直接转入对组态软件的数据处理,检测各个监测点传出来的数 据的变化,当发现要引起仪表的数据改变时候,我们唤醒向浏览器传送数据的线 程,因为要更新的图像已经在初始化的时候传给浏览器而且装入了浏览器的缓 存,因此我们紧紧需要传递很小的一段数据给浏览器让浏览器显示对应的图像, 我们采用是一个j a v a s c r i p t 块,这个小脚本块采用如下的格式: d o c u m e n t 仪表i d s r c = 仪表数据: 完成仪表和数据的更新,重新回到休眠状态。 利用s o c k e t 编程实现s e r v e rp u s h 的流程如下: m a i n 0 硕士学位论文 第二章几种s e r v e rp u s h 的实现方法及比较 ( 创建服务器套接字s e r v e rs o c k e t0 : 创建监视离线线程0 : w h i l e ( t r u e ) f s e r v e r s o c k e t 侦听端口p o r t : i f ( 端口p o r t 有请求信息) 创建、启动响应线程,处理请求( ) 读取,处理监控数据0 : 木术木术木丰木半丰丰丰丰半丰年半丰丰 创建、启动响应线程( ) ( 分析、检查请求头信息( ) i f ( 一般页面请求) 检查请求页面( ) ; 响应请求0 : ) e l s ei f ( 动态页面请求) 创建始终连接0 : 发送主框架0 : r e t u r n 0 : 2 1 3 利用r m i 实现s e r v e rp u s h r m i 允许j a v a 程序调用远程服务器上的一些对象和方法。而且,运行在服务 器上的方法也可以调用客户机上对象的方法、返回值和参数,可以在本地主机和 远程服务器之间来回传递。从本质上说,是一个程序的一部分运行在本地客户机 的j a v a 虚拟机上,而另一部分运行在远程服务器的j a v a 虚拟机上。r m i 造成了 硕士学位论文 第二章几种s e r v e rp u s h 的实现方法及比较 这样的假象,这个分布式程序运行在这样一个系统上,所有代码都存储在一块存 储空间,而数据通过真正的物理连接为客户机和服务器所使用。”。“。r m ia p i 使 得不同主机上j a v a 对象能够相互通信。远程对象在服务器上,每个远程对象实 现一个远程接口,来指定客户机调用它的哪一个方法。客户机调用对象的方法几 乎与调用本地对象的方法完全一样。从编程者的角度去看,远程对象和方法的执 行方式与本地对象和方法的执行方式非常相似。所有的实现细节都隐藏起来。用 户导入一个包,查找远程对象并确保在调用对象的时候能够捕获 r e m o t e e x c e p t i o n 。远程对象和本地对象的基本区别就在于远程对象保留在不同 的虚拟机上。通常情况下,对象变量传递到方法。方法通过引用特定虚拟机的对 象返回对象的值,这称作“传递引用” 2 9 o 因为r m i 的这种特性,我们可以利用 回调实现从服务器端到客户端的s e r v e rp u s h ,客户端仅需要在开始时候对服务 器端请求连接。处理过程是由服务器定义登录客户端对象的方法,当服务器的资 源状态发生变化时,由服务器对象负责通知己登录的客户端对象。 2 2 几种s e r v e rp u s h 实现方法的比较 2 2 1 利用特殊的m e 数据报文实现s e r v e rp u s h 的优势和劣势 这种技术的优势在于它非常容易实现。在一定的环境下可以非常方便地进行 编程。支持这种报文的服务器也非常得多,几乎可以用任何语言来进行编程。因 此,我们可以利用这种方式在一些简单的应用中快速得开发简单使用的基于 s e r v e rp u s h 的软件。 它的缺点是,因为是n e t s c a p e 提出这一概念,因此也仅仅被n e t s c a p e 浏览 器支持,在i e 浏览器中,每个数据块都会显示出来而不是更新数据块,因此, 它的局限性非常大。用它来实现组态软件违背了组态软件的最初的通用性的目 标。 2 2 2 利用s o c k e t 编程实现s e r v e rp u s h 的优势和劣势 采用s o c k e t 编程实现服务器数据的推送的优点是:适应性比较好,可以适 于各种浏览器;效率比较高,因为s o c k e t 编程相对来说比较底层,因此,它的 执行效率比较高。用c 语言可以写出执行效率非常高的代码,和利用r m i 实现的 s e r v e rp u s h 相比,无论是执行速度还是内存占用都占有一定的优势。 使用s o c k e t 编程实现s o c k e t 编程有其不足之处,首先,编程很复杂,使用 硕士学位论文 第二章几种s e r v e rp u s h 的实现方法及比较 s o c k e t 实现服务器推送进行复杂的网络底层编程,其次是系统稳定性并不特别 的好,因为在这种方式下,必须进行比较复杂的阻塞和线程操作,稍有不慎,极 容易引起整个系统的崩溃。对程序员的要求比较高。其次,因为是用自己编写的 特殊的服务器,因此,不容易实现它的功能的扩展。另外,对于s o c k e t 编程来 说,系统在不断开连接的情况下会占用系统端口,因此,有多少个客户端就会占 用多少个系统端口,这对于系统来说是一个很大的开销”“。 2 2 3 利用r m i 实现s e r v e rp u s h 的优势和劣势 利用r m i 实现s e r v e rp u s h 主要有如下优势: 类的动态加载:r m i 允许传入r m i 调用中的参数、返回值和异常为任何可序 列化对象。r m i 使用对象序列化机制将数据从一个虚拟机传输到另一个虚拟机, 同时用相应的位置信息注释调用流,以便在接收端上加载类定义文件。动态加载 类的好处就是我们在初始化系统的时候可以仅仅载入一小部分关键的类到浏览 器。其它的如组态元可以在运行时候动态加载,而无须在一开始就加载所有的类, 大大降低了网络流量和加载时问。 完全的面向对象:r m i 可将完整的对象作为参数和返回值进行传递,而不仅 仅是预定义的数据类型。因此,利用r m i 可以将非常负责的类型作为参数进行传 递,这对监控组态平台来说异常重要,因为监控数据可能非常复杂。而在s o c k e t 编程情况下,只能将此类对象分解成基本数据类型传递给客户端,然后在客户端 上重建。而r m i 则不需额外的客户程序代码,通过序列化直接跨网传递对象。r m i 可将属性( 类实现程序) 从客户机移动到服务器,或者从服务器移到客户机。对象 传递功能使我们能充分利用面向对象技术的强大功能,如二层和三层结构系统。 所有面向对象的设计方式无不依靠不同的属性来发挥功能,如果不能传递完整的 对象包括实现和类型一就会失去设计方式上所提供的优点。 便于编写和使用:r m i 使得j a v a 远程服务程序和访问这些服务程序的j a v a 客户程序的编写工作变得轻松、简单。远程接口实际上就是j a v a 接口。服务程 序大约用三行指令宣布本身是服务程序,其它方面则与任何其它j a v a 对象类似。 这种简单方法便于快速编写完整的服务程序。 可连接现有原有的系统:r m i 可通过j a v a 的本机方法接口j n i 与现有系统 进行交互。利用r m i 和j n i ,能使用现有的服务器端程序。在使用r m i j n i 与现 有服务器连接时,可以有选择地用j a v a 重新编写服务程序的任何部分,并使新 的程序充分发挥j a v a 的功能。类似地,r m i 可利用j d b c 、在不修改使用数据库 的现有非j a v a 源代码的前提下与现有关系数据库进行交互。 硕士学位论文 第二章j l 种s e r v e rp u s h 的实现方法及比较 通用性和适用性比较好:r m i 可以完全利用j a v a 的跨平台使用性能。任何基 于r m i 的系统均可在任何j a v a 虚拟机上进行移植,r m i 系统也不例外。另外,如 果使用r m i j n i 与现有系统进行交互工作,则采用j n i 编写的代码可与任何j a v a 虚拟机进行编译、运行。 2

温馨提示

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

评论

0/150

提交评论