公安部第一研究所 王曉侃 黃瑩
該系統(tǒng)利用Web 框架適應性廣、靈活多變的特點,部署于局域網(wǎng)的使用環(huán)境中,用于替換傳統(tǒng)的客戶端-服務器架構(gòu),彌補傳統(tǒng)方法的不足。同時,使用Web 框架可兼容移動式及固定式站點,進而豐富的系統(tǒng)中的設備形態(tài)。借助近年來基于Web 框架的可視化效果的長足進步,為系統(tǒng)中不同角色的使用者提供不同層次的數(shù)據(jù)展示形式,是在局域網(wǎng)中引入廣域網(wǎng)相關技術(shù)的一次有益嘗試。
構(gòu)建于局域網(wǎng)中的數(shù)據(jù)采集管理系統(tǒng)通常采用客戶端-服務器架構(gòu)(Client-server 架構(gòu),C/S 架構(gòu)),即根據(jù)部署局域網(wǎng)中的設備形態(tài),采用對應的開發(fā)手段編寫客戶端程序,與數(shù)據(jù)庫進行數(shù)據(jù)交互,最終完成數(shù)據(jù)的采集、存儲、分析、展示等工作。這類系統(tǒng)在長期的應用中存在如下不足[1]:(1)擴容成本較大,如需新增客戶端,需要根據(jù)程序的設計要求安裝相應的環(huán)境并對程序進行相應配置,并且一旦客戶端的操作系統(tǒng)等客觀條件與開發(fā)程序時不同可能會導致兼容性等問題,特別是硬件類型不受客戶端程序支持,如,基于x86 架構(gòu)開發(fā)的客戶端無法運行在手機、平板電腦等移動設備平臺時,需要重新開發(fā)客戶端程序;(2)客戶端程序受部署硬件平臺的限制,無法提供統(tǒng)一的數(shù)據(jù)展示效果,且修改、升級程序的成本較大。為解決傳統(tǒng)C/S 架構(gòu)的不足,本文引入廣域網(wǎng)中流行的Web 框架解決C/S 架構(gòu)的不足。由于采用Web 頁面作為展示形式,Web 框架對客戶端的硬件類型及架構(gòu)沒有特別要求,并且部署方式友好,只要客戶端硬件平臺可以安裝瀏覽器軟件即可使用該程序,不僅可兼容不同操作系統(tǒng)的PC 平臺,而且可以無縫對接手機、平板電腦等移動平臺,解決了C/S 架構(gòu)擴容成本高的問題[2]。由于采用Web 技術(shù)開發(fā),可以做到不同平臺具有一致的展示效果,為局域網(wǎng)中各類不同架構(gòu)的硬件設備提供統(tǒng)一的用戶體驗,同時也減少了系統(tǒng)的開發(fā)量,節(jié)約了開發(fā)成本。
本文的安排如下:第一部分介紹整個系統(tǒng)的組成;第二部分介紹各模塊的主要功能及實現(xiàn)手段;第三部分是總結(jié)部分。
本系統(tǒng)依照目前比較流行的MVC 框架創(chuàng)建整個Web 應用程序,將應用程序輸入、處理和輸出分開。構(gòu)成Web 系統(tǒng)的三個核心部件:模型(Model)、視圖(View)、控制器(Control),整體結(jié)構(gòu)如圖1所示,按業(yè)務類型分為生產(chǎn)業(yè)務和管理業(yè)務兩部分,分別部署在對應的工作場景中。在生產(chǎn)業(yè)務中,由采集模塊、存儲模塊構(gòu)成數(shù)據(jù)獲取、存儲,共同對應MVC 框架中的模型部件,將在本文的后續(xù)內(nèi)容中詳細介紹。分析模塊是整個系統(tǒng)的基礎,該模塊根據(jù)具體的業(yè)務分析數(shù)據(jù),得到數(shù)據(jù)的分析結(jié)果。Web 服務器對應MVC 框架中的視圖和控制器部件,其作用是匯總各類行為數(shù)據(jù)并響應管理人員的操作,其中的數(shù)據(jù)可視化模塊依據(jù)不同的需求為管理業(yè)務中不同管理人員提供多樣的展示不同類別的分析結(jié)果(圖1中管理業(yè)務的不同站點對應了不同的管理業(yè)務),是連接生產(chǎn)業(yè)務和管理業(yè)務的樞紐。通常,管理業(yè)務涉及多方面的任務,圖1中采用多個管理站點代表不同的任務,這些管理任務的執(zhí)行者,即管理人員,通過Web 服務器提供的瀏覽器頁面對相關業(yè)務進行操作,并根據(jù)需要控制分析模塊產(chǎn)生對應的分析結(jié)果。
圖1 數(shù)據(jù)采集管理系統(tǒng)框圖Fig.1 Chart of data acquisition and management system
采集模塊位于系統(tǒng)的底層,包括底層硬件、采集單元和協(xié)作單元兩部分。采集單元協(xié)調(diào)硬件設備獲取數(shù)據(jù);協(xié)作單元有兩個主要功能:(1)與數(shù)據(jù)存儲模塊交互,存儲上述數(shù)據(jù)采集單元獲取的數(shù)據(jù);(2)對采集得到的數(shù)據(jù)進行匹配融合獲得初步的分析結(jié)果。
此外,數(shù)據(jù)采集單元與協(xié)作單元的交互遵循固定的接口,所有滿足交互接口的數(shù)據(jù)采集單元均可與協(xié)作單元連接,便于今后集成其他數(shù)據(jù)獲取手段。
存儲模塊采用數(shù)據(jù)庫作為數(shù)據(jù)存儲的工具,將采集模塊獲取的數(shù)據(jù)以結(jié)構(gòu)化的描述方式存入數(shù)據(jù)庫,并被分析模塊調(diào)用。在分析模塊得出結(jié)果之后,存儲模塊負責存儲分析結(jié)果,供Web 服務器調(diào)用形成各類可視化數(shù)據(jù)。
分析模塊利用存儲模塊中的各類數(shù)據(jù)做進一步的統(tǒng)計分析。所涉及的數(shù)據(jù)可以完全由采集模塊獲取也可以結(jié)合外部其他系統(tǒng)提供的數(shù)據(jù)做綜合分析。在這兩部分數(shù)據(jù)的基礎上,分析模塊通過各類統(tǒng)計方法,總結(jié)蘊含于數(shù)據(jù)中的規(guī)律性結(jié)論并將這些分析結(jié)果回寫入存儲模塊,供Web 服務器的相關功能提取并向管理業(yè)務提供展示數(shù)據(jù)。
本系統(tǒng)主要采用Python 語言實現(xiàn),Python 是網(wǎng)絡應用中廣泛采用的語言之一,具有眾多流行的Web 應用框架,如Django、Flask 等,可以快速搭建網(wǎng)站系統(tǒng),快速迭代完善,十分適合本系統(tǒng)的開發(fā)工作。但Python語言的執(zhí)行效率不高,不適用于對運行速度要求高的場景,特別是局域網(wǎng)的使用場景中,經(jīng)常需要與底層硬件設備交互獲取實時數(shù)據(jù),更加放大了執(zhí)行效率低的短板,針對這一問題,可以采用C++語言重寫與低層硬件的交互邏輯,并封裝成動態(tài)鏈接庫的形式供上層的Python 語言調(diào)用,彌補Python 語言執(zhí)行效率低的劣勢。
在Web 應用框架方面,本系統(tǒng)選擇使用靈活、輕量,擴展性強的Flask 后端框架,作為搭建后臺系統(tǒng)的基本框架。使用Python 語言編寫的Flask 框架符合Python 語言的設計哲學,追求“優(yōu)美勝于丑陋、簡單勝過復雜”。Flask 將諸多復雜的后端操作,結(jié)合MVC 的開發(fā)模式,使用簡潔明快的調(diào)用方式設計API,基于這些API 可在短時間內(nèi)輕松上手Flask,為小型團隊短期完成功能豐富的網(wǎng)站后端提供了保障。并且,該框架對第三方的擴展十分開放,因此吸引了眾多開發(fā)者為Flask提供了各種類型插件的支持,為后端功能的個性化定制提供了可能。一方面追求核心內(nèi)容視線的簡潔性;另一方面保持生態(tài)的健康發(fā)展,眾多插件作為外延保持了該框架的活力,在開源社區(qū)范圍內(nèi),F(xiàn)lask 框架也被稱為“微框架”,在肯定其內(nèi)核簡潔輕量的同時,也預示著使用該框架擁有很高的自由度,例如數(shù)據(jù)庫和模板引擎等方面的選擇完全交給后端開發(fā)者自主選擇,可根據(jù)實際條件,如,數(shù)據(jù)吞吐量、前端訪問量等選擇對應的數(shù)據(jù)庫及模板引擎。
在前端框架的選擇方面,使用Bootstrap 優(yōu)化頁面顯示,Bootstrap 框架是由Twitter 公司提出的開源前端框架,使開發(fā)者在投入很小精力的同時,搭建具有統(tǒng)一風格的Web 頁面體系,是目前很受歡迎的前端框架。Bootstrap 基于HTML、CSS、JavaScript,它簡潔靈活,使得Web 開發(fā)更加快捷。它由Twitter 的設計師Mark Otto 和Jacob Thornton 合作開發(fā),是一個CSS/HTML 框架。Bootstrap提供了優(yōu)雅的HTML 和CSS 規(guī)范,它即是由動態(tài)CSS語言Less 寫成。Bootstrap 一經(jīng)推出后頗受歡迎,一直是GitHub 上的熱門開源項目,包括NASA 的MSNBC(微軟全國廣播公司)的Breaking News 都使用了該項目。國內(nèi)一些移動開發(fā)者較為熟悉的框架,如WeX5 前端開源框架等,也是基于Bootstrap 源碼進行性能優(yōu)化而來。其特點為:
(1)跨設備、瀏覽器。甚至兼容IE7、8,一般不考慮IE9 以下的瀏覽器。
(2)響應式布局。不僅可以支持PC 端的各種分辨率的顯示,還可以支持移動端屏幕響應式切換顯示。
(3)提供全面的組件。提供大量實用的組件,包括:導航、標簽、工具條、按鈕等一系列組件。
(4)內(nèi)置jQuery 插件。內(nèi)置很多實用的jQuery 插件。
(5)支持HTML5、CSS3。HTML5 語義化標簽和CSS3屬性都得到很好的支持。
(6)支持LESS 動態(tài)樣式。LESS 實用變量、嵌套,操作混合編碼,編寫更快、更靈活的CSS,能和Bootstrap 很好的配合開發(fā)。
在數(shù)據(jù)可視化方面[3],采用目前流行的EChars 數(shù)據(jù)可視化框架[4],該框架是一個使用JavaScript 實現(xiàn)的開源可視化庫,可以流暢的運行在PC 和移動設備上,兼容當前絕大部分瀏覽器(IE8/9/10/11、Chrome、Firefox、Safari 等),提供直觀、交互豐富、可高度個性化定制的數(shù)據(jù)可視化圖表。部分展示效果如圖2所示。
圖2 ECharts 部分數(shù)據(jù)可視化效果Fig.2 Examples of data visualization effect provided by ECharts
本文主要從系統(tǒng)設計和功能實現(xiàn)兩方面,介紹了基于Web 框架的局域網(wǎng)數(shù)據(jù)采集管理系統(tǒng)。與傳統(tǒng)的客戶端-服務器架構(gòu)相比,本系統(tǒng)具有擴容成本低、數(shù)據(jù)展示風格統(tǒng)一美觀等特點,是在局域網(wǎng)中引入廣域網(wǎng)相關技術(shù)的一次有益嘗試。