专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程思想 » flex系统时间:基于Flex的服刑人员监控系统的研究和实现 »正文

flex系统时间:基于Flex的服刑人员监控系统的研究和实现

来源: 发布时间:星期三, 2009年2月11日 浏览:15次 评论:0
  1 引言

  在监狱中服刑人员在监狱里自由活动或者在组织服刑人员外出劳作过程中如果缺乏高效监管措施很容易给服刑人员以可趁的机逃出监管范围为了能有效地对在押服刑人员进行跟踪提高监控效率智能人员监控系统应运而生通过让服刑人员佩戴特制副机监管人员使用手持式阅读器读取副机发送信号从而能监测副机目前活动状态并直接或者通过中继站和主控机站通信监控系统获取信息并处理数据后及时反馈给监管人员系统有效地降低了监管人员工作强度并提高了监管效率

  传统BS架构监控系统客户端处理数据能力并不强对服务器端依赖很大而实时监控需要在客户端和服务器的间频繁传递数据并且服务器同时也要把显示页面传回给客户端这将增大服务器负担针对此问题系统以Flex作为表现层不仅提高了客户端处理数据、展示数据能力同时服务器端和客户端传递只有数据而没有传统页面界面布局变化完全由客户端执行处理

  Flex平台采用面向对象编程语言ActionScript3区别于现在流行浏览器编程语言JavaScriptActionScript3更为强大事实上从语法结构上它更像C#和Java[1] 因此基于Flex开发RIA应用能够创建灵活而强大业务逻辑传统基于Web应用大部分业务逻辑都依赖于服务器端强类型语言如JavaC#而基于FlexWeb应用可以将相关业务逻辑转移至客户端处理极大地减轻了服务器负担Flex界面设计和布局采用MXMLMXML是基于XML声明式标签语言能方便快速构建自己界面布局和界面行为方式同时能够将数据绑定到相关MXMLControl控件上如果数据内容发生变化将动态更新于界面无需任何页面刷新动作

  ActionScript3拥有内建支持E4X(ECMAScript for XML)XML操作类因此在客户端里面能够更简单、更灵活有效处理XML数据通过E4X我们处理XML数据速度将更快于其它客户端编程语言如Javascript另外对XML强大支持也让客户端和服务器端交互更为直接和快速

  Flex提供了 3种和服务器交互数据访问组件分别是HTTP(REST-style)服务WebService和RemoteObject可根据服务器区别技术应用使用区别访问组件灵活而强大

  2 系统结构

  本文采用Flex框架作为表现层和数据交互引擎充分利用其客户端运算能力和客户端缓存Cache能力从而减轻了服务器负担减少了响应时间和传递数据量在此基础上构建了个B/S结构服刑人员监控系统图1描述了系统体系结构系统采用了表现层、业务逻辑层、数据层和串口通信层体系结构层和层的间实现了松散耦合



  图1 系统结构

  2.1 串口通信层

  在系统和主控机的间使用VB串口通信(采用是RS-232串口标准)实现数据交互[2]上层应用向串口通信层发出指令后主机服务器即可从和其串口连接主控机上读取服刑人员状态原始信号数据从而为监控系统实际工作准备基础数据此数据由监控人员手持设备定时向主控机发送VB串口通信层对数据进行解析并以特定XML文件格式保存数据于服务器供Flex端读取并进行分析和处理同时Flex端根据数据结果实施相应动作

  2.2 表现层

  Actionscript3读取串口通信层生成XML其强大XML分析处理能力使得客户端无需向服务器端发送任何处理请求处理后数据通过在相应Control控件上数据绑定实时更新于界面上如果服刑人员状态信息不正常系统自动执行警示信息并和服务器交互获取相应服刑人员详细信息并在客户端进行缓存Cache

  传统基于Web应用般都将业务逻辑处理置于服务器端进行客户端资源得不到充分利用通过使用Flex平台构建RIA应用系统可将相关业务逻辑和数据处理交给客户端来运行减轻了服务器压力使服务器只用来进行相应人员数据传输和读取原始描述服刑人员状态信息XML文件

  同时我们还可以将服务器端传输来数据缓存Cache移至Flex端些经常用到固定信息(如服刑人员基本情况信息服刑人员历史监控状态信息)在服务器第次返回这些数据后Flex端将缓存Cache这些数据避免频繁请求这些信息和传统数据缓存Cache于服务器模式相比无需再次占用网络带宽访问服务器缓存Cache数据更大程度地减轻了服务器负担

  2.3 业务逻辑层

  业务逻辑层负责和Flex客户端进行通信业务逻辑层通过Servlet处理Flex请求读取服刑人员状态信息XML文件并返回于客户端;获取服刑人员详细数据信息;应用服务器定义了系统业务规则负责响应请求、记录日志、读取或保存相关数据采用了更为强大客户端服务器业务逻辑功能得到了简化减轻了服务器负担

  2.4 数据层

  数据层由多数据服务器构成主要有:日志档案文件、服刑人员信息数据库、服刑人员历史状态信息数据库、服刑人员实时状态信息文件存储、管理和维护

  3 系统开发中关键问题和解决方案3.1 通过串口通信生成XML数据结构

  服刑人员状态信息数据是监控系统传送数据核心使用数据描述语言XML定义它结构状态信息数据主要包括服刑人员编号、用于发送数据手持监控器编号和服刑人员未被监控到时间信息生成XML数据格式如下:

<?xml version="1.0" encoding="utf-8"?>
<prisoners>
  <prisoner>
    <prisonId>0001</ prisonId>
    <monitorId>E7</monitorId>
    <leftTime>17:27</leftTime>
  </prisoner>
  <prisoner>
    <prisonId>0002</ prisonId>
    <monitorId>E7</monitorId>
    <leftTime></leftTime>
  </prisoner>
  <prisoner>
    <prisonId>0003</prisonId>
    <monitorId>E7</monitorId>
    <leftTime>17:27</leftTime>
  </prisoner>
     …
</prisoners>


  3.2 Flex客户端和Java服务器端交互

  Flex提供了 3种数据交互模式分别是HTTPServiceWebService和RemoteObject鉴于服务器端采用Servlet处理客户端请求在此我们使用HTTPService模式和服务器交互[1]HTTPServcie使用事件机制处理服务器返回结果实现了良好异步功能同时通过数据和组件绑定将结果动态更新于界面过程简单流畅

  Flex和传统基于Web应用相比彻底摆脱了浏览器限制无需考虑运行于区别浏览器是否采用区别编码设计Flex和服务器交互Actionscript3代码实现如下:

Public function getPrionerInfo(reqType:String=”GET”url:String=””param:URLVariables=null):void
{
  var fetcher:HTTPService = HTTPService
  fetcher.url = url;
  fetcher.method = requestType
  fetcher.resultFormat = HTTPService.RESULT_FORMAT_E4X;
  //添加事件侦听
  fetcher.addEventListener(ResultEvent.RESULTresultHandler);
  fetcher.addEventListener(FaultEvent.FAULTfaultHandler);
  //发送请求
  fetcher.send(param);
}


  事件侦听结果处理:

private function resultHandler(evt:ResultEvent):void
{
     //移除事件侦听
     fetcher.removeEventListener(ResultEvent.RESULTresultHandler);
  //返回数据处理代码:
  var xmlStuff:XML = XML(evt.result);
  var prisonerList:XMLList = xmlStuff .prisoner;
  //将XML数据封装为Prisoner对象方便使用
  for each(var prisonerXml:xml in prisonerList)
{
     var prisoner:Prisoner = Prisoner
     prisoner. prisonId = prisonerXml. prisonerXml;
     prisoner. monitorId = prisonerXml. monitorId;
     prisoner. leftTime = prisonerXml. leftTime;
     //将服刑人员状态信息存入个容器方便随时存取
     this.prisonerArrayCollection.addItem(prisoner);
}
}
  private function faultHandler(evt:FaultEvent):void
{
    //移除事件侦听
fetcher.removeEventListener(FaultEvent.FAULTfaultHandler);
  //返回结果处理代码:
  //  …
}




  由以上实现代码可以看出Flex和服务器交互无缝结合良好事件机制实现了数据访问异步化同时ActionScript3面向对象编程和强大XML处理能力让客户端编程变得简单高效

  4 结束语

  本文分析了传统Web应用存在客户端资源得不到充分应用和服务器负担重问题通过构建基于Flex系统基础框架并在此框架及Java服务器架构和串口通信基础上构建了个B/S结构监狱服刑人员监控系统利用Flex客户端拥有面向对象编程能力从而大部分业务逻辑和数据处理转移至客户端充分利用了客户端资源提高了效率减轻了服务器负担本文系统中所采用关键技术对系统构建具有重要现实意义不但提高了监狱服刑人员监控系统效率也使区别技术应用的间能有效结合为系统开发提供了个很好方向

  参考文献

  [1]Chafic KazounJoey Lott. Programming Flex2America: OReilly2007

  [2]李长林. VisualBasic串口通信技术和典型例子. 清华大学出版社. 2006

  收稿日期:7月30日  修改日期:8月8日

  作者介绍:庄里(1982-)广东潮州硕士研究生主要研究方向为计算机网络和信息系统;朱宏(1959-)副教授硕士主要研究方向为计算机网络和信息系统;王伟涛(1981-)硕士研究生主要研究方向为计算机网络和信息系统



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: