地面气象观测培训中实时数据共享技术研究

2015-03-31 01:48:15罗林艳
安徽农业科学 2015年17期
关键词:参数设置线程日志

罗 宇, 周 伟, 罗林艳, 肖 媚

(1.中国气象局气象干部培训学院湖南分院,湖南长沙 410125;2.湖南省气象信息中心,湖南长沙 410118)



地面气象观测培训中实时数据共享技术研究

罗 宇1, 周 伟1, 罗林艳2, 肖 媚1

(1.中国气象局气象干部培训学院湖南分院,湖南长沙 410125;2.湖南省气象信息中心,湖南长沙 410118)

介绍了利用FTP文件传输协议实现地面观测实时数据共享,程序运用C/S构架,基于.NET平台,采用多线程技术进行开发,提升了地面气象观测培训的效果。

地面气象观测;实时数据共享;FTP技术;多线程

地面气象观测是气象的核心业务之一,为气象预报、气象服务提供基础性资料[1]。目前地面气象观测业务已形成包含数据采集、报文生成及资料上传的完整业务流程。按照中国气象局人事司要求,从事地面气象观测的人员须经过统一的观测业务上岗培训后持证上岗。由于地面观测业务的重要性及近年来观测自动化的推进和具体业务规范的调整,如何为地面气象观测培训学员提供覆盖完整业务流程的实习环境就摆在眼前。因此,有必要对地面观测实时数据共享技术进行研究,进而为培训学员搭建模拟实际观测业务流程的实习环境,使其在该环境中掌握涵盖观测数据采集、报文生成、数据维护、报表制作及资料上传等完整业务流程。笔者在此介绍了利用FTP文件传输协议实现地面观测实时数据共享。

1 设计思路

根据观测员上岗培训要求,参照地面观测业务数据流程,基于FTP资料传输技术,开发实时观测资料共享软件,搭建模拟实训环境,供培训学员实习操作使用。

1.1 总体结构 目前的地面气象观测业务系统由采集(Surface Meteorology Observation,简称SMO)、业务(Manual Observation Input,简称MOI)和传输(MOIFtp)3个独立软件组成,遵循总控集成、配置集成、支撑库集成的标准规范与框架,完成自动观测、业务处理、报文编发及资料分析对比等功能。在地面气象观测业务上,一套自动气象站只能与一套气象观测业务系统对接,无法满足培训过程中大量学员集中实习的需求。因此考虑在地面气象观测业务系统的采集(SMO)和业务(MOI)模块间,基于FTP文件传输协议,利用.Net技术开发观测数据实时共享软件,将自动气象站观测数据实时推送到各学员电脑,供学员进行数据维护、报表制作、报文编发及资料分析等软件操作(图1)。

1.2 软件功能 观测数据实时共享软件主要实现自动气象站分钟、小时、天气现象综合判断及其他实时观测数据的自动备份及推送,使学员电脑上的地面气象观测业务系统的业务(MOI)和传输(MOIFtp)模块能够实时共享各类地面气象观测数据,进而完成正点观测编报、上传文件补调、重要天气报编报、常规要素数据维护及A文件生成等实习操作内容。共享软件的具体功能模块包括资料传输、参数设置和日志查看3部分(图2)。

1.2.1 资料传输模块。资料传输模块包含实时传输和资料补发2个功能。其中实时传输是共享软件的核心功能,实现按设定的数据类型、时间间隔查找符合条件的文件,自动推送至培训学员电脑指定目录或更新指定目录下的对应文件,并在软件主界面上显示传输结果。资料补发作为实时传输功能的补充,可由向培训学员电脑推送指定日期、指定时次的地面观测数据,满足培训中对特定天气过程回顾的资料需求。在资料传输过程中,为实现数据传输的并发,共享软件为每种需传输的地面观测资料建立一个线程,并在该线程上实现多台培训学院电脑并发传输的业务逻辑,进而实现各类观测资料在各通道上的实时并行传输。

1.2.2 参数设置模块。参数设置模块分为本机参数设置、目标机参数设置、传输文件列表参数设置3类。本机参数设置包括本机存储路径、日志保存天数等信息;目标机参数设置包括传输通道名称、FTP地址、登录名、登录密码、端口等信息;传输文件列表采用Access数据库库保存,每一张Access表对应一个传输目标机器,其中每一条记录对应一类要传输的数据,可设置各类传输数据的更新类型(新建/更新)、传输时间间隔、北京时/世界时兼容等。

1.2.3 日志查看模块。日志查看模块可对数据传输过程中形成的日志文档按日期、时间、名称进行检索、查询及查询结果保存,以分析数据共享传输过程中可能出现的问题。

2 软件实现

2.1 相关技术 观测数据实时共享软件采用微软的.Net技术平台结合FTP文件传输协议开发,使程序拥有一定的健壮性和扩展性。FTP文件传输协议是一种控制文件双向传输的通信协议,它是由支持Internet文件传输的各种规则组成,这些规则使Internet用户可以把文件从一个主机拷贝到另一个主机上。FTP支持多种文件类型和文件格式,包括ASCII文件和二进制文件,其在各级气象信息网络中有着广泛的应用。FTP是一个客户机/服务器系统,用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。随后用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。

共享软件采用C/S模式(Client/Server Mode)进行开发,充分体现了软件设计中的层次概念,为程序提供了更好的重用性、扩展性和可维护性。基于C/S模式,开发人员可以充分利用Client和Server两端硬件环境的优势,将任务合理分配降低了系统的通讯开销。C/S模式能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,减轻应用服务器的数据运行负荷。目前大多数应用软件系统均是C/S形式的两层结构。

2.2 搭建开发环境 首先需在学员电脑上开启FTP服务,设定FTP用户名和密码。默认情况下Windows的FTP服务是关闭的,可通过配置IIS(Internet Information Service)启动Windows自带FTP服务器,或使用FileZilla等工具实现FTP服务器。然后观测数据共享服务器上安装.Net Framework 4.0和VS2012 IDE工具,并进行相关配置。

2.3 软件设计实现

2.3.1 FTP操作。选用edtFTPnet组件进行观测数据实时共享软件中FTP操作的开发。EdtFTPnet能在.Net Framework框架下,为用户提供一系列强大、易用的类进行基于FTP协议的文件传输[2]。其使用GNU 宽通用公共许可证(LGPL),是一套已被广泛使用和测试的FTP类库,支持PORT/PASV模式、二进制/ASCII编码传输及断点传输。

edtFTPnet供开发者使用的基础类为FTPConnection,其继承自.NET Framework的Component类和IFTPComponent接口。在软件具体开发中,首先实例化FTPConnection对象,设置ServerAddress、UserName、Password及Port等属性,调用Connect()方法连接FTP服务器并登录;然后依据GetFiles()和GetFileInfos()获取的服务器文件列表及文件信息,判断是否需要上传或更新文件。当登录FTP服务器后,服务器会持续跟踪用户的工作路径,因此当进行文件传输操作时,可根据软件参数设置模块相关信息调用ChangeWorkingDirectory()方法改变工作路径,然后调用UploadFile()方法传输文件。考虑到地面观测气象数据文件存在持续更新和一次性写入2种情况,因此可通过设置UploadFile()的追加模式来满足不同文件的传输需求。

2.3.2 日志文件操作。经验表明,日志(Log)记录往往是软件开发周期中的重要组成部分,它具有以下几个优点:可提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug,可输出到不同的地方(控制台,文件等)以备以后研究之用。实时观测资料共享软件在运行过程中,会产生大量信息,因此考虑使用log4net组件进行日志信息记录。log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具[3],利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中。log4net 有Logger(记录器)、Repository(库)、Appender(附着器)和Layout(布局)4种主要的组件,其中Logger中定义了Fatal(致命错误)、Error(一般错误)、Warn(警告)、Info(一般信息)、Debug(调试信息)5种不同的方法跟踪一个应用程序,运作在不同的优先级别上。在log4net框架中,开发人员可通过设置配置文件,为每个日志对象分配一个日志优先级别。

在软件具体实现过程中,首先需启动log4net引擎,并在App.config中配置好根日志(rooter)、日志对象(Logger)和布局(Layout)等内容。创建好配置文件后即可修改AssemblyInfo.cs将其和应用程序相关联,实例化ILog接口,并根据数据传输情况调用Info()、Warn()以及Debug()等方法形成日志文件。由于log4net是同步写日志文件,出于并发传输性能的考虑,在软件的Release版本中,仅保留Info和Error级别的日志信息。

2.3.3 多线程并发处理。根据观测员上岗培训要求,地面自动气象站观测数据应实时传输至培训学员电脑供其进行数据维护、报文编发及数据维护等操作。以分钟指控数据为例,由SMO每分钟20秒时更新,MOI随即读取更新后的分钟数据,若采取单线程顺序传输数据无法同时满足培训需求,且容易造成软件窗体界面“假死”,因此采用多线程技术进行数据共享传输。多线程是指从软件或硬件上实现多个线程并发执行的技术,在.NET Framework框架下,一般采用软件多线程技术,即由操作系统自动在不同线程间快速切换,产生多个线程同时运行的效果,进而提升软件的整体处理性能。

.NET Framework提供Thread类来创建和控制线程以及ThreadPool类用于管理线程池,同时还提供了一套完善的机制用以解决线程执行安排、死锁以及线程间通讯等问题。在软件的具体实现过程中,有多种地面气象观测资料需并发传输,因此首先设计并实现一个任务调度线程,以便在特定的时间点启动某一种资料传输任务;同时为每一种气象资料传输创建Thread对象实例,在任务调度线程的统一管理下,调用Start()方法启动后,置于ThreadPool中进行管理;然后在各气象资料传输Thread上,为各台电脑的FTP操作创建多个Thread对象实例,并同时触发,进而实现“一对多”的多种气象资料实时传输。

综合应用上述关键技术开发完成后,即可将观测数据实时共享软件部署到观测数据共享服务器上,向学员电脑实时推送各类地面气象观测数据,从而满足地面气象观测培训软件操作实习需求。

3 小结

随着我国气象事业的发展,地面气象观测业务不断调整、改进,必将对相关业务人员提出更多、更新的要求。利用地面气象观测实时数据共享技术,可显著地提升针对相关业务人员的培训效果,进一步推动气象观测业务的发展;同时,该系统采用的设计思想和技术方法在今后的气象观测相关工作中也将具有较高的参考价值。

[1] 张戈,温晓辉,张旭,等.自动气象站辅助软件在数据传输中的应用[J].内蒙古气象, 2011(6):92-93.

[2] edtFTPnet/Free Developer's Guide[EB/OL].(2013-02-11)http://enterprisedt.com/products/edtftpnet/doc/manual/index.html.

[3] Apache Logging Services[EB/OL].(2015-03-30)http://logging.apache.org/log4net/index.html.

Research on Real-Time Data Sharing Technology in Surface Meteorological Observation Training

LUO Yu1, ZHOU Wei1, LUO Lin-yan2et al

(1. China Meteorological Administration Training Center Hunan Branch, Changsha, Hunan 410125; 2. Hunan Meteorological Information Center, Changsha, Hunan 410118)

An implementation of surface meteorological observation real-time data sharing via file transfer protocol was introduced. The program is developed in Client/Server architecture, using multithreading technology in .NET platform. As a result, the effects of surface meteorological observation training were significantly improved.

Surface meteorological observation; Real-time data sharing; FTP technology; Multithreading

罗宇(1984- ),男,四川巴中人,工程师,硕士,从事气象教育培训工作。

2015-04-27

S 126

A

0517-6611(2015)17-223-03

猜你喜欢
参数设置线程日志
一名老党员的工作日志
华人时刊(2021年13期)2021-11-27 09:19:02
扶贫日志
心声歌刊(2020年4期)2020-09-07 06:37:14
游学日志
浅谈linux多线程协作
环球市场(2017年36期)2017-03-09 15:48:21
蚁群算法求解TSP中的参数设置
动车环境下U900异频切换参数设置探讨
一种基于粗集和SVM的Web日志挖掘模型
基于MATLAB仿真的井下变压器参数设置研究
Linux线程实现技术研究
么移动中间件线程池并发机制优化改进