羅 宇, 周 偉, 羅林艷, 肖 媚
(1.中國氣象局氣象干部培訓學院湖南分院,湖南長沙 410125;2.湖南省氣象信息中心,湖南長沙 410118)
?
地面氣象觀測培訓中實時數據共享技術研究
羅 宇1, 周 偉1, 羅林艷2, 肖 媚1
(1.中國氣象局氣象干部培訓學院湖南分院,湖南長沙 410125;2.湖南省氣象信息中心,湖南長沙 410118)
介紹了利用FTP文件傳輸協議實現地面觀測實時數據共享,程序運用C/S構架,基于.NET平臺,采用多線程技術進行開發,提升了地面氣象觀測培訓的效果。
地面氣象觀測;實時數據共享;FTP技術;多線程
地面氣象觀測是氣象的核心業務之一,為氣象預報、氣象服務提供基礎性資料[1]。目前地面氣象觀測業務已形成包含數據采集、報文生成及資料上傳的完整業務流程。按照中國氣象局人事司要求,從事地面氣象觀測的人員須經過統一的觀測業務上崗培訓后持證上崗。由于地面觀測業務的重要性及近年來觀測自動化的推進和具體業務規范的調整,如何為地面氣象觀測培訓學員提供覆蓋完整業務流程的實習環境就擺在眼前。因此,有必要對地面觀測實時數據共享技術進行研究,進而為培訓學員搭建模擬實際觀測業務流程的實習環境,使其在該環境中掌握涵蓋觀測數據采集、報文生成、數據維護、報表制作及資料上傳等完整業務流程。筆者在此介紹了利用FTP文件傳輸協議實現地面觀測實時數據共享。
根據觀測員上崗培訓要求,參照地面觀測業務數據流程,基于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.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對象實例,并同時觸發,進而實現“一對多”的多種氣象資料實時傳輸。
綜合應用上述關鍵技術開發完成后,即可將觀測數據實時共享軟件部署到觀測數據共享服務器上,向學員電腦實時推送各類地面氣象觀測數據,從而滿足地面氣象觀測培訓軟件操作實習需求。
隨著我國氣象事業的發展,地面氣象觀測業務不斷調整、改進,必將對相關業務人員提出更多、更新的要求。利用地面氣象觀測實時數據共享技術,可顯著地提升針對相關業務人員的培訓效果,進一步推動氣象觀測業務的發展;同時,該系統采用的設計思想和技術方法在今后的氣象觀測相關工作中也將具有較高的參考價值。
[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