楊暉 楊鍵 黃海波 史裕華 彭東紅
楊? 暉
畢業(yè)于上海交通大學(xué),碩士學(xué)位?,F(xiàn)就職于東風(fēng)商用車技術(shù)中心,任高級(jí)工程師,主要研究方向:新能源、智能網(wǎng)聯(lián)、車型開發(fā)等,曾三次獲得東風(fēng)公司級(jí)科技進(jìn)步獎(jiǎng),獲多項(xiàng)國(guó)家發(fā)明專利,已發(fā)表論文數(shù)篇。
摘? 要:本文所述系統(tǒng)是基于visualStudio軟件開發(fā)環(huán)境下,由Sql-Server數(shù)據(jù)庫(kù)管理系統(tǒng)和C#編程語(yǔ)言,采用BS架構(gòu)建立的基于WEB的試驗(yàn)數(shù)據(jù)管理系統(tǒng)。使用該管理系統(tǒng)通過WEB瀏覽器實(shí)現(xiàn)試驗(yàn)數(shù)據(jù)的異地監(jiān)控及處理分析,具有設(shè)備成本低、系統(tǒng)擴(kuò)容、升級(jí)簡(jiǎn)便等優(yōu)點(diǎn)。
關(guān)鍵詞:B/S架構(gòu);試驗(yàn)數(shù)據(jù);管理系統(tǒng);Ajax
中圖分類號(hào): U467.5? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? 文章編號(hào):1005-2550(2022)03-0044-07
The Development and Application of the WEB Based Test-data Management System
YANG Hui1, YANG Jian1, HUANG Hai-bo2, SHI Yu-hua1, PENG Dong-hong1
( 1.Dongfeng Commercial Vehicle Technical Center, Wuhan 430056, China;
2. DongFeng Motor Corporation Technical Center, Wuhan 430056, China )
Abstract: This article describe the WEB based test-data management system which is programmed by the Sql-Server and C# language then established by the B/S structure. It perfoms under VisualStudio environment. In the system WEB browser is used to achieve remote monitoring, processing, analysis of the test data. The new system is convenient in expansion and upgrade. It also reduce the equipment cost.
Key Words: B/S structure; analysis of the test data; management system; Ajax
在樣機(jī)試驗(yàn)過程中往往積累了大量的試驗(yàn)數(shù)據(jù),這些試驗(yàn)數(shù)據(jù)的存儲(chǔ)、處理及分析需要用到專業(yè)的試驗(yàn)數(shù)據(jù)管理系統(tǒng)。以往企業(yè)常用的試驗(yàn)數(shù)據(jù)管理系統(tǒng)大多使用C/S(Client/Server)架構(gòu),即通過Delphi編寫的前端客戶端應(yīng)用程序,訪問后臺(tái)SQL Server數(shù)據(jù)庫(kù)服務(wù)器,通過內(nèi)建的局域網(wǎng)絡(luò)對(duì)試驗(yàn)數(shù)據(jù)進(jìn)行維護(hù)和瀏覽。用戶查詢或處理數(shù)據(jù),必須使用專用的客戶端軟件,操作也僅限于某地局域網(wǎng)內(nèi),無法實(shí)現(xiàn)異地?cái)?shù)據(jù)交換和遠(yuǎn)程信息共享。該系統(tǒng)占用大量計(jì)算機(jī)資源,且升級(jí)、擴(kuò)容空間有限,無法滿足日益增長(zhǎng)的試驗(yàn)數(shù)據(jù)處理需求。針對(duì)以上不足,我們基于“網(wǎng)絡(luò)實(shí)驗(yàn)室”構(gòu)想相應(yīng)開發(fā)了基于Internet采用B/S結(jié)構(gòu)的遠(yuǎn)程試驗(yàn)數(shù)據(jù)庫(kù)管理系統(tǒng)。新系統(tǒng)成本低廉、操作簡(jiǎn)便并可實(shí)現(xiàn)實(shí)驗(yàn)數(shù)據(jù)的異地操作[1-5]。
B/S(Browser/ Server)架構(gòu),即3-tier結(jié)構(gòu),它采用Internet瀏覽器作為用戶工作界面,在客戶端(Browser)中完成少量數(shù)據(jù)查訊、顯示數(shù)據(jù)、曲線顯示及狀態(tài)報(bào)警等事務(wù)邏輯,大部分事務(wù)邏輯則在后臺(tái)服務(wù)器端(Server)中進(jìn)行。采用這種架構(gòu)的軟件可以在因特網(wǎng)上任何一臺(tái)客戶端實(shí)現(xiàn)訪問操作而無需安裝專用客戶端程序,有著C/S結(jié)構(gòu)軟件無法比擬的優(yōu)勢(shì)。本試驗(yàn)網(wǎng)絡(luò)監(jiān)控系統(tǒng)就采用了如圖1的B/S軟件架構(gòu)。它將主事程序全部部署在后臺(tái)網(wǎng)絡(luò)服務(wù)器上,用戶則只需打開Internet瀏覽器,輸入服務(wù)器Ip地址登陸后臺(tái)服務(wù)器,向數(shù)據(jù)庫(kù)系統(tǒng)發(fā)送信息檢索申請(qǐng)、接收目標(biāo)數(shù)據(jù),以網(wǎng)頁(yè)的形式顯示在客戶端瀏覽器上。為了提高試驗(yàn)數(shù)據(jù)管理系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的訪問效率,該系統(tǒng)將安裝在已有Windows Server系統(tǒng)軟件的服務(wù)器上,并與Sqlserver數(shù)據(jù)庫(kù)服務(wù)器處于同一局域網(wǎng)內(nèi)。
該軟件主要包括試驗(yàn)信息管理、試驗(yàn)數(shù)據(jù)監(jiān)控以及用戶信息管理等功能模塊。為避免每秒一次整頁(yè)數(shù)據(jù)刷新造成用戶的視覺疲勞,所有的試驗(yàn)監(jiān)控頁(yè)面均采用了Ajax(JavaScript & XML)技術(shù),以實(shí)現(xiàn)網(wǎng)頁(yè)局部刷新。由于用戶是通過IE瀏覽器進(jìn)入管理程序來訪問后臺(tái)的數(shù)據(jù)庫(kù)服務(wù)器,為確保網(wǎng)絡(luò)安全性,本操作軟件中還增加了用戶登錄驗(yàn)證模塊。此外,本軟件還增加了日志功能模塊以方便試驗(yàn)信息的交流。
本項(xiàng)目的程序構(gòu)架采用了微軟的ASP.NET技術(shù)。它是一種建立在通用語(yǔ)言上的程序構(gòu)架,以微軟.net為平臺(tái)的動(dòng)態(tài)服務(wù)器頁(yè)面(Active Server Pages)技術(shù),可在一臺(tái)服務(wù)器上運(yùn)行由許多Internet網(wǎng)絡(luò)信息服務(wù)器(Internet Information Server)執(zhí)行的服務(wù)器端程序技術(shù),通過一臺(tái)Web服務(wù)器可建立強(qiáng)大的Web應(yīng)用程序。開發(fā)環(huán)境及編程語(yǔ)言則用Visual Studio和C#。前者是微軟最新開發(fā)的.NET框架下的最新編程集成開發(fā)環(huán)境(Intergrated Development Environment),支持VB,VC++,C#,Visual J#等四種開發(fā)語(yǔ)言,廣泛用于Windows平臺(tái)的桌面程序、網(wǎng)絡(luò)程序、移動(dòng)設(shè)備程序等各領(lǐng)域。
本系統(tǒng)開發(fā)硬件是安裝了Internet信息服務(wù)器的微機(jī),開發(fā)軟件則采用Visual Studio C# 。編程結(jié)束后,只需將其剪切到原有的試驗(yàn)數(shù)據(jù)庫(kù)服務(wù)器上即可。由于軟件開發(fā)中一直維持著對(duì)原有數(shù)據(jù)庫(kù)無縫對(duì)接,移植后的操作系統(tǒng)依然可全面操控原有試驗(yàn)數(shù)據(jù)庫(kù)。下面就該系統(tǒng)的具體開發(fā)過程進(jìn)行詳細(xì)介紹。
1? ? 配置數(shù)據(jù)庫(kù)
首先進(jìn)入Visual Studio的服務(wù)器資源管理器窗口,并點(diǎn)擊“數(shù)據(jù)連接”命令以創(chuàng)建數(shù)據(jù)庫(kù)連接,進(jìn)入“添加連接”窗口面板后,在服務(wù)器名的文本框內(nèi)輸入原試驗(yàn)數(shù)據(jù)庫(kù)所在服務(wù)器的IP地址,再在登錄服務(wù)器方式上選“使用SqlServer身份驗(yàn)證”,輸入數(shù)據(jù)庫(kù)的用戶名和密碼。如果IP地址和用戶名密碼都正確,就可選擇需要進(jìn)行管理的數(shù)據(jù)庫(kù)并測(cè)試連接。如圖2所示,當(dāng)連接成功后試驗(yàn)數(shù)據(jù)庫(kù)的映射就被添加到該服務(wù)器資源管理器的列表中示,即可進(jìn)一步對(duì)試驗(yàn)數(shù)據(jù)進(jìn)行顯示和操作了。
接著點(diǎn)擊“創(chuàng)建項(xiàng)目”命令創(chuàng)建一個(gè)創(chuàng)建Web項(xiàng)目并通過點(diǎn)擊右鍵,為其添加“appcode”,“jslib”,“resource”三個(gè)文件夾,分別用于存放公共類,javascrip代碼和其它一些資源文件。其中,Extjs類庫(kù)和Css樣式表放入jslib文件夾下。
2? ? 創(chuàng)建公共類
在一些大型軟件開發(fā)項(xiàng)目中有一些程序代碼是須要重復(fù)使用的,例如:連接數(shù)據(jù)庫(kù)、各種數(shù)據(jù)庫(kù)操作以及一些常用的邏輯處理等等。為了更好的管理和使用代碼,需將一些常用代碼按邏輯封裝成為一個(gè)或多個(gè)類,通過調(diào)用這些類中的方法來完成對(duì)事務(wù)的處理。這些自行創(chuàng)建且經(jīng)常調(diào)用的類為被稱為公共類。
本項(xiàng)目中一共創(chuàng)建了4個(gè)公共類:
1. DBConnection String.cs——用于定義數(shù)據(jù)庫(kù)連接的字符串和數(shù)據(jù)庫(kù)操作所要使用的SQL查訊語(yǔ)句;2. DBConnection.cs——用于所有對(duì)后臺(tái)數(shù)據(jù)庫(kù)的操作,包括數(shù)據(jù)庫(kù)連接,各數(shù)據(jù)表中數(shù)據(jù)的增刪改查等操作方法;3. MD5Convert.cs——用于將用戶提交的密碼轉(zhuǎn)換成MD5轉(zhuǎn)碼的數(shù)字簽名字符串;4. TransString.cs——用于將從試驗(yàn)數(shù)據(jù)中提出的參數(shù)代碼轉(zhuǎn)換成中文字符串。
3? ? 系統(tǒng)登錄前臺(tái)頁(yè)面的設(shè)計(jì)
首先,在項(xiàng)目解決方案中創(chuàng)建用于登錄的logon.html網(wǎng)頁(yè);接著,在登錄頁(yè)面代碼中通過以下代碼加載Etjs3.0所有類庫(kù)和樣式表;最后在項(xiàng)目的jslib文件夾下新建logonExtjs.js文件,并打開logonExtjs.js文件窗口,手工編寫全部代碼。
<!--引入Extjs樣式表 -->
<link rel="stylesheet" type="text/css" href="jscriprlib/ext-3.0.0/resources/css/ext-all.css"/>
<!--引入Extjs基本庫(kù) -->
<!--引入Extjs所有庫(kù) -->
<!--引入Extjs自定義js文件-->
4? ? 登錄時(shí)后臺(tái)驗(yàn)證功能模塊的設(shè)計(jì)
logon.aspx就是用于進(jìn)行用戶名密碼驗(yàn)證的服務(wù)器端程序,在本程序中添加一個(gè)名為logon的aspx頁(yè)面。在它的后臺(tái)代碼文件logon.aspx.cs中編寫邏輯代碼。這些代碼包括連接數(shù)據(jù)庫(kù),將Ajax提交的用戶名和經(jīng)MD5轉(zhuǎn)碼后的密碼字符串與數(shù)據(jù)庫(kù)users表中的用戶信息相比較等等。然后對(duì)比較結(jié)果進(jìn)行判斷,如果表中存在相同信息,表示用戶登錄成功,將用戶名和用戶的權(quán)限字符串保存到session(會(huì)話)中的“username”和“purview”變量中,然后就輸出“Success”,否則輸出“failed”。這個(gè)輸出信息會(huì)隨Ajax的回調(diào)函數(shù)進(jìn)入data變量中,并在函數(shù)體內(nèi)判斷當(dāng)用戶名和密碼驗(yàn)證成功時(shí)轉(zhuǎn)向主頁(yè)面;當(dāng)驗(yàn)證失敗時(shí)彈出Extjs錯(cuò)誤信息提示框。
本系統(tǒng)用戶操作權(quán)限的等級(jí)由系統(tǒng)管理員設(shè)定,并連同用戶信息一起保存在數(shù)據(jù)庫(kù)中。用戶在登錄頁(yè)面中通過輸入用戶名和密碼登錄可進(jìn)入系統(tǒng),經(jīng)服務(wù)器程序與數(shù)據(jù)庫(kù)查訊驗(yàn)證即決定訪問權(quán)限。用戶登錄驗(yàn)證時(shí)輸入的密碼需要由程序轉(zhuǎn)為MD5的加密轉(zhuǎn)碼才能與數(shù)據(jù)庫(kù)中的MD5轉(zhuǎn)碼字符串相比較。用戶最高權(quán)限的是系統(tǒng)管理員,可通過IE瀏覽器管理用戶成員及數(shù)據(jù)。中級(jí)權(quán)限的是一般用戶,他們通過IE瀏覽器可具有一般的添加,修改參數(shù)的功能但無權(quán)刪除數(shù)據(jù)。而普通用戶則只有瀏覽的權(quán)限。
向后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行用戶信息提交時(shí)需要特殊的代碼,本程序采用的是Ext.Ajax({…})方式代碼,它有幾個(gè)必填參數(shù): 1、url:logon.aspx—表示向服務(wù)器中名為”logon.aspx”的程序發(fā)送請(qǐng)求;2、Paras: {uname:name,Paw:password }——表示向服務(wù)器提交登錄時(shí)用戶輸入的用戶名和密碼值;3、function(data){…}——表示請(qǐng)求完成后要執(zhí)行的回調(diào)函數(shù),其中data變量是用來接收服務(wù)器端程序發(fā)回?cái)?shù)據(jù)的。
5? ? 母版頁(yè)的設(shè)計(jì)
為了統(tǒng)一程序界面風(fēng)格,本程序采用aspx母版頁(yè)設(shè)計(jì),即將母版頁(yè)面格式應(yīng)用于所有網(wǎng)頁(yè)。母版頁(yè)(擴(kuò)展名是.master)它的使用跟普通的頁(yè)面一樣,既可以通過可視化的設(shè)計(jì),也可以通過編寫后置代碼設(shè)計(jì)。與普通頁(yè)面不一樣的是,它可以包含ContentPlaceHolder控件。ContentPlaceHolder控件就是可以顯示內(nèi)容頁(yè)面的區(qū)域。其代碼如下:
<%@ Master Language="C#" Auto EventWireup= "true" CodeFile="Master
Page.? master.cs" Inherits="MasterPage" %>
......
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1"? ?runat="server">
</asp:contentplaceholder>
</div>
</form>
......
在項(xiàng)目中創(chuàng)建DBmaster.Master母版頁(yè),在母版頁(yè)前臺(tái)頁(yè)面設(shè)計(jì)中加入主頁(yè)面標(biāo)題和頁(yè)腳,站點(diǎn)導(dǎo)航列表等元素。同時(shí)在標(biāo)題下面加入兩個(gè)Label標(biāo)簽,一個(gè)用于顯示用戶名稱,一個(gè)用于顯示用戶權(quán)限。
在DBmaster. Master.cs的后臺(tái)代碼頁(yè)中編寫邏輯代碼,主要內(nèi)容是驗(yàn)證session(會(huì)話)中的"username"和"purview"變量?jī)?nèi)容是否為空:如果用戶是正常登錄進(jìn)入帶母版頁(yè)的頁(yè)面,則session(會(huì)話)中的"username"和"purview"變量中一定有用戶名和權(quán)限等級(jí)的值,然后將用戶名和權(quán)限等級(jí)用兩個(gè)Label標(biāo)簽顯示在頁(yè)面上;如果用戶是沒經(jīng)登錄頁(yè)面直接進(jìn)入其它頁(yè)面的,session(會(huì)話)中的"username" 和"purview" 變量一定為空,則頁(yè)面轉(zhuǎn)向到用戶登錄頁(yè)面,強(qiáng)制用戶進(jìn)行登錄。以上是為了提高網(wǎng)絡(luò)安全性,杜絕未登錄就進(jìn)入其它頁(yè)面。
完成母版頁(yè)設(shè)計(jì)后,在其它功能模塊頁(yè)面的創(chuàng)建過程中都鉤選“引入母版面”選項(xiàng),將其引入其它試驗(yàn)數(shù)據(jù)監(jiān)控系統(tǒng)功能模塊的詳細(xì)設(shè)計(jì)中。本監(jiān)控系統(tǒng)大致包括如圖3所示的幾個(gè)功能模塊,其中,用戶登陸驗(yàn)證功能模塊的構(gòu)建已完成,下面開始構(gòu)建剩下幾個(gè)模塊。
6? ? 主頁(yè)面和試驗(yàn)信息交流模塊的設(shè)計(jì)
首先在項(xiàng)目中創(chuàng)建master.aspx頁(yè)面,勾選引入母版面對(duì)話框,加入已有的母版頁(yè)。然后,在內(nèi)容頁(yè)面板中加入各功能頁(yè)的超鏈接,同時(shí)引入Extjs類庫(kù)。此外,還要用Extjs代碼創(chuàng)建一個(gè)試驗(yàn)日志信息顯示面板,用于添加和顯示試驗(yàn)室的試驗(yàn)信息。具體操作如下:
為實(shí)現(xiàn)以上與后臺(tái)數(shù)據(jù)庫(kù)交互功能,須要?jiǎng)?chuàng)建兩個(gè).aspx頁(yè)面:一個(gè)是showTestLog,aspx,用于在主頁(yè)面加載后訪問數(shù)據(jù)庫(kù),并將試驗(yàn)信息表的最后10行數(shù)據(jù)取出然后發(fā)送到主頁(yè)信息面板。另一個(gè)是insertTestlog.aspx,用于將用戶要添加的信息和當(dāng)前系統(tǒng)時(shí)間生成的字符串插入數(shù)據(jù)庫(kù)中的TestLog表。最終生成的主頁(yè)面如圖4:
試驗(yàn)人員可將每天試驗(yàn)信息發(fā)布到圖右側(cè)的試驗(yàn)日志面板上,通過它試驗(yàn)人員及開發(fā)人員可交流試驗(yàn)信息、提交試驗(yàn)申請(qǐng)。
7? ? 試驗(yàn)信息管路模塊及子功能頁(yè)面的設(shè)計(jì)
試驗(yàn)信息管理主要包括用戶信息管理和試驗(yàn)信息管理兩部分,分布在不同的子功能頁(yè)面中,對(duì)它們可以執(zhí)行顯示、修改和插入操作。通過在ASP.net中使用數(shù)據(jù)源控件和DataGridView數(shù)據(jù)表控件,該操作很方便地實(shí)現(xiàn)了上述功能。下面以試驗(yàn)參數(shù)資料頁(yè)為例闡述各子功能頁(yè)的編寫方法。
先在項(xiàng)目中創(chuàng)建testparas.aspx,并引入母版頁(yè)進(jìn)入頁(yè)面設(shè)計(jì)模式。接著,從VS工具欄中拖入DataSource和DataGridView控件。其中,DataSource是一個(gè)數(shù)據(jù)源控件,它可從數(shù)據(jù)源獲得數(shù)據(jù)并應(yīng)用到連接的控件上,而當(dāng)需編輯被連接控件時(shí)它又起到更新數(shù)據(jù)源的作用。我們?cè)贒ataSource上配置數(shù)據(jù)源到后臺(tái)數(shù)據(jù)庫(kù)中的testParameter表,在SQL命令欄中選擇可執(zhí)行“查訊,編輯,插入,刪除”等命令選項(xiàng),這樣DataSource就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行增、刪、改、查操作。而DataGridView則是一個(gè)數(shù)據(jù)顯示控件。當(dāng)數(shù)據(jù)源配置好后,將數(shù)據(jù)表DataGridView的數(shù)據(jù)源屬性設(shè)置成已配置好的數(shù)據(jù)源,這樣DataGridView就可顯示試驗(yàn)參數(shù)表中的所有數(shù)據(jù)。如果想要讓數(shù)據(jù)表實(shí)現(xiàn)數(shù)據(jù)分面功能可將其屬性中autopagin設(shè)置為true,并設(shè)置分頁(yè)的顯示行數(shù)。而要實(shí)現(xiàn)對(duì)數(shù)據(jù)表的編輯和刪除操作時(shí),只須在命令按鈕屬性中添加“選擇”、“編輯”、“刪除”按鈕即可。
這樣一個(gè)具有顯示、編輯和刪除功能的試驗(yàn)參數(shù)數(shù)據(jù)表就創(chuàng)建完成了,其它數(shù)據(jù)表創(chuàng)建方式基本類似。其中,注意的是用戶信息查訊管理數(shù)據(jù)表,它專為系統(tǒng)管理員提供,是將數(shù)據(jù)庫(kù)中的一些用戶基本數(shù)據(jù)以表格的型式顯示在用戶的IE瀏覽器上,管理員通過它可實(shí)現(xiàn)遠(yuǎn)程用戶操作信息和使用權(quán)限的管理。用戶也可用其修改自己的登陸密碼。
8? ? 試驗(yàn)數(shù)據(jù)實(shí)時(shí)監(jiān)控功能模塊的設(shè)計(jì)
為了簡(jiǎn)化用戶對(duì)試驗(yàn)情況遠(yuǎn)程監(jiān)控的操作,本系統(tǒng)還構(gòu)建了試驗(yàn)監(jiān)控面板,用戶直接實(shí)施各試驗(yàn)結(jié)果的遠(yuǎn)程監(jiān)控及編輯,編輯后的信息經(jīng)服務(wù)器程序被保存到數(shù)據(jù)庫(kù)。實(shí)時(shí)監(jiān)控頁(yè)面主要包括實(shí)時(shí)數(shù)據(jù)顯示面板和參數(shù)列表選擇面板,前者用于實(shí)時(shí)動(dòng)態(tài)顯示數(shù)據(jù),而后者則是試驗(yàn)參數(shù)的選擇顯示列表。當(dāng)進(jìn)入監(jiān)控頁(yè)面時(shí),窗口首先彈出的是試驗(yàn)參數(shù)列表。用戶在該列表中勾選需調(diào)取的試驗(yàn)參數(shù)項(xiàng),相關(guān)試驗(yàn)數(shù)據(jù)就會(huì)顯示在數(shù)據(jù)顯示面板中。
1)連接數(shù)據(jù)庫(kù),從RealData表中取出本試驗(yàn)室的最后一條試驗(yàn)數(shù)據(jù)。由于試驗(yàn)數(shù)據(jù)是一個(gè)由各試驗(yàn)參數(shù)連在一起的字符串,需將這個(gè)字符串分割成一個(gè)由“參數(shù)名稱”+“參數(shù)值”的字符串?dāng)?shù)組。例如:[[TWI=21.05],[TWU=22.9]];
2)掃描參數(shù)列表中的勾選狀態(tài),將數(shù)據(jù)數(shù)組中與勾選參數(shù)名相同的鍵值字符串提出,組成新的數(shù)組。把參數(shù)名稱的英文字符串轉(zhuǎn)換成為中文字符串,然后遍歷數(shù)組,將中文參數(shù)名用標(biāo)簽控件(Label)顯示,數(shù)據(jù)用文本框(TextBox)顯示;
3)創(chuàng)建Timer控件,這是ASP.net中一個(gè)Ajax定時(shí)器控件,可以一定間隔時(shí)間重復(fù)執(zhí)行特定的代碼。我們將定時(shí)器控件的間隔時(shí)間定為一秒執(zhí)行一次,并重復(fù)以上代碼使得前臺(tái)窗體頁(yè)面呈現(xiàn)每隔一秒局部刷新一次試驗(yàn)數(shù)據(jù)的動(dòng)態(tài)實(shí)時(shí)監(jiān)控效果。
9? ? 試驗(yàn)數(shù)據(jù)曲線實(shí)時(shí)監(jiān)控功能模塊的設(shè)計(jì)
為了便于直觀體現(xiàn)試驗(yàn)參數(shù)的數(shù)值變化趨勢(shì),本系統(tǒng)增了變化趨勢(shì)線顯示面板。不僅可以動(dòng)態(tài)生成最新數(shù)值變化曲線圖,還可顯示歷史數(shù)據(jù)變化趨勢(shì)圖。
本功能模塊的技術(shù)難點(diǎn)在于如何做到圖表數(shù)值的實(shí)時(shí)提取和動(dòng)態(tài)刷新。因?yàn)橐粭l曲線一般由20個(gè)時(shí)點(diǎn)以上參數(shù)值描繪而成,每一時(shí)點(diǎn)都需要從有40—70個(gè)參數(shù)值中選取,并且要實(shí)現(xiàn)每秒一次的動(dòng)態(tài)圖表刷新,這導(dǎo)致從前臺(tái)頁(yè)面到后臺(tái)數(shù)據(jù)庫(kù)間的數(shù)據(jù)更新量是相當(dāng)大的。為此,本系統(tǒng)引入了另一個(gè)Ajax開源框架jQuery,它是一個(gè)快速的、簡(jiǎn)潔的javaScript庫(kù),便于用戶處理HTML documents、events,實(shí)現(xiàn)動(dòng)畫效果,并提供AJAX交互。本系統(tǒng)中的趨勢(shì)曲線圖及即采用以jQuery為基礎(chǔ)開發(fā)的開源圖表類庫(kù)flot,所有試驗(yàn)室的曲線前臺(tái)頁(yè)面均用html+jquery+Extjs開發(fā),后臺(tái)則使用.aspx從數(shù)據(jù)庫(kù)取數(shù)據(jù)并發(fā)送至前臺(tái)頁(yè)面。
本系統(tǒng)首先為曲線監(jiān)控頁(yè)加入如圖5的Extjs 的窗體面板效果。該頁(yè)面由一個(gè)窗體加四個(gè)面板構(gòu)成,左邊的導(dǎo)航欄面板是控制頁(yè)面工作方式的面板,其中有一個(gè)“實(shí)時(shí)采集選擇”勾選項(xiàng)。當(dāng)此項(xiàng)被勾選時(shí),右邊的圖表面板中顯示的是最新試驗(yàn)數(shù)據(jù)曲線;否則,圖表面板中顯示的是試驗(yàn)數(shù)據(jù)動(dòng)態(tài)歷史回溯曲線。右邊除了圖表面板外還有參數(shù)面板,其為參數(shù)列表主要用于選取需要出現(xiàn)在圖表面板中的參數(shù)類別。
在后臺(tái)程序中還創(chuàng)建了兩個(gè).aspxt頁(yè)面,一個(gè)是RealChartData.aspx,另一個(gè)是HistoryChartData.aspx,前者用于從數(shù)據(jù)庫(kù)中取得最新的20條試驗(yàn)數(shù)據(jù)記錄。后者則從實(shí)驗(yàn)起始點(diǎn)開始依次向后取20條試驗(yàn)數(shù)據(jù)。
{{“第1點(diǎn)中的所有參數(shù)的鍵值對(duì)”},{“第2點(diǎn)中的所有參數(shù)的鍵值對(duì)”},…{“第20點(diǎn)中的所有參數(shù)的鍵值對(duì)”}}。
至此,基于S/B架構(gòu)的遠(yuǎn)程試驗(yàn)數(shù)據(jù)監(jiān)控系統(tǒng)編制完成。
10? ? 應(yīng)用結(jié)論
該系統(tǒng)部署在原有的某發(fā)動(dòng)機(jī)試驗(yàn)數(shù)據(jù)服務(wù)器上,并用VS進(jìn)行發(fā)布。近一個(gè)月的試運(yùn)行證明了新系統(tǒng)不但滿足原系統(tǒng)各項(xiàng)性能技術(shù)指標(biāo),而且比原系統(tǒng)功能更強(qiáng)大、訪問效率更高、擴(kuò)展性更強(qiáng)。
針對(duì)相關(guān)專家對(duì)數(shù)據(jù)安全性疑慮,我們對(duì)應(yīng)用系統(tǒng)的數(shù)據(jù)登錄頁(yè)面進(jìn)行了改進(jìn):用戶在登錄頁(yè)面輸入用戶名和密碼后,系統(tǒng)后臺(tái)將向登錄用戶手機(jī)發(fā)送驗(yàn)證碼(驗(yàn)證碼有效期為90秒),并在登錄頁(yè)面彈出驗(yàn)證輸入窗口,當(dāng)?shù)卿浻脩?0秒內(nèi)在彈出窗口輸入正確的手機(jī)驗(yàn)證碼后,才能實(shí)現(xiàn)登錄成功。
原發(fā)動(dòng)機(jī)試驗(yàn)數(shù)據(jù)管理系統(tǒng)采用C/S框架只能局限在局域網(wǎng)內(nèi)運(yùn)行,它主要通過如圖6所示的幾個(gè)數(shù)據(jù)包處理程序,將試驗(yàn)數(shù)據(jù)收集、整理并保存到一些文本文件中: RecvToFile.exe負(fù)責(zé)接收來自試驗(yàn)臺(tái)架的數(shù)據(jù)并將其保存到文本文件中;DoPksToDB.ex負(fù)責(zé)將文本文件中數(shù)據(jù)進(jìn)行處理轉(zhuǎn)換插入到數(shù)據(jù)庫(kù)中。用戶只能通過局域網(wǎng)內(nèi)的客戶端應(yīng)用程序登陸該系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)檢索、查詢及瀏覽操作,設(shè)備成本高、擴(kuò)容性差、不能進(jìn)行遠(yuǎn)程數(shù)據(jù)共享,而且功能單一、操作繁瑣。
與原有試驗(yàn)數(shù)據(jù)管理系統(tǒng)相比,新系統(tǒng)采用B/S架構(gòu)體系使得數(shù)據(jù)庫(kù)服務(wù)器智能化、保證了并發(fā)性,系統(tǒng)穩(wěn)定、性能強(qiáng)大、程序訪問效率更高,擁有更高技術(shù)含量適用于用戶量大的中大型網(wǎng)絡(luò)應(yīng)用程序。通過將服務(wù)器IP地址的開放,實(shí)現(xiàn)了用戶在異地監(jiān)控和管理,擴(kuò)大了用戶群;通過服務(wù)器端升級(jí)即可讓客戶端瀏覽最新版本,軟件擴(kuò)展與升級(jí)不會(huì)引響用戶對(duì)程序的訪問,降低了系統(tǒng)維護(hù)與升級(jí)的成本;新系統(tǒng)對(duì)客戶端的設(shè)備要求很低——只需安裝了IE瀏覽器的普通微機(jī),減輕了客戶端使用成本;業(yè)務(wù)表達(dá)通過簡(jiǎn)單的瀏覽器來實(shí)現(xiàn),操作界面簡(jiǎn)單易學(xué);新系統(tǒng)可以方便地設(shè)置數(shù)據(jù)管理訪問權(quán)限,數(shù)據(jù)安全性高于原有系統(tǒng)。
參考文獻(xiàn):
[1]余金山,陳建榮,王濤. C#2008開發(fā)入行真功夫[M].電子工業(yè)出版社,2009:15-18,31.
[2]Nicholas C.Zakas[美]著.李松峰,曹力量,譯. JavaScript高級(jí)程序設(shè)計(jì)(第3版)[M].人民郵電出版社,2012:10-700.
[3]Tim Wright[美]著.愛飛翔,譯. JavaScript應(yīng)用開發(fā)實(shí)踐指南[M].機(jī)械工業(yè)出版社,2013: 12-300.
[4]郭興峰,張露,劉文昌. ASP.NET 3.5動(dòng)態(tài)網(wǎng)站開發(fā)基礎(chǔ)教程[M].清華大學(xué)出版社,2010:15-350.
[5]黃海燕,肖建華,閻東林. 汽車發(fā)動(dòng)機(jī)試驗(yàn)學(xué)教程(第2版)[M].清華大學(xué)出版社,2016:42-51.