前言:尋找寫作靈感?中文期刊網用心挑選的松散耦合型洪水預報調度系統設計,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:基于B/S構架的Web洪水預報調度系統在運行管理、安全性、跨平臺通用性等方面有著明顯的優勢。構建基于B/S、C/S松散耦合型洪水預報調度系統,闡述了系統實現關鍵技術和系統集成與業務流程,介紹了系統在漢江、丹江流域應用實例,為基于Web的B/S洪水預報調度系統提供了新思路。
關鍵詞:洪水預報;洪水調度;松散耦合系統
1研究背景
我國是一個洪水災害頻發的國家,洪水預報調度作為重要的非工程減災措施,對保障人民生命財產安全起到了關鍵性的作用。洪水預報調度系統能為洪水作業預報調度實施提供有效的支撐手段。長期以來,洪水預報調度系統多基于客戶機/服務器(C/S)模式構建[1],隨著需求的不斷拓展,此類系統在系統管理、安全性、跨平臺通用性等方面存在明顯不足[1]。隨著計算機軟硬件技術的發展,基于瀏覽器/服務器(B/S)構架的洪水預報調度系統在上述方面有著明顯的優勢[1-3],是目前洪水預報調度平臺的發展方向。洪水預報調度系統因其計算的復雜性決定其不能單純地利用網頁編程技術實現,一是網頁的響應具有及時性;二是洪水預報調度復雜性及耗時相對網頁響應要復雜得多,因此需要將動態網頁和計算模塊分開部署,才能在保證系統運算效率的同時保證B/S客戶端的瀏覽體驗。本文采用B/S、C/S松散耦合模式所構建的洪水預報調度系統較好地兼顧了上述要求,其在構架上類似于面向服務的架構(SOA),各服務組成模塊之間通信可以通過數據交換等簡單技術來實現,相比采用組件對象模型(COM)或分布式組件對象模型(DCOM)的實現[3]要簡單,且各服務組成模塊之間更具獨立性和靈活性。
2系統結構設計
系統建設以數據庫為中心,采用B/S、C/S松散耦合的“二元三層”結構體系,即客戶端/服務器端的“二元”結構,服務器端又分為瀏覽器、Web服務器+應用服務器、數據庫服務器的“三層”結構。該結構中Web服務器和應用服務器之間主要是通過預先定義的數據交換格式實現服務。預報、調度的交互式界面操作通過B/S實現,預報、調度計算通過服務器端的C/S程序實現。松散耦合的體系結構可以輕松實現系統的分布式部署,無限拓展服務能力,并能實現系統的負載均衡。
3系統實現關鍵技術
系統主要借助網絡編程技術和數據庫協同完成,包括:微軟創建動態網頁的服務器端技術(ASP.NET)、Office網絡組件(OWC)、直譯式腳本編程語言(Javascript)、異步數據傳輸技術(AJAX)、輪詢技術、高密度“桶”思想的水文時間序列數據插值方法與數據滑動分段處理技術[4]、關系數據庫、模型庫等。
3.1OWC控件及輪詢回收技術
動態繪圖展示通過OWC控件實現。OWC是與Micro⁃softOffice一起安裝的一組由微軟倡導的網絡化多媒體對象技術(ActiveX控件),設計的目的是為眾多的控件容器提供交互的電子表格建模,數據報表和數據可視化功能。如果在計算機上安裝了OfficeWeb組件,則可以在InternetExplorer5.01SP2或更高版本中對電子表格、數據透視表和圖表進行交互訪問。OWC庫中包含了電子數據表組件、圖表組件、數據透視表組件和數據源4個組件。OWC生成的圖片會累積在服務器端,如果不清理,就會占用系統資源,必須定時清理回收,系統通過在服務器端建立第三方程序,基于輪詢方式,定時清理因響應Web請求生成的圖片。
3.2AJAX技術
AJAX是Web2.0的技術新寵[5],本質上是基于可擴展標記語言(XML)的異步Javascript,最早由JesseJamesGar⁃rett于2005年提出。通過使用可擴展超文本傳輸請求(XMLHttpRequest),客戶端可以在任何時刻與服務器端進行通信,而不只是在頁面提交時進行,從而實現異步數據接收,能在不更新整個頁面的前提下更新頁面的部分內容,帶來良好的用戶體驗同時減輕服務器壓力,提高系統響應效率。AJAX并非獨立技術,本質上是由可擴展超文本置標語言(XHTML)、層疊樣式表(CSS)、文檔對象模型(DOM)、XML、JavaScript等幾個常用技術組合而成[5-6]。在.NET3.5框架中,AJAX首次作為VisualStudio2008的綁定功能為編寫代碼提供了巨大的便利[5],借助文本管理控件、更新面板控件、更新進度控件等一系列控件,可方便地為系統編寫AJAX代碼。
3.3高密度“桶”思想的水文時間序列數據插值方法與數據滑動分段處理技術
系統根據設定的預報起止時間和時間步長,讀取雨水情數據庫里的水文數據,并進行等時段插值。在數據的線性內插過程中,采用高密度“桶”水文時間序列數據插值方法[4]。即建立基于時鐘“分”時間尺度的內存序列矩陣,好比一個個“桶”,由于時間尺度小,任何時間尺度的數值只要根據自己的“時間位置”入相應的“桶”即可。該方式插值不需要通過比較,因而計算效率比較高,但唯一的缺點即占據內存較大,因而,需要配合采用水文數據滑動分段處理技術分段處理(圖2),即設定一個參數控制每次從數據庫里進行數據處理的時段長,時段較長的話就進行分段處理,處理完一段后再處理下一段,同時,上一段被暫時記錄下來,以保證下一段數據在序列前部插值時不出錯,直到新的一段被記錄下來,上一段才被清除記錄。
3.4模型庫
模型庫是將眾多的模型按一定的結構形式組織起來,通過模型庫管理系統對各個模型進行有效的管理和使用。模型庫是一個共享資源,模型庫中的模型可以重復被不同的系統所使用,避免了冗余。系統模型庫遵循中國洪水預報系統的標準[7],完全兼容中國洪水預報系統的模型,目前系統集成了新安江模型[8]、API降雨徑流模型、滯后演算匯流模型、單位線匯流模型及馬斯京根河道匯流模型。
4系統集成與業務流程
系統集成主要是指B/C/S各模塊之間的集成,通過數據交換的形式來完成,數據交換的格式可以通過文本格式或數據庫格式。在實現方式上可以分為主動和被動兩種模式,主動模式通過網絡腳本調用API函數ShellExecute直接在服務器激活C/S運算模塊,通過網頁輪詢判斷并調用計算生成的結果文件,如果B/S、C/S同時部署于一臺服務器,這種方式的實現很簡單,如果要實現分布式部署,需要通過Winsock網絡通信技術來實現;被動模式是純粹的數據交換模式,網絡腳本不直接調用C/S運算模塊,而是生成某種指令文件或數據庫記錄,C/S運算模塊通過自身輪詢發現該指令文件或數據庫記錄來激活運行,并生成結果文件或數據庫結果,網頁端則通過輪詢判斷結果是否生成。
5系統應用實例
基于B/S、C/S松散耦合模式成功構建了漢江、丹江流域水庫雨洪資源利用與聯調預報系統(圖4),該系統具有“高效、通用、操作靈活簡易、便于管理”的特點,是一個真正意義上的預報調度系統。系統基本功能主要涵蓋:①預報計算、②抗雨能力計算、③調洪演算、④展示查詢、⑤分級用戶管理。(1)預報計算。按照構建的方案,通過選定的雨量站計算面雨量,前期土濕,根據數值預報計算未來降雨,通過產流計算、匯流計算及河道匯流演算,疊加至預報斷面,計算結果存入數據庫。(2)抗雨能力計算。在某一蓄水位下,考慮水庫工程參數、泄水設施運行調度、集雨區土壤含水量(前期降雨)和產匯流特性等因素,反推某一時段內水庫允許容納的最大降雨量。在水庫運用的過程中,由于壩頂高程和溢洪道頂高程、庫容曲線和泄洪曲線等都是己知的,故可預先對水庫不同特征水位算出可能攔蓄的水量,或換算為允許最大降雨量,計算結果存入數據庫。(3)調洪演算。根據水庫入流(包含上游水庫的調度出流結果),人工設定出流過程,基于水量平衡及水庫水位庫容曲線反推計算水庫水位過程。調用河道匯流演算模塊將水庫出流演算至下游斷面,以便進行聯合調度,計算結果存入數據庫。(4)結果查詢。主要實現預報計算、抗雨能力計算、調洪演算結果的過程線及成果表的顯示,可以按日期時間查詢預報結果。(5)用戶分級管理用戶分兩級,一般用戶可以進行水庫來水預報、抗雨能力分析、調洪演算的計算,高級用戶可以修改方案參數。
6結語
基于Web的B/S洪水預報調度系統在系統管理、安全性、跨平臺通用性等方面具備優勢,是今后洪水預報調度系統的發展方向,本文所構建的Web洪水預報調度系統采用B/S、C/S松散耦合模式,各模塊集成通過數據交換及輪詢的方式,具有實現簡單、組件獨立性強和構架靈活的特點,為基于Web的B/S洪水預報調度系統提供了一個思路。
參考文獻
[1]陳華,郭生練,林凱榮,等.基于Web的水庫洪水預報調度系統設計與開發[J].武漢大學學報(工學版),2004,37(3):27-31.
[2]張建云,王光生,張建新,等.Web洪水預報調度系統開發及應用[J].水利水電技術,2005,36(2):67-70.
[3]袁迪,張艷軍,宋星原,等.基于Silverlight的B/S模式水庫洪水預報系統設計與實現[J].水利水電技術,2014,31(8):12-17.
[4]齊晶,楊邦,魏琳.基于多源降水信息的洪水預報技術研究[M].南京:河海大學出版社,2017.
[5]宋學江,趙蘭.C#輕松入門[M].北京:人民郵電出版社,2009.
[6]王琦,劉媛媛,萬慶,等.南水北調中線干線工程WebGIS系統開發及應用[J].南水北調與水利科技,2009,7(5):28-32.
[7]章四龍.中國洪水預報系統設計建設研究[J].水文,2002,22(1):32-34,16.
作者:楊邦 齊晶 楊鵬 劉玉晶 單位:水利部海河水利委員會水文局