基于Web的实时信息发布系统的设计与实现_第1页
基于Web的实时信息发布系统的设计与实现_第2页
基于Web的实时信息发布系统的设计与实现_第3页
基于Web的实时信息发布系统的设计与实现_第4页
基于Web的实时信息发布系统的设计与实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、第19卷第12期1999年12月计算机应用ComputerApplicationsVol.19,No.12Dec.1999基于Web的实时信息发布系统的设计与实现李洪宝 曾文方 四川大学计算机学院(西区) 四川#成都(610065)吴凌威自贡电业局四川#自贡(643000)摘 要 本文介绍了一种利用Java的多线程和Socket机制实现的、基于Web发布实时信息的方法,并详细说明了客户程序和服务器程序的实现原理。关键词 CGI,API,Applet,Socket,线程,Browser/Webserver1 引言电力系统是由发电厂、变电站、输电线路等环节构成的一个整体,主要任务是生产并传输电能,

2、供用户使用。为了保证电力系统本身的安全、经济运行,于是在调度中心与被调度的发电厂、变电站之间出现了自动收集、传递、处理实时运行信息的远动系统(或称电网调度自动化系统)。Es400系统就是目前国内应用较多的一种。该系统以计算机网络为基础,分布实现SCADA、负荷控制和部分EMS功能。本文作者利用Browser/Webserver模式实现了对远动系统中实时数据的发布,MIS中的客户仅通过NetscapeNevigator浏览器便可查询实时信息,使用和维护简单、方便。当某个页面改变时,只需改变服务器上的Applet,而客户端无须做任何改变,减少了系统的维护工作。采用同样方法,可以实现类似的实时系统,

3、如股票信息的发布等。也不同。自从Java问世以来,以其独特的平台无关性、多线程支持和简单易用的Applet,倍受用户的青睐。由于AppletAPI为开发者提供了一个扩展Web浏览器的标准并与平台无关,因此,该系统利用Java实现。但由于安全性限制,JavaApplet无法存取本地数据,因此必须增加一个服务器程序(JavaApplica-tion)来存取本地文件,服务器再把取得的数据送到客户端的Applet。3 系统组成及工作原理图1为系统各部分的组成,其工作原理如下:2 系统实现方法的选择在WWW的初期,公共网关接口(CGI)很快使WWW成为一个引人注目的应用开发平台。CGI的特点是开发逻辑简

4、单直接、通用性强,得到了几乎所有Web服务器软件的支持。然而,CGI的最初设计要求为每个请求服务创建一个单独的进程,一个CGI进程处理一个客户请求,启动结束,相应的进程也随之消失。另外,CGI接口是单向的,只能从用户向服务器发送CGI指令,服务器反馈时发送的是一个新的页面,而与原来页面捆绑在一起的应用程序随着页面更新也就不复存在了,因此,用户端的程序几乎不可能与服务器实现交互作用。为改进CGI的性能和可扩展性,Web服务器厂商引进了专有的APIs,例如Netscape的NSAPI,微软的ISAPI等。同时,Netscape还为Navigator引人了一个Web浏览器插件(plug-in)API

5、,这样一来,Web客户机和服务器都可以通过插件加以扩展。然而,插件要求使用专用的APIs,对于不同的操作系统版本图1 系统连接方式图Es400系统为Novell环境,它由两台主机和部分工作站等组成,而工作站可以直接查询该系统中的实时数据。为了保障Es400系统的安全,通过Novell内桥把Es400系统与MIS系统隔离开来,使MIS系统用户不能直接进入Es400系统,保障了Es400系统的安全。图中内桥兼作Novell服务器,实时数据转换工作站从Es400系统中取出的数据存放在该服务器上。在MIS系统实时数据转换工作站上运行Es400系统提供的接口程序,来存取Es400系统的实时数据。它周期性

6、对Novell服务器上的数据进行更新,确保数据的实时性。MIS系统服务器运行NT4.0,安装IIS2.0,作为系统的Web服务器。同时,在NT服务器上运行Java编写的服务器程序,通过NT服务器上安装的Novell网关即可实现对Novell服务器上的数据进行访问。在MIS系统的Win95工作站上安装NetscapeNevigator浏览器对实时数据进行浏览。收稿日期:1999-06-28 李洪宝 硕士研究生。研究方向:计算机网络及信息系统集成、Internet技术。 曾文方 教: :第12期李洪宝等:基于Web的实时信息发布系统的设计与实现 554 系统的实现机制在NT服务器和Win95工作站

7、上运行的Java程序包括服务器程序和客户端用于显示数据的Applet。服务器程序server和客户端的Applet通过Windows的Socket进行通讯。系统模型如图2所示。Yx*GetYx(intstation,intycpoint),遥信函数,用于获得遥信数据。其中,参数station为变电站编号,yxpoint为遥信点。返回值yx为一结构型变量,定义如下:typedefstructintyxvalue;intyxflag;yx;/遥信值及属性/保留从实时系统中获取的实时数据,存入Novell服务器上的数据库中。然后,Socket服务器程序从实时数据库中取出并送到客户端处理。6 客户端A

8、pplet的实现图2 系统模型系统的工作流程如下:客户端(浏览器)通过URL向Web服务器请求HTML页;Web服务器将含有JavaApplet的HTML页面送至客户端,该JavaApplet即客户机程序;Socket客户端程序在客户机上运行,请求与Socket服务器连接;Socket服务器启动一个新的线程响应客户机请求,建立客户机和服务器的Socket连接,通过该连接实现通讯;设Socket客户程序每隔三秒向Socket服务器发送一次数据请求信息;Socket服务器线程根据请求通过Novell网关从Novell服务器上取数据,将结果送回客户端JavaApplet;客户端Applet把结果显示

9、出来,实现数据的更新。Socket服务器的实现利用了Java的多线程机制,为每个新的客户机进程启动一个新的服务器子线程,由子线程与客户机进程建立Socket连接,并保持此连接,该客户机进程的请求与服务器的应答均通过该连接通讯,直至通讯结束,才撤除此连接。5 实时数据的获取客户端所需的实时数据,可从Es400系统中提供的接口函数GetYc(),GetYx()得到。这些函数的定义如下:Yc*GetYc(intstation,intycpoint),遥测函数,用于获得遥测数据。其中,参数station为变电站编号,ycpoint为遥测点编号。返回值yc为一结构型变量,定义如下:typedefstru

10、ctintiycvalue;intycpointposition;floatfycvalue;intycflag;/带符号位整数遥测值/遥测小数点位置/带符号位浮点数遥测值/遥测属性标志Applet只有一个类,它就是Applet本身。该类实现了可运行接口,利用它来创建线程。当Applet启动后,首先调用start()函数,用start()创建一个新的线程实例,过后再用Thread.start()启动创建的线程实例,继而再用stop()函数终止线程。与JavaApplet生命周期相关的几个过程:init() 每一次Applet被载入(或重载时)前,将调用该函数进行初始化。本系统中,用该方法来获取

11、服务器的IP地址;Start() 当Applet被载入后,或用户重新访问包含此Applet所在页面时,调用该函数启动该应用Applet。本系统中,用此方法创建客户端Socket,以便与服务器程序通讯,然后启动Applet的线程;Stop() 当用户离开此Applet所在页面,或者退出浏览器时,将调用该函数以终止应用程序。本系统中,该方法用于终止Applet的线程;Destroy() 调用函数进行最后的清理工作,为Applet的重载作准备。本系统中,用该方法关闭Socket,中断与服务器程序的联接。另外,JavaApplet从类Applet继承了paint()和update()过程,用于显示用户

12、界面,它们的作用分别如下:Paint() 为基本的显示过程,用于显示浏览器中的坐标、接线图等;Update() 用户可以将该过程与Paint()一起使用,以改善显示效果;Repaint() Applet可以通过调用Repaint()函数对屏幕进行主动更新,实现动态效果的关键所在。Repaint()函数执行后,异步地调用update()函数。缺省的update()函数的工作原理是:先用当前背景颜色填充Applet的工作区域,然后调用paint()对屏幕进行更新。在程序中,我们对Applet的update()函数进行了重载,因此在对屏幕页面进行刷新时,使得用户看到的仅是更新屏幕页面上的数据,而屏幕

13、上原有的坐标、图、表、线等均未变动。线程启动后,调用applet中的run()函数。run()函是一环,Repaint(),第19卷第12期1999年12月计算机应用ComputerApplicationsVol.19,No.12Dec.1999不同客户窗口区多文档窗体生成的技巧熊小兵 周永鹏 万淑云 华中理工大学自控系 湖北#武汉(430074)胡春安 南方冶金学院计算机中心江西#赣州(341000)摘 要 主要阐述了在Windows95/98环境下运用BorlandC+5.0的主导编程工具,在客户窗口区的风格为TWindow的主窗体中如何生成客户窗口区的风格为TEdit的子窗体。并给出了具

14、体的方法。具有较高的实用价值。关键词 软件编程,Twindow,Tedit,文档界面1 问题在Windows95/98环境下的应用程序的开发过程中,经常会遇到多文档窗口。这些多文档窗口中的主窗口或者是子窗口的客户窗口的风格类型依据实际要求的不同而不同。在实际参考工具书中所介绍的多文档窗体的生成中,主窗体和子窗体的客户窗口区要不是全部是TWindow风格,那么就全部是TEdit风格。但在实际应用中,这不能满足应用程序的需要。作者在实际应用程序的开发过程中找到了在客户窗口区的风格为TWindow的主窗口中打开一个或多个客户窗口区的风格为TEdit的子窗口的简便方法。以下为创Q建主窗口的客户区为TW

15、indow风格而子窗口的客户区为TEdit风格的多文档窗口实例。文档界面(SDI)框架窗口。这一步我们应用自动创建的方法。这个SDI框架窗口的应用程序假设名为DSP1.IDE。则打开此工程文件,它包括如下节点源程序如图1:图12 步骤a)首先创建一个客户区风格为TWindow的单其中,dsp1app.cpp和dsp1app.h包含了以Tappl-ication派生的应用程序类dsp1app的定义和实现,在详细设计过程中,可根据需要进行修改。不管是框架窗口还是客户窗口都是在此程序里实现。这一部分是我们最关心的。其它的程序分别为:dsp1windv.cpp和dsp1windv.h包含了以TWind

16、ow类的窗口类的定义和收稿日期:1999-09-07(修改稿) 熊小兵 硕士研究生。主要研究方向:电力电子与控制。刷新屏幕,然后再调用Thread.sleep()方法让线程延时3秒(即实时系统中,要求数据更新的周期)。线程的执行流程如图3所示:图3 Applet线程口相连的Socket联接。当Socket成功建立起来以后,accept()返回一个Socket对象。Socket服务器程序利用每个返回的Socket对象生成一个线程,为建立该Socket联接的Applet提供服务。当Applet有数据请求时,它首先通过Socket向服务器程序发送请求信息,请求信息中指明该Applet中所需要的数据。服务器收到该请求后,从Novell服务器上读出相应的数据,返回给客户端,由Applet把接收到的数据在浏览器中显示出来,实现

温馨提示

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

评论

0/150

提交评论