Board logo

标题: 基于嵌入式Linux的远程监控系统的设计 02 [打印本页]

作者: samwalton    时间: 2013-10-18 15:42     标题: 基于嵌入式Linux的远程监控系统的设计 02

 3.2 应用程序设计
  3.2.1 C/S(Client/Server)模式与B/S(Browser/Server)模式传统的C/S模式采用两层设计,客户应用层负责提供交互界面,实现应用逻辑以发送数据、请求并处理返回数据;数据库服务器层负责处理客户数据请求并返回结果,有效管理系统资源。该模式需独立开发和安装每个应用,系统升级维护困难,客户机负担重。此外,与数据库的直接交互导致应用程序对数据结构有很强的依赖性,且浪费数据库连接资源。
  基于二层结构的C/S模式无法适应Internet网络的特性,因此出现了一种新的体系结构——B/S模式。B/S是一种基于Hyperlink,HTML,Java的三级或多级C/S,客户端仅需要单一的浏览器软件,其它大量工作都由Web Sever完成。B/S模式使用简单、易于维护、扩展性好,已逐渐成为主流。

  3.2.2 客户端工作过程
  该系统使用的是B/S模式,对客户端几乎没有特别要求。客户端只要基于普通Windows视窗系统,安装IE或Netscape即可。换句话说,任何一台上网的计算机,都可能成为客户端。
  客户端的工作过程如下:通过Internet/Intranet网络访问监控中心的主页,根据需要输入用户名和密码,检验成功则进入Web Server系统的监控界面,点击相应的设备按钮可以获得该设备的运行状态并可以对设备的参数进行设置。
  3.2.3 服务器端程序的设计
  (1)服务器模式
  为了进行服务器端程序的设计,首先要确定服务器的工作模型。我们知道,Linux系统网络服务器主要分为两种:循环服务器(Iterative Server)和并发服务器(ConcurrentServer)。循环服务器在同一时刻只能处理一个客户机请求,而并发服务器在同一时刻可以处理多个客户机请求。TCP套接字大多采用并发服务器提供服务。TCP并发服务器有多种实现方法:
  ·服务器对每个接收到的客户连接都创建一个新的子进程来处理客户请求;
  ·服务器预先创建多个子进程,由这些子进程处理客户机的请求。这种方式称为“预创建(prefork)”服务器;
  ·服务器用函数select实现对多个客户机连接的多路复用;
  ·由超级服务器(Inetd)激活的服务器。
  其中,一个子进程对应一个客户机的服务器模型很简单,父进程完成接收连接和创建子进程的任务,子进程处理客户机的具体请求,每个子进程的处理过程完全独立。
  这种服务器可以同时处理的客户机数目受到系统所允许的最大子进程数目的限制。这种服务器的缺点是,为每一个客户创建一个子进程的开销比较大。但如果我们能考虑到实际情况,并加以适当的变化,就会发现,它很适合我们的系统。首先,该系统是一个监控系统,决定了不会有过多客户同时发出监控命令,所以无须担心出现系统资源被耗尽的情况;其次,客户一旦进行监控,一般会持续较长时间,这种创建子进程的开销对服务器效率影响不大;最后,如果系统在Internet上运行,可能会有许多外来的好奇者想进入,为了减少开销,在系统设计中,并不是一旦建立连接就创建子进程,而是当口令通过后并向系统发出ASP请求才建立子进程。
  (2)程序设计
  根据我们的方案,服务器所需做的工作是:通过串口对设备进行数据的收发;对数据进行处理;将处理的数据交给Web Server子进程;子进程将数据显示到Web页下传给客户,并接收客户的参数设置命令,将参数设置上传到远程设备。
  服务器程序结构如图4所示,父进程首先创建一个子进程专门处理数据,然后再根据用户的请求创建相对应的子进程。用户子进程与串口数据处理子进程之间采用进程间通信来实现数据交换。

  服务器启动之后的第一件事,就是创建专用子进程来收发数据。服务器任何时刻都在监听用户请求。若用户发出监控请求,而且通过了密码校验,服务器就会产生一个子进程来处理该用户的请求:发送数据,接收设置等。
  4 结束语
  身处信息社会,人们已经能够利用网络资源快捷方便地获得信息,并能利用网络资源进行各种设备的远程监控。本文提出的基于嵌入式Linux的远程监控系统的方案已在小型局域网中得到实现。该系统在工业现场、远程诊断、信息家电中有着很好的应用前景。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0