畢業(yè)設(shè)計(論文):基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)設(shè)計_第1頁
畢業(yè)設(shè)計(論文):基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)設(shè)計_第2頁
畢業(yè)設(shè)計(論文):基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)設(shè)計_第3頁
畢業(yè)設(shè)計(論文):基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)設(shè)計_第4頁
畢業(yè)設(shè)計(論文):基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

畢業(yè)設(shè)計說明書(論文)作者:學(xué)號:學(xué)院:計算機(jī)工程學(xué)院專業(yè):通信工程題目:基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)測管理系統(tǒng)指導(dǎo)者:(姓名)(專業(yè)技術(shù)職務(wù))評閱者:(姓名)(專業(yè)技術(shù)職務(wù))年月畢業(yè)設(shè)計說明書(論文)中文摘要無線傳感器網(wǎng)絡(luò)包括多個無線傳感器節(jié)點(diǎn)和一個網(wǎng)關(guān)節(jié)點(diǎn),網(wǎng)關(guān)將傳感器節(jié)點(diǎn)采集的流量數(shù)據(jù)通過3G網(wǎng)絡(luò)發(fā)送到服務(wù)器端的數(shù)據(jù)庫中,用戶通過瀏覽器訪問本系統(tǒng)。本系統(tǒng)根據(jù)用戶的不同需求從服務(wù)器端的數(shù)據(jù)庫中提取流量數(shù)據(jù),從而實現(xiàn)用戶的查詢統(tǒng)計功能。本系統(tǒng)運(yùn)用.NET平臺部署具有多層架構(gòu)的應(yīng)用程序,并運(yùn)用Web數(shù)據(jù)庫技術(shù)實現(xiàn)了應(yīng)用程序和數(shù)據(jù)庫的連接。本系統(tǒng)是運(yùn)用VisualStudio2010開發(fā)工具,采用C#語言開發(fā)的具有數(shù)據(jù)查詢功能、統(tǒng)計分析功能、節(jié)點(diǎn)檢測功能以及后臺管理功能的流量在線監(jiān)測管理系統(tǒng)。整個系統(tǒng)操縱簡單,界面友好,運(yùn)行穩(wěn)定,具有一定的實用性。關(guān)鍵詞流量,在線監(jiān)控,管理系統(tǒng)畢業(yè)設(shè)計說明書(論文)外文摘要TitleOn-lineFlowManagementSystemBasedOnWirelessSensorNetworksand3GNetworksAbstractWirelesssensornetworksareconsistedofmultiplewirelesssensornodesandgatewaynode.Themearsuringdatacollectedbysensornodesaresendtothedatabaseonserverthroughthe3Gnetworksbygatewaynode.Theuseraccessthissystemthroughabrowser.Thissystemextractthemearsuringdatafromthedatabaseonserveraccordingtouserrequirement,soastoachievetheuser’squeryfunction.Thissystemdeploytheenterprise-classapplicationwithamultilayerarchitectureby.netplatformandachievetheconnectionoftheapplicationandthedatabasebyWebdatabasetechnology.Thisisaon-lineflowmonitoringmanagementsystemwithdataquery,statisticalanalysis,nodedetectionandbackgroundmanagementfunctionsdevelopedbyVisualStudio2010developmenttoolandC#language.Thewholesystemissimple,friendly,stable,practical.KeywordsFlow,On-lineMonitoring,ManagermentSystem畢業(yè)設(shè)計說明書(論文)第PAGEII頁共II頁目錄TOC\o"1-2"\h\z\u1引言 11.1研究背景及意義 11.2國內(nèi)外研究與發(fā)展現(xiàn)狀 11.3論文主要工作 21.4小結(jié) 22系統(tǒng)運(yùn)行平臺和相關(guān)開發(fā)技術(shù) 22.1.NET平臺及企業(yè)級應(yīng)用架構(gòu) 22.2軟件系統(tǒng)結(jié)構(gòu) 42.3WEB數(shù)據(jù)庫技術(shù) 52.4小結(jié) 83系統(tǒng)總體設(shè)計 83.1需求分析 83.2流量在線監(jiān)控管理系統(tǒng)描述 83.3系統(tǒng)開發(fā)方案 93.4系統(tǒng)總體功能需求 103.5數(shù)據(jù)庫總體設(shè)計 123.6系統(tǒng)架構(gòu)設(shè)計 163.7小結(jié) 194系統(tǒng)詳細(xì)設(shè)計 194.1數(shù)據(jù)庫詳細(xì)設(shè)計 194.2系統(tǒng)實現(xiàn) 214.3小結(jié) 315系統(tǒng)測試 315.1單元測試 315.2集成測試 325.3系統(tǒng)測試 325.4測試結(jié)果 33結(jié)論 35致謝 36參考文獻(xiàn) 37附錄A測試用例 38A1前臺測試 38A1.1節(jié)點(diǎn)流量查詢 38A1.2網(wǎng)關(guān)流量查詢 52A1.3子網(wǎng)流量查詢 52A1.4網(wǎng)絡(luò)流量查詢 52A2后臺測試 52A2.1節(jié)點(diǎn)管理 52A2.2網(wǎng)關(guān)管理 55A2.3子網(wǎng)管理 55A2.4網(wǎng)絡(luò)管理 55附錄B軟件操作說明書 56B1軟件運(yùn)行環(huán)境 56B2用戶登錄 58B3前臺模塊 58B3.1查詢統(tǒng)計 58B3.2硬件檢測 69B3.3報警記錄 70B4后臺管理 71B4.1節(jié)點(diǎn)管理 71B4.2網(wǎng)關(guān)管理 74B4.3子網(wǎng)管理 77B4.4網(wǎng)絡(luò)管理 79畢業(yè)設(shè)計說明書(論文)第38頁共85頁1引言1.1研究背景及意義在傳統(tǒng)的有線網(wǎng)絡(luò)監(jiān)控中,遠(yuǎn)程接入和傳輸成本是制約其發(fā)展與應(yīng)用的重要因素,如高速公路監(jiān)控、森林防火、偏遠(yuǎn)地區(qū)的監(jiān)控等,由于其地域廣、監(jiān)控點(diǎn)分布不均、加上有線線路戶外架設(shè)及維護(hù)成本非常高的因素,整體有線接入和傳輸成本直接影響了傳統(tǒng)監(jiān)控系統(tǒng)在一些領(lǐng)域和場景的應(yīng)用[1]。采用B/S架構(gòu),基于IE的客戶端瀏覽方式開發(fā)的在線監(jiān)控系統(tǒng),用戶可以通過任意一臺安裝有瀏覽器的計算機(jī)訪問該系統(tǒng),從而實現(xiàn)用戶的需求,其維護(hù)成本低、操作簡便,用戶無需進(jìn)行培訓(xùn)就可使用。在線監(jiān)控系統(tǒng)可實時反映監(jiān)控數(shù)據(jù),并根據(jù)不同的需求可實現(xiàn)數(shù)據(jù)統(tǒng)計和報表生成、圖形生成等功能。1.2國內(nèi)外研究與發(fā)展現(xiàn)狀近年來國際上對利用無線傳感器網(wǎng)絡(luò)進(jìn)行監(jiān)控十分的關(guān)注,尤其是國防軍事、環(huán)境科學(xué)、交通管理、醫(yī)療衛(wèi)生、反恐、災(zāi)害監(jiān)測、空間探索等領(lǐng)域,很多政府機(jī)構(gòu)和科研單位在此方面不斷加大投入,從而使其研究發(fā)展取得很大的進(jìn)步。美國Sandia國家實驗室與美國能源部合作,共同研究能夠盡早發(fā)現(xiàn)以地鐵、車站等場所為目標(biāo)的生化武器襲擊,并及時采取防范對策的系統(tǒng)。該系統(tǒng)集檢測有毒氣體的化學(xué)傳感器和網(wǎng)絡(luò)技術(shù)于一體,安裝在車站的傳感器一旦檢測到某種有害物質(zhì),就會自動向管理中心通報,自動進(jìn)行引導(dǎo)旅客避難的廣播,并封鎖有關(guān)入口等。該系統(tǒng)除了能夠在專用管理中心進(jìn)行監(jiān)視外,還可以通過Internet進(jìn)行遠(yuǎn)程監(jiān)視[2]。2009年底,海門市全市范圍內(nèi)的排污企業(yè)基本都安裝了污染源在線自動檢測儀,大部分為COD、流量計、總磷和氨氮在線分析儀,開發(fā)了“污染源水質(zhì)在線監(jiān)控系統(tǒng)”。該系統(tǒng)采用C/S和B/S結(jié)合的混合方式,把地理信息與監(jiān)控系統(tǒng)相結(jié)合,除了以往監(jiān)控系統(tǒng)的功能外,還提供了強(qiáng)大的報警功能以及污染企業(yè)相關(guān)情況的管理。但是,該系統(tǒng)是通過監(jiān)測儀采集數(shù)據(jù),其安裝及維護(hù)成本高,不如無線傳感器網(wǎng)絡(luò)方便、快捷[3]。江蘇遠(yuǎn)大環(huán)境在線監(jiān)控系統(tǒng),是結(jié)合當(dāng)前環(huán)保系統(tǒng)環(huán)境監(jiān)測的現(xiàn)狀,根據(jù)業(yè)務(wù)需求的變化,采用B/S架構(gòu),基于IE的客戶端瀏覽方式開發(fā)的一整套完整的環(huán)境在線監(jiān)測系統(tǒng),可以對整個環(huán)保體系上的空氣、地表水、噪聲以及不同企業(yè)的各類污染源等實現(xiàn)實時、在線監(jiān)控,解決了監(jiān)控人員由于分布范圍廣、地域分散、難以有效管理的問題,可以對各類監(jiān)控源進(jìn)行集中管理,加強(qiáng)了環(huán)保部門的監(jiān)控力度,提高了環(huán)境監(jiān)察部門的應(yīng)急處理能力[3]。南京市在線監(jiān)控系統(tǒng)是一套以B/S為結(jié)構(gòu),采用GIS界面管理和GPRS無線實時通訊技術(shù),集水、氣、聲視頻于一體的綜合業(yè)務(wù)平臺。具備實時收集有限或無線傳輸?shù)谋O(jiān)測數(shù)據(jù)的功能,并具備簡單的數(shù)據(jù)統(tǒng)計和報表生成功能。提供了部門間協(xié)調(diào)辦公平臺,實現(xiàn)多部門參與的在線監(jiān)控工作流管理,為領(lǐng)導(dǎo)層提供工作督辦和老何評估信息,形成在線監(jiān)控管理系統(tǒng)[4]。西安迅騰科技有限責(zé)任公司,蒙海軍等[5]開發(fā)了一種基于3G無線通訊網(wǎng)絡(luò)的新型無線傳感器網(wǎng)絡(luò)監(jiān)控系統(tǒng)。無線傳感器網(wǎng)絡(luò)包括多個布設(shè)在被監(jiān)控區(qū)域內(nèi)的無線傳感器節(jié)點(diǎn)和將多個無線傳感器節(jié)點(diǎn)所監(jiān)測數(shù)據(jù)打包后通過通信服務(wù)器上傳至上位監(jiān)控機(jī)的網(wǎng)關(guān)節(jié)點(diǎn),通信服務(wù)器為3G通訊設(shè)備,3G通訊設(shè)備與網(wǎng)關(guān)節(jié)點(diǎn)相接且與上位監(jiān)控機(jī)間以無線通訊方式進(jìn)行雙向通訊。本實用新型布設(shè)方便、成本低且操作簡便,能對除數(shù)據(jù)之外的多種媒體形式進(jìn)行傳輸且傳輸速度快、傳輸效果好,大大提高了無線傳感器網(wǎng)絡(luò)監(jiān)控系統(tǒng)的監(jiān)控能力和監(jiān)控范圍。1.3論文主要工作通過分析無線傳感器網(wǎng)絡(luò)、3G網(wǎng)絡(luò)技術(shù)和基于無線傳感器網(wǎng)絡(luò)的在線監(jiān)控系統(tǒng)的發(fā)展現(xiàn)狀及使用技術(shù),開發(fā)了基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)。主要完成了以下幾個方面的工作:(1)應(yīng)用B/S、分布式多層架構(gòu),設(shè)計了系統(tǒng)結(jié)構(gòu);(2)應(yīng)用.NET平臺部署流量在線監(jiān)控管理系統(tǒng);(3)應(yīng)用Web數(shù)據(jù)庫技術(shù)實現(xiàn)與數(shù)據(jù)庫的連接;(4)設(shè)計SQLServer數(shù)據(jù)庫以及數(shù)據(jù)庫安全性問題;1.4小結(jié)本章主要介紹了研究背景及意義、國內(nèi)外研究與發(fā)展現(xiàn)狀,無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)技術(shù)以及其在在線監(jiān)控系統(tǒng)中的應(yīng)用與優(yōu)勢。因此,開發(fā)基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控系統(tǒng)是非常有意義的。2系統(tǒng)運(yùn)行平臺和相關(guān)開發(fā)技術(shù)2.1.NET平臺及企業(yè)級應(yīng)用架構(gòu)2.1.1.NET平臺微軟的定義如下:“Microsoft.NET是Microsoft.NETXMLService平臺。XMLWebService允許應(yīng)用程序通過Internet進(jìn)行通訊和共享數(shù)據(jù),而不管采用的是哪種操作系統(tǒng),設(shè)備或編程語言。Microsoft.NET平臺提供XMLWebService并將這些服務(wù)集成在一起,提供XMLWeb服務(wù)體驗(豐富的用戶體驗)?!盵6]由此看出,.NET不是一門語言,而是一個要達(dá)到使語言之間互操作的技術(shù)規(guī)范。而.NET框架又是.NET體系中最重要的基礎(chǔ),它就像是架構(gòu)在操作系統(tǒng)之上的另一層操作系統(tǒng),為程序開發(fā)提供了強(qiáng)大的類庫支持。 .NETFramework是支持生成和運(yùn)行下一代應(yīng)用程序和XMLWebservices的內(nèi)部Windows組件,它具有兩個主要部件:公共語言運(yùn)行時(CLR)和.NET框架類庫[7]。.NETFramework梯次結(jié)構(gòu),如圖2-1所示:VBVBC++C#Jscript通用語言規(guī)范Windows應(yīng)用ASP.NET網(wǎng)絡(luò)服務(wù)網(wǎng)絡(luò)表單ADO.NET基礎(chǔ)類庫通用語言運(yùn)行環(huán)境VisualStudio.NET圖2-1.NETFramework梯次結(jié)構(gòu)2.1.2.NET平臺下的企業(yè)級應(yīng)用程序ASP.NET是一個已編譯的、基于.NET的環(huán)境,把基于通用語言的程序在服務(wù)器上運(yùn)行[5]。將程序在服務(wù)器端首次運(yùn)行時進(jìn)行編譯,比ASP即時解釋程序速度上要快很多,而且是可以用任何與.NET兼容的語言(包括VisualBasic.NET、C#和Jscript.NET)創(chuàng)作應(yīng)用程序。另外,任何ASP.NET應(yīng)用程序都可以使用整個.NETFramework。.NET是企業(yè)級應(yīng)用的平臺,其企業(yè)級應(yīng)用程序結(jié)構(gòu)如圖2-2[8]。Windows客戶Windows客戶瀏覽器ASP.NETWebService.NET組件ADO.NETSQLSERVER/ORACLEIIS客戶端Web服務(wù)器和應(yīng)用服務(wù)器數(shù)據(jù)庫服務(wù)器圖2-2.NET平臺下企業(yè)應(yīng)用程序架構(gòu)圖2-2表明了.NET平臺的三層結(jié)構(gòu)圖。從設(shè)計模式上講,三層結(jié)構(gòu)的三層分別稱為表示層、業(yè)務(wù)層和數(shù)據(jù)層。(1)表示層(客戶端)有兩種形式:Windows客戶端和瀏覽器。提供應(yīng)用程序的用戶界面。通常包括Windows窗體和ASP.NET頁面的使用;(2)業(yè)務(wù)層(Web服務(wù)器與應(yīng)用服務(wù)器),實現(xiàn)應(yīng)用程序的業(yè)務(wù)功能;(3)數(shù)據(jù)層(數(shù)據(jù)庫服務(wù)器),提供對外部系統(tǒng)(如數(shù)據(jù)庫)的訪問。該層涉及到的主要.NET技術(shù)是上節(jié)提到的ADO.NET數(shù)據(jù)庫訪問技術(shù)。2.2軟件系統(tǒng)結(jié)構(gòu)2.2.1B/S模式與三層結(jié)構(gòu) B/S(Browser/Server)結(jié)構(gòu),即瀏覽器和服務(wù)器結(jié)構(gòu)。所謂三層結(jié)構(gòu),就是再客戶端和數(shù)據(jù)庫之間加入了一個“中間層”,也叫組件層或業(yè)務(wù)邏輯層??蛻舳酥灰惭b一個瀏覽器,服務(wù)器安裝SQLServer、Oracle等數(shù)據(jù)庫,瀏覽器通過Web服務(wù)器同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互,主要的業(yè)務(wù)邏輯在服務(wù)器端實現(xiàn)[9]。其處理流程為:三層網(wǎng)絡(luò)結(jié)構(gòu)模式=多瀏覽器+單Web服務(wù)器+多數(shù)據(jù)服務(wù)器三層結(jié)構(gòu)的應(yīng)用軟件模型可表示為:SQL語言SQL語言用戶界面應(yīng)用邏輯應(yīng)用服務(wù)器數(shù)據(jù)庫數(shù)據(jù)庫服務(wù)器瀏覽器自定義協(xié)議圖2-3瀏覽器/服務(wù)器的三層結(jié)構(gòu)模型在三層結(jié)構(gòu)中,應(yīng)用邏輯程序已從客戶機(jī)上分離出來,作為一個應(yīng)用服務(wù)器(Web服務(wù)器),這是一種“瘦客戶機(jī)”的網(wǎng)絡(luò)結(jié)構(gòu)模式??蛻舳诉\(yùn)行瀏覽器,瀏覽器以超文本形式向服務(wù)器提出訪問數(shù)據(jù)庫的要求,Web服務(wù)器接受客戶端請求后,將這個請求轉(zhuǎn)化為SQL語法,并交給數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫服務(wù)器得到請求后,驗證其合法性,并進(jìn)行數(shù)據(jù)處理,然后將處理后的結(jié)果返回給Web服務(wù)器,Web服務(wù)器再將得到的所有結(jié)果進(jìn)行轉(zhuǎn)化,變成HTML文檔形式,轉(zhuǎn)發(fā)給客戶端瀏覽器,以Web頁面形式顯示出來。2.2.2分布式多層架構(gòu)多層結(jié)構(gòu),其實就是把三層結(jié)構(gòu)中的用戶層細(xì)分為表示層和用戶界面層,將業(yè)務(wù)層細(xì)分為業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層等,形成了三層以上的邏輯層次結(jié)構(gòu)[6,10~11]。表示層:與用戶交互的界面,用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),將用戶輸入的數(shù)據(jù)傳遞給業(yè)務(wù)邏輯層,一般不包含任何實際的業(yè)務(wù)處理,當(dāng)業(yè)務(wù)邏輯層的數(shù)據(jù)發(fā)生變化時,表示層就會顯示更新的結(jié)果。用戶界面層:響應(yīng)用戶的請求,與業(yè)務(wù)層的邏輯進(jìn)行交互,以驗證用戶的輸入,執(zhí)行所處理的過程或進(jìn)行其他的一些與業(yè)務(wù)相關(guān)的過程。業(yè)務(wù)邏輯層:表示層和數(shù)據(jù)訪問層之間的橋梁,代表應(yīng)用程序的核心功能,負(fù)責(zé)處理數(shù)據(jù)層的數(shù)據(jù),實現(xiàn)業(yè)務(wù)邏輯,業(yè)務(wù)邏輯層通常為類庫。數(shù)據(jù)訪問層:主要實現(xiàn)對數(shù)據(jù)的保存和讀取操作,將存儲在數(shù)據(jù)庫中的數(shù)據(jù)提交給業(yè)務(wù)層,同時將業(yè)務(wù)層處理的數(shù)據(jù)保存到數(shù)據(jù)庫中。數(shù)據(jù)訪問層可以訪問關(guān)系數(shù)據(jù)庫、文本文件、XML文檔,通常為類庫。數(shù)據(jù)層:關(guān)系數(shù)據(jù)庫、文本文件、XML文檔。對于分布式架構(gòu),并不是層次越多越好,要根據(jù)具體的系統(tǒng)規(guī)模選擇一個最適合的分層結(jié)構(gòu),以達(dá)到性能與開發(fā)工作量的平衡。2.3WEB數(shù)據(jù)庫技術(shù)2.3.1Web數(shù)據(jù)庫概述Web系統(tǒng)是當(dāng)今工中最主要的信息服務(wù)方式。靜態(tài)的Web站點(diǎn)中各種形式的數(shù)據(jù)以文件方式存在,當(dāng)信息量以幾何級數(shù)增加時信息的發(fā)布與維護(hù)就顯得極為困難。而另一方面,用戶對信息的實時性、交互性的要求也越來越高。為了進(jìn)行網(wǎng)上數(shù)據(jù)的高效存取,實現(xiàn)交互式Web動態(tài)頁面,就必須以大量的數(shù)據(jù)資源為基礎(chǔ),因此必然要引入數(shù)據(jù)庫系統(tǒng)。于是,Web技術(shù)與數(shù)據(jù)庫技術(shù)的結(jié)合就成為必然。所謂數(shù)據(jù)庫管理系統(tǒng)就是指基于Web模式的DBMS的信息服務(wù),充分發(fā)揮DBMS高效的數(shù)據(jù)存儲和管理能力,以Web這種瀏覽器服務(wù)器模式為平臺,將客戶端融入統(tǒng)一的Web瀏覽器,為Internet用戶提供使用簡便、內(nèi)容豐富的服務(wù)[10,12]。2.3.2Web數(shù)據(jù)庫的體系結(jié)構(gòu)在瀏覽器/Web服務(wù)器/數(shù)據(jù)庫服務(wù)器結(jié)構(gòu)中,各組成部分通過Internet/Intranet實現(xiàn)物理連接,遵循HTTP協(xié)議,客戶通過瀏覽器向服務(wù)器發(fā)送請求,和服務(wù)器進(jìn)行連接,從而實現(xiàn)對數(shù)據(jù)庫的訪問操作,典型結(jié)構(gòu)[6,12]如圖2-4所示。HTTP請求HTTP請求HTML頁面SQL請求返回結(jié)果Web服務(wù)器Web瀏覽器數(shù)據(jù)庫數(shù)據(jù)庫服務(wù)器中間件圖2-4Web數(shù)據(jù)庫的體系結(jié)構(gòu)從Web與數(shù)據(jù)庫連接的應(yīng)用程序?qū)崿F(xiàn)方式[12~14]來看,一般有三種方法:(1)基于服務(wù)器應(yīng)用程序的方法:在Web服務(wù)器端提供中間件來實現(xiàn)用戶和Web的交互以及Web數(shù)據(jù)庫的交互,典型代表是CGI程序,也是經(jīng)典的傳統(tǒng)做法,采用Web服務(wù)器作為通信中介,由Web服務(wù)器啟動中間件,中間件完成對數(shù)據(jù)庫的訪問,結(jié)果再由Web服務(wù)器返回客戶端的瀏覽器,工作原理如圖2-4所示。(2)基于服務(wù)器描述腳本的方法:這一方法類似第一種,但它不需編寫復(fù)雜的CGI程序。而是利

用專用的DB

Server實現(xiàn)DB與Web的連接,只需編寫SQL或相近的DB查詢腳本,然后將之嵌進(jìn)HTML即可。這是目

前很有前途的一種方法,典型代表是MicroSoft的IDC(internet

database

connector)。(3)基于客戶端應(yīng)用程序的方法:客戶端連上Web后,從Web下載一個Applet,然后通過這個

Applet直接與后端數(shù)據(jù)庫交互。

2.3.3ADO.NETADO.NET是微軟.NET平臺中的一種最新的數(shù)據(jù)訪問技術(shù),是一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢悗?,是?yīng)用程序和數(shù)據(jù)庫之間的重要橋梁[15]。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫,但也可以是文本文件、Excel表格或XML文件。相對于ADO,其最大優(yōu)勢在于數(shù)據(jù)的更新修改可以在于數(shù)據(jù)源完全斷開連接的情況下進(jìn)行,然后再把數(shù)據(jù)更新情況傳回數(shù)據(jù)源,大大減少了連接過多對于數(shù)據(jù)庫服務(wù)器資源的占用。ADO.NET有效地從數(shù)據(jù)操作中將數(shù)據(jù)訪問分解為多個可以單獨(dú)使用或一前一后使用的不連續(xù)組件。ADO.NET包含用于連接到數(shù)據(jù)庫、執(zhí)行命令和檢索結(jié)果的.NETFramework提供程序。ADO.NET類在System.Data.dll中,并且與System.Xml.dll中的XML類集成。ADO.NET對象可大體分成兩大類:一類是與數(shù)據(jù)庫直接連接的聯(lián)機(jī)對象(稱為.NETDataProvider),其中包含了Connection對象、Command對象、DataReader對象以及DataAdapter對象,這些類對象,主要充當(dāng)DataSet對象以及數(shù)據(jù)源之間的橋梁,負(fù)責(zé)將數(shù)據(jù)源中的數(shù)據(jù)取出后填充到DataSet對象中,以及將數(shù)據(jù)存回數(shù)據(jù)源的工作。Connection對象用于開啟程序和數(shù)據(jù)庫之間的連接,位于ADO.NET的最底層。Command對象用來對數(shù)據(jù)庫發(fā)出一些諸如查詢、新增、修改、刪除數(shù)據(jù)等指令,它架構(gòu)在Connection對象上。DataReader對象是一次一筆向下循序的讀取數(shù)據(jù)源中的數(shù)據(jù),而且這些數(shù)據(jù)是只讀的,并不允許作其它的操作。另一類則是與數(shù)據(jù)源無關(guān)的斷線對象,允許用戶脫機(jī)處理數(shù)據(jù)。例如,DataSet對象,DataTable對象等。DataSet中的數(shù)據(jù)是與數(shù)據(jù)庫斷開連接的,它本身沒有和數(shù)據(jù)源聯(lián)機(jī)的能力,數(shù)據(jù)的存取都是透過聯(lián)機(jī)對象來執(zhí)行。所以聯(lián)機(jī)對象可以說是DataSet對象和數(shù)據(jù)源間的溝通橋梁,沒有它就無法從數(shù)據(jù)源取回數(shù)據(jù)。ADO.NET的設(shè)計準(zhǔn)則是簡單性,它的設(shè)計原理是提供分布式應(yīng)用程序一種合適的解決方案,用戶可以利用連接對象取得數(shù)據(jù)源里所需的原始數(shù)據(jù),并且利用斷線對象,一次返回給前端用戶,前端用戶在處理變動數(shù)據(jù)的過程中,并不需要保持與數(shù)據(jù)庫連接,當(dāng)對所有數(shù)據(jù)完成變動操作之后,則再一次通過連接對象將數(shù)據(jù)返回更新到數(shù)據(jù)庫,因為不需要時時保持與數(shù)據(jù)庫的連接,所以能夠大大的降低所消耗的系統(tǒng)資源。ADO.NET在.NET中為存取任何類型的數(shù)據(jù)提供了一個統(tǒng)一的框架,它適用于WinForms應(yīng)用程序、ASP.NET應(yīng)用程序和WebServers。ADO.NET與SQLServer2005數(shù)據(jù)庫的連接[14]:直接使用ADO.NET與SQLServer2005數(shù)據(jù)庫連接,其中最關(guān)鍵的是連接字符串,在web.config中配置連接字符串:<addname="ConnStr"connectionString="DataSource=(local);InitialCatalog=FlowMonitorSystem;IntegratedSecurity=True"/>其中,DataSource指明數(shù)據(jù)庫服務(wù)器,InitialCatalog指明所需連接的數(shù)據(jù)庫。然后在從web.config中獲取連接字符串,此時必須引用system.configuration.stringconnStr=ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;2.4小結(jié)本章主要介紹了.NET平臺、企業(yè)級應(yīng)用程序、軟件系統(tǒng)架構(gòu)、Web數(shù)據(jù)庫技術(shù)。對比C/S模式與兩層結(jié)構(gòu)、B/S模式和三層結(jié)構(gòu)、分布式多層結(jié)構(gòu)之間的優(yōu)缺點(diǎn),選擇在線流量監(jiān)控管理系統(tǒng)比較適合的結(jié)構(gòu)。另外,研究Web數(shù)據(jù)庫技術(shù)以及Web與數(shù)據(jù)庫的連接方式,通過對比不同連接方式之間的優(yōu)缺點(diǎn),選擇比較合適的連接方式。3系統(tǒng)總體設(shè)計3.1需求分析基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控系統(tǒng),主要完成對無線傳感器網(wǎng)絡(luò)采集的流量數(shù)據(jù)的查詢和統(tǒng)計分析。無線傳感器網(wǎng)絡(luò)采集的流量數(shù)據(jù)將通過3G網(wǎng)絡(luò)發(fā)送至終端計算機(jī)的數(shù)據(jù)庫中,用戶通過瀏覽器訪問該系統(tǒng),可實現(xiàn)實時數(shù)據(jù)和歷史數(shù)據(jù)的查詢,并可以將查詢結(jié)果生成報表或圖形。綜合來看,在設(shè)計的過程中應(yīng)該滿足以下幾個目標(biāo):(1)用戶分兩種權(quán)限進(jìn)入系統(tǒng)的不同界面,分別是管理員和普通用戶;(2)管理員可以方便的對無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)關(guān)的狀態(tài)進(jìn)行管理,控制節(jié)點(diǎn)和網(wǎng)關(guān)的入網(wǎng)和退網(wǎng)操作。同時,還可以管理節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)和整體網(wǎng)絡(luò);(3)用戶可以按照流量值和時間對節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)、網(wǎng)絡(luò)進(jìn)行流量查詢。(4)管理員可以設(shè)置報警上下限并且報警上下限只有一條記錄;(5)用戶還可以了解節(jié)點(diǎn)網(wǎng)關(guān)的工作情況;(6)當(dāng)流量數(shù)據(jù)超過上下限時,系統(tǒng)會產(chǎn)生報警記錄,并且用戶可以查看報警記錄;(7)用戶可以將查詢結(jié)果生成報表或圖形。(8)系統(tǒng)極大限度的實現(xiàn)操作簡單、易懂;(9)系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。3.2流量在線監(jiān)控管理系統(tǒng)描述利用無線傳感器網(wǎng)絡(luò)進(jìn)行監(jiān)控越來越被關(guān)注,監(jiān)控數(shù)據(jù)對指導(dǎo)技術(shù)人員應(yīng)用分析、編寫應(yīng)用方案、數(shù)據(jù)模擬研究等具有非常重要的現(xiàn)實意義。流量在線監(jiān)控管理系統(tǒng)主要完成對無線傳感器網(wǎng)絡(luò)采集的流量數(shù)據(jù)的查詢、統(tǒng)計分析功能,通過對實時數(shù)據(jù)和歷史數(shù)據(jù)的查詢,反映實際情況,作出相應(yīng)的決策。無線傳感器網(wǎng)絡(luò)中的大量節(jié)點(diǎn)采集流量數(shù)據(jù),傳送至網(wǎng)關(guān)節(jié)點(diǎn)處匯總,網(wǎng)關(guān)節(jié)點(diǎn)將采集的流量數(shù)據(jù)進(jìn)行處理并將處理后的信息通過3G網(wǎng)絡(luò)傳送至Internet,發(fā)送到負(fù)責(zé)流量監(jiān)測的終端計算機(jī)的數(shù)據(jù)庫中。用戶可以通過瀏覽器在任何時間、任何地點(diǎn)查詢所需的流量數(shù)據(jù),并根據(jù)具體需求生成圖形或報表。根據(jù)不同的用戶權(quán)限,分為管理員和普通用戶兩種,普通用戶只能查詢實時數(shù)據(jù)和歷史數(shù)據(jù),而管理員除了普通用戶的權(quán)限外,還可以對節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)進(jìn)行管理,比如:對每個子網(wǎng)下節(jié)點(diǎn)的管理。3.3系統(tǒng)開發(fā)方案由于客戶端較多,同時考慮到以后的可擴(kuò)展性和可復(fù)用性,對比各種體系結(jié)構(gòu)的優(yōu)缺點(diǎn)后,最終選擇基于.NET三層架構(gòu)的企業(yè)級應(yīng)用程序,并根據(jù)具體需求,將三層架構(gòu)細(xì)分為多層架構(gòu),平臺和體系架構(gòu)決定了數(shù)據(jù)庫技術(shù),選擇了基于.NET的三層架構(gòu)就必須使用Web數(shù)據(jù)庫技術(shù)。將系統(tǒng)的整個業(yè)務(wù)應(yīng)用劃分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層,如圖3-1所示,這樣有利于系統(tǒng)的開發(fā)、維護(hù)、部署和擴(kuò)展。表示層OtherAppDesktopApplicationWebPage表示層OtherAppDesktopApplicationWebPage業(yè)務(wù)邏輯層業(yè)務(wù)層業(yè)務(wù)邏輯層業(yè)務(wù)層數(shù)據(jù)訪問層數(shù)據(jù)訪問層FceXML數(shù)據(jù)層FceXML數(shù)據(jù)層數(shù)據(jù)庫數(shù)據(jù)庫圖3-1.NET三層架構(gòu):數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表示層數(shù)據(jù)訪問層(DAL)只能被業(yè)務(wù)邏輯層(BLL)訪問,而業(yè)務(wù)邏輯層(BLL)只能被表示層(UI)訪問,用戶通過表示層將請求傳送給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層按照相關(guān)的邏輯通過數(shù)據(jù)訪問層訪問數(shù)據(jù)庫獲得數(shù)據(jù),然后按照相反的順序依次將數(shù)據(jù)返回,并顯示在表示層上。但是,怎樣在三層之間傳遞數(shù)據(jù)呢?通常的解決辦法有兩種:一種是使用DataTable在三層之間傳遞數(shù)據(jù);一種是使用實體類在三層之間傳遞數(shù)據(jù)。實體類是一個比較易于控制的對象,它具有面向?qū)ο蟮幕咎卣?,可以自由的向?qū)嶓w類添加行為。實體類通常是一個存儲應(yīng)用程序信息的數(shù)據(jù)表,將數(shù)據(jù)中的字段定義為屬性,將這些屬性封裝成一個類,就是實體類。因此,在三層架構(gòu)的基礎(chǔ)上擴(kuò)展一個實體層,即Model層。定義了Model層之后,就可以先創(chuàng)建一個實體對象,再將其作為參數(shù)進(jìn)行操作。Model層負(fù)責(zé)在各層之間裝載數(shù)據(jù),它們的相互引用關(guān)系為:表示層(UI)只能引用BLL和Model,BLL只能引用DAL和Model,DAL只能引用Model,Model沒有引用。為使其發(fā)揮最大的功效就是每一個實體類(Model)對應(yīng)一個數(shù)據(jù)處理類(DAL)對應(yīng)一個業(yè)務(wù)邏輯類(BLL),這樣在項目中就可以實現(xiàn):一處創(chuàng)建處處引用,思路也會非常清晰。3.4系統(tǒng)總體功能需求整個軟件系統(tǒng)前臺主要包括查詢統(tǒng)計、硬件檢測、報警記錄三個功能模塊,后臺主要包括節(jié)點(diǎn)管理、網(wǎng)關(guān)管理、子網(wǎng)管理、網(wǎng)絡(luò)管理、監(jiān)控指標(biāo)管理五個功能模塊。系統(tǒng)框圖如圖3-2所示:基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)基于無線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)的流量在線監(jiān)控管理系統(tǒng)查詢統(tǒng)計數(shù)據(jù)查詢統(tǒng)計分析硬件檢測報警管理節(jié)點(diǎn)檢測網(wǎng)關(guān)檢測報警記錄網(wǎng)關(guān)管理后臺管理子網(wǎng)管理網(wǎng)絡(luò)管理節(jié)點(diǎn)管理指標(biāo)管理圖3-2軟件系統(tǒng)總體框圖查詢統(tǒng)計:包括數(shù)據(jù)查詢和統(tǒng)計分析,其中數(shù)據(jù)查詢可以實現(xiàn)實時數(shù)據(jù)查詢和歷史數(shù)據(jù)查詢,主要是節(jié)點(diǎn)流量查詢、網(wǎng)關(guān)流量查詢、子網(wǎng)流量查詢、網(wǎng)絡(luò)流量查詢。實時數(shù)據(jù)指一個小時內(nèi)采集的數(shù)據(jù),歷史數(shù)據(jù)指的是31天以內(nèi)采集的數(shù)據(jù),分別存儲;統(tǒng)計分析主要是指查詢的結(jié)果,可以根據(jù)用戶的需求生成相應(yīng)的Excel報表,以便進(jìn)行對比,進(jìn)一步作出決策。硬件檢測:包括節(jié)點(diǎn)檢測和網(wǎng)關(guān)檢測。當(dāng)節(jié)點(diǎn)或網(wǎng)關(guān)處于異常狀態(tài)或不正常工作時,將會顯示在“不符合標(biāo)準(zhǔn)的節(jié)點(diǎn)/網(wǎng)關(guān)”信息表中。報警記錄:監(jiān)測數(shù)據(jù)能夠反映監(jiān)控區(qū)域的狀況,當(dāng)出現(xiàn)異常狀況時監(jiān)測數(shù)據(jù)將會超過門限值,該門限值由管理員在監(jiān)測指標(biāo)管理模塊進(jìn)行設(shè)置,采集超過門限值數(shù)據(jù)的節(jié)點(diǎn)或網(wǎng)關(guān)信息將顯示在報警記錄中,同時報警之后的信息會寫入數(shù)據(jù)庫,以便日后查詢。報警記錄實現(xiàn)從數(shù)據(jù)庫查詢歷史報警信息,以便進(jìn)行對比,作出下一步?jīng)Q策。后臺管理功能模塊主要是對節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)、網(wǎng)絡(luò)、監(jiān)控指標(biāo)的增加、刪除、修改操作。本系統(tǒng)中主要的功能就是查詢統(tǒng)計功能,通過設(shè)置查詢條件實現(xiàn)查詢功能,可以設(shè)置單一條件,也可以設(shè)置多個條件,發(fā)出指令,從數(shù)據(jù)庫查詢所需數(shù)據(jù),然后將得到的數(shù)據(jù)顯示給用戶,用戶可以根據(jù)需要生成Excel報表或者是圖形進(jìn)行統(tǒng)計分析。3.4.1用戶登錄用戶登錄功能模塊,如圖3-3所示,分成兩種角色登錄,分別是用戶登錄和管理員登錄。當(dāng)輸入的用戶名、密碼中只要有一個不正確時,系統(tǒng)都會有相應(yīng)的錯誤提示,必須重新輸入相應(yīng)的內(nèi)容,直到當(dāng)輸入的用戶名、密碼都正確時,才能夠進(jìn)入相應(yīng)的操作平臺。啟動系統(tǒng)啟動系統(tǒng)系統(tǒng)登錄用戶登錄管理員登錄不正確正確輸入用戶名和密碼圖3-3用戶登錄功能模塊3.4.2前臺功能模塊前臺功能模塊,如圖3-4所示,用戶可以對網(wǎng)絡(luò)中的節(jié)點(diǎn)、網(wǎng)關(guān)采集的數(shù)據(jù)進(jìn)行查詢,同時可根據(jù)需要生成Excel報表或生成圖形。用戶還可以查看不符合標(biāo)準(zhǔn)的節(jié)點(diǎn)、網(wǎng)關(guān),根據(jù)實際情況作出處理。在報警記錄子模塊,用戶可以查看報警信息,即當(dāng)采集的數(shù)據(jù)超過指標(biāo)時,產(chǎn)生報警信息。用戶還可以輸入查詢條件,從數(shù)據(jù)庫中查詢歷史報警記錄。前臺前臺系統(tǒng)查詢節(jié)點(diǎn)流量子網(wǎng)流量網(wǎng)絡(luò)流量網(wǎng)關(guān)流量硬件檢測報警記錄圖3-4前臺功能模塊3.4.3后臺功能模塊后臺功能模塊,如圖3-5所示,該模塊主要是提供給管理員的管理平臺,管理員通過該平臺,可以對節(jié)點(diǎn)、網(wǎng)關(guān)的信息進(jìn)行修改、刪除、添加,還可以通過按“子網(wǎng)編號”查詢該子網(wǎng)下的所有節(jié)點(diǎn),從該子網(wǎng)中刪除或添加節(jié)點(diǎn)至該子網(wǎng)。網(wǎng)關(guān)、子網(wǎng)的管理和節(jié)點(diǎn)管理的原理一樣。后臺后臺網(wǎng)關(guān)管理節(jié)點(diǎn)管理子網(wǎng)管理添加節(jié)點(diǎn)修改節(jié)點(diǎn)刪除節(jié)點(diǎn)添加網(wǎng)關(guān)修改網(wǎng)關(guān)刪除網(wǎng)關(guān)添加子網(wǎng)修改子網(wǎng)刪除子網(wǎng)網(wǎng)絡(luò)管理添加網(wǎng)絡(luò)修改網(wǎng)絡(luò)刪除網(wǎng)絡(luò)指標(biāo)管理圖3-5后臺功能模塊3.5數(shù)據(jù)庫總體設(shè)計3.5.1數(shù)據(jù)庫表的實體E-R圖(1)前臺模塊E-R圖[17],如圖3-6所示:前臺管理模塊主要包括查詢統(tǒng)計模塊、硬件檢測模塊、報警記錄模塊,查詢統(tǒng)計模塊又包括節(jié)點(diǎn)流量查詢子模塊、網(wǎng)關(guān)流量查詢子模塊、子網(wǎng)流量查詢子模塊、網(wǎng)絡(luò)流量查詢子模塊。查詢統(tǒng)計模塊主要實現(xiàn)的是對歷史流量數(shù)據(jù)和實時流量數(shù)據(jù)的查詢,包括節(jié)點(diǎn)流量、網(wǎng)關(guān)流量、子網(wǎng)流量、網(wǎng)絡(luò)流量,實時數(shù)據(jù)表屬性包括編號、采樣編號、采樣值、采樣時間,歷史數(shù)據(jù)表屬性包括編號、采樣編號、采樣值、采樣時間。當(dāng)采集值不在流量上下限之內(nèi)時,會產(chǎn)生報警記錄,用戶可以在報警記錄模塊下查詢歷史報警記錄,報警記錄表屬性包括編號、當(dāng)前值、等級、報警者編號、報警時間。nnm報警記錄歷史數(shù)據(jù)用戶實時數(shù)據(jù)編號編號采樣編號當(dāng)前值查詢采樣時間采樣值查詢查詢用戶名密碼Email編號采樣編號采樣時間采樣值報警時間等級報警者編號nmmn圖3-6前臺模塊E-R圖(2)后臺管理模塊E-R圖,如圖3-7所示:后臺管理模塊主要包括節(jié)點(diǎn)管理、網(wǎng)關(guān)管理、子網(wǎng)管理、網(wǎng)絡(luò)管理以及流量指標(biāo)管理模塊。管理員可以通過節(jié)點(diǎn)管理模塊實現(xiàn)對節(jié)點(diǎn)的添加、刪除、修改功能,節(jié)點(diǎn)的屬性包括節(jié)點(diǎn)編號、節(jié)點(diǎn)名稱、節(jié)點(diǎn)狀態(tài)、入網(wǎng)時間以及所屬子網(wǎng),一個節(jié)點(diǎn)必須屬于一個子網(wǎng),一個子網(wǎng)可以有多個節(jié)點(diǎn),節(jié)點(diǎn)和子網(wǎng)是多對一的關(guān)系。網(wǎng)關(guān)管理模塊,可以實現(xiàn)對網(wǎng)關(guān)的添加、刪除、修改功能,網(wǎng)關(guān)的屬性包括網(wǎng)關(guān)節(jié)點(diǎn)、網(wǎng)關(guān)名稱、網(wǎng)關(guān)狀態(tài)、入網(wǎng)時間、所屬子網(wǎng),一個網(wǎng)關(guān)必須屬于一個子網(wǎng),一個子網(wǎng)只有一個網(wǎng)關(guān),網(wǎng)關(guān)和子網(wǎng)是一對一關(guān)系。子網(wǎng)管理可以實現(xiàn)對子網(wǎng)的添加、刪除、修改,子網(wǎng)的屬性包括子網(wǎng)編號、子網(wǎng)名稱、入網(wǎng)時間、所屬網(wǎng)絡(luò),由于一個子網(wǎng)可以有多個節(jié)點(diǎn)和一個網(wǎng)關(guān),因此當(dāng)對刪除子網(wǎng)時需要將節(jié)點(diǎn)和網(wǎng)關(guān)一塊刪除。網(wǎng)絡(luò)管理可以實現(xiàn)對網(wǎng)絡(luò)的添加、刪除、修改,一個網(wǎng)絡(luò)可以包含多個子網(wǎng),因此子網(wǎng)和網(wǎng)絡(luò)的關(guān)系是多對一,當(dāng)刪除一個網(wǎng)絡(luò)時,要連同其下的子網(wǎng),子網(wǎng)中的所有節(jié)點(diǎn)和網(wǎng)關(guān)一并刪除。流量指標(biāo)管理,可以實現(xiàn)對指標(biāo)的修改,指標(biāo)的屬性包括指標(biāo)編號、指標(biāo)上限、指標(biāo)下限。111屬于管理員用戶名密碼Email管理報警記錄報警時間管理管理管理子網(wǎng)網(wǎng)絡(luò)網(wǎng)絡(luò)編號網(wǎng)絡(luò)名稱創(chuàng)建時間子網(wǎng)編號子網(wǎng)名稱入網(wǎng)時間所屬網(wǎng)絡(luò)屬于網(wǎng)關(guān)所屬子網(wǎng)網(wǎng)關(guān)名稱網(wǎng)關(guān)狀態(tài)入網(wǎng)時間節(jié)點(diǎn)網(wǎng)關(guān)編號管理所屬子網(wǎng)節(jié)點(diǎn)名稱狀態(tài)入網(wǎng)時間節(jié)點(diǎn)編號報警者流量指標(biāo)管理上限值編號下限值當(dāng)前值等級編號1nnmmnnmnnnnmmn圖3-7后臺管理模塊E-R圖3.5.2數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(1)網(wǎng)絡(luò)基本信息表(Net)如表3-1所示:表3-1網(wǎng)絡(luò)基本信息表字段名稱類型主外鍵非空說明idintPKYes編號nameVarchar(10)網(wǎng)絡(luò)名稱create_timeDatetime建網(wǎng)時間(2)子網(wǎng)基本信息表(SubNet)如表3-2所示:表3-2子網(wǎng)基本信息表字段名稱類型主鍵非空說明idintPKYes編號nameVarchar(10)子網(wǎng)名稱join_timeDatetime入網(wǎng)時間net_idintFKYes所屬網(wǎng)絡(luò)(3)節(jié)點(diǎn)基本信息表(Note)如表3-3所示:表3-3節(jié)點(diǎn)基本信息表字段名稱類型主鍵非空說明idintPKYes編號nameVarchar(10)節(jié)點(diǎn)名稱join_timeDatetime入網(wǎng)時間subnet_idintFKYes所屬子網(wǎng)stateVarchar(10)Yes節(jié)點(diǎn)狀態(tài)positionVarchar(10)節(jié)點(diǎn)位置(4)網(wǎng)關(guān)基本信息表(Gate)如表3-4所示:表3-4網(wǎng)關(guān)基本信息表字段名稱類型主鍵非空說明idintPKYes編號nameVarchar(10)網(wǎng)關(guān)名稱join_timeDatetime入網(wǎng)時間subnet_idintFKYes所屬子網(wǎng)stateVarchar(10)Yes網(wǎng)關(guān)狀態(tài)(5)實時數(shù)據(jù)信息表(RealTime)如表3-5所示:表3-5實時數(shù)據(jù)信息表字段名稱類型主鍵非空說明idintPKYes編號sample_idintFKYes采樣者編號sample_valueVarchar(10)采樣值sample_timeDatetime采樣時間typeVarchar(10)數(shù)據(jù)類型(6)歷史數(shù)據(jù)信息表(History)如表3-6所示:表3-6歷史數(shù)據(jù)信息表字段名稱類型主鍵非空說明idintPKYes編號sample_idintFKYes采樣者編號sample_valueVarchar(10)采樣值sample_timeDatetime采樣時間typeVarchar(10)數(shù)據(jù)類型(7)報警記錄信息表(Alert)如表3-7所示:表3-7報警記錄信息表字段名稱類型主鍵非空說明idintPKYes編號alert_idintFKYes報警者編號thresholdVarchar(10)Yes門限值current_valueVarchar(10)當(dāng)前值typeVarchar(10)數(shù)據(jù)類型aert_timeDatetime報警時間rankVarchar(10)Yes報警等級3.6系統(tǒng)架構(gòu)設(shè)計ASP.NET革命性的變化是在網(wǎng)頁中也使用基于事件的處理,可以指定處理后臺的代碼文件,可以使用C#、VB等語言作為編寫后臺代碼的語言。.NET中可以方便的實現(xiàn)組件的裝配,后臺代碼通過命名空間可以方便的使用自己定義的組件。表示層放在.aspx頁面中,業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層和Model層用組件來實現(xiàn),這樣就方便的實現(xiàn)了多層架構(gòu),如圖3-9所示:表示層表示層業(yè)務(wù)層數(shù)據(jù)層后臺代碼顯示頁面業(yè)務(wù)邏輯層數(shù)據(jù)訪問層數(shù)據(jù)源Model層圖3-9.NET的多層架構(gòu)另外,分層時需要遵循一個原則上層調(diào)用下層,上層對下層是不可見的。也就是說,表示層只調(diào)用業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層只調(diào)用數(shù)據(jù)訪問層。完善的三層結(jié)構(gòu)的劃分要求是修改表現(xiàn)層而不用修改邏輯層,修改邏輯層而不用修改數(shù)據(jù)層,也就是各層之間在功能上是相互獨(dú)立的。結(jié)合上述原則,下面著重討論流量在線監(jiān)控管理系統(tǒng)結(jié)構(gòu)的劃分與設(shè)計,以“節(jié)點(diǎn)管理”功能模塊為例,詳細(xì)介紹系統(tǒng)架構(gòu)的設(shè)計。3.6.1表示層設(shè)計本系統(tǒng)中,表示層主要是由一組.aspx的Web頁面組成,他們負(fù)責(zé)接受用戶的輸入以及將后臺處理結(jié)果呈現(xiàn)給用戶,充當(dāng)用戶和系統(tǒng)之間的交互接口。如圖3-10所示:節(jié)點(diǎn)管理頁面主要是對節(jié)點(diǎn)的增加、刪除、修改[18-19]。檢索條件:用戶可以選擇搜索的方式,按編號、按狀態(tài)、按子網(wǎng),然后在文本框中輸入條件,單擊“搜索”按鈕后,系統(tǒng)將會從節(jié)點(diǎn)信息表中檢索符合條件的記錄,顯示在下邊的表中。刪除節(jié)點(diǎn):可以通過搜索條件,檢索想要刪除的節(jié)點(diǎn)信息,然后單擊表格中的“刪除”按鈕,確認(rèn)刪除后,該節(jié)點(diǎn)將從數(shù)據(jù)庫中刪除。修改節(jié)點(diǎn):可以通過搜索條件,檢索想要修改的節(jié)點(diǎn)信息,然后單擊節(jié)點(diǎn)編號鏈接,當(dāng)前節(jié)點(diǎn)的信息就會顯示在“修改節(jié)點(diǎn)”下的各個文本框中,修改相關(guān)信息后,單擊“修改節(jié)點(diǎn)”按鈕,當(dāng)前節(jié)點(diǎn)的信息將被修改,數(shù)據(jù)庫中當(dāng)前節(jié)點(diǎn)的信息也將被修改。添加節(jié)點(diǎn):在文本框中輸入將要添加的節(jié)點(diǎn)的信息以及其所屬子網(wǎng),單擊“添加節(jié)點(diǎn)”按鈕,該節(jié)點(diǎn)將會被添加到數(shù)據(jù)庫的節(jié)點(diǎn)信息表中。當(dāng)想要上刪除某個子網(wǎng)中的節(jié)點(diǎn)時,如果不知道該節(jié)點(diǎn)的編號,可以按照子網(wǎng)編號來搜索出該子網(wǎng)中的所有節(jié)點(diǎn),然后找到該節(jié)點(diǎn)進(jìn)行刪除。如果確切的知道該節(jié)點(diǎn)的編號,那么可以按照節(jié)點(diǎn)編號直接搜索該節(jié)點(diǎn),然后進(jìn)行刪除操作。圖3-10節(jié)點(diǎn)管理頁面3.6.2業(yè)務(wù)層設(shè)計數(shù)據(jù)訪問層是指對原始數(shù)據(jù)的操作,而不是指原始數(shù)據(jù)本身。業(yè)務(wù)層主要包括業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。數(shù)據(jù)訪問層通過SqlClient從SQLServer數(shù)據(jù)庫中獲取數(shù)據(jù),然后通過Datatable的形式將數(shù)據(jù)傳遞到業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層再將數(shù)據(jù)傳遞到表示層顯示。業(yè)務(wù)邏輯層主要負(fù)責(zé)與業(yè)務(wù)相關(guān)的邏輯處理,主要包括增加、刪除、修改等操作。業(yè)務(wù)邏輯層銜接了表示層與數(shù)據(jù)訪問層,它向表示層提供函數(shù)接口,函數(shù)內(nèi)部實現(xiàn)了需要處理的具體業(yè)務(wù),但是業(yè)務(wù)邏輯層并不直接操作數(shù)據(jù)表,它是通過調(diào)用數(shù)據(jù)訪問層中的函數(shù)接口來實現(xiàn)的。也就是說,表示層處理業(yè)務(wù)時只需要調(diào)用業(yè)務(wù)邏輯層的函數(shù),而業(yè)務(wù)邏輯層提供了業(yè)務(wù)邏輯的具體實現(xiàn),即需要做哪些處理,這些處理又需要對哪些表做哪些操作,最終是數(shù)據(jù)訪問層提供了對各個表進(jìn)行增加、刪除、修改等的操作。因此,業(yè)務(wù)邏輯層是和表示層相關(guān)的,而數(shù)據(jù)訪問層與數(shù)據(jù)庫中的表相關(guān)聯(lián),每張表對應(yīng)一個數(shù)據(jù)操作類。圖3-11業(yè)務(wù)層設(shè)計3.6.3Model層設(shè)計Model層是對實體的封裝,定義了實體的屬性和構(gòu)造函數(shù),當(dāng)實體的屬性很多時,通過傳遞參數(shù)來對該實體進(jìn)行操作,比較繁瑣,可以先創(chuàng)建一個實體對象,將各個參數(shù)賦值給該實體對象的各個屬性,該實體對象將在各個層之間傳遞數(shù)據(jù)。3.6.4系統(tǒng)類設(shè)計系統(tǒng)的類主要包括三個層次:表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。表示層調(diào)用業(yè)務(wù)邏輯層實現(xiàn)特定的業(yè)務(wù)處理,而業(yè)務(wù)邏輯層又調(diào)用相應(yīng)的數(shù)據(jù)訪問層來完成對數(shù)據(jù)庫中表的操作。例如:當(dāng)按下“節(jié)點(diǎn)管理”頁面的搜索按鈕時,將調(diào)用該按鈕的click函數(shù)來執(zhí)行相關(guān)的搜索操作,在click函數(shù)中將調(diào)用業(yè)務(wù)邏輯層的相應(yīng)函數(shù),而業(yè)務(wù)邏輯層又調(diào)用數(shù)據(jù)訪問層中相應(yīng)的函數(shù)實現(xiàn)對Note表的操作。這樣,整個系統(tǒng)業(yè)務(wù)的處理就被分成了很清晰的三層結(jié)構(gòu)。表示層主要做頁面的顯示,業(yè)務(wù)邏輯層主要實現(xiàn)頁面請求的所有邏輯處理,數(shù)據(jù)訪問層主要實現(xiàn)數(shù)據(jù)庫中各個表的操作。這樣,不斷提高了系統(tǒng)的可理解性,還降低了系統(tǒng)三層架構(gòu)之間的耦合程度,有利于系統(tǒng)開發(fā)的模塊化,有利于系統(tǒng)功能的進(jìn)一步擴(kuò)展,同時降低了系統(tǒng)維護(hù)的難度和工作量。BusinessClassIsExistBusinessClassIsExistDeleteUpdateSelectNoteManage.csNoteManage.csNoteManage.csNoteManage.csDataClassIsExistDeleteUpdateSelectNoteDAO.csNoteDAO.csNoteDAO.csNoteDAO.csViewClassAdmin_default.aspx圖3-12系統(tǒng)類的三層結(jié)構(gòu)3.7小結(jié)本章主要介紹了在線流量監(jiān)控管理系統(tǒng)的需求分析,確定了系統(tǒng)的功能,包括期望實現(xiàn)但在開發(fā)過程中卻無法實現(xiàn)的功能。介紹了系統(tǒng)開發(fā)方案以及方案確定后進(jìn)一步的設(shè)計工作,主要包括系統(tǒng)總體功能的劃分、數(shù)據(jù)庫的設(shè)計以及該軟件系統(tǒng)架構(gòu)的設(shè)計,并將軟件架構(gòu)按照層次說明每個層次應(yīng)該實現(xiàn)的功能,該層次的作用以及各個層次之間的關(guān)系。4系統(tǒng)詳細(xì)設(shè)計4.1數(shù)據(jù)庫詳細(xì)設(shè)計4.1.1數(shù)據(jù)庫安全設(shè)計本系統(tǒng)確保當(dāng)數(shù)據(jù)庫數(shù)據(jù)存儲媒體被破壞時以及當(dāng)數(shù)據(jù)庫用戶誤操作時,數(shù)據(jù)庫數(shù)據(jù)信息不至于丟失[20]。(1)防止用戶直接操作數(shù)據(jù)庫的方法:在運(yùn)行環(huán)境中,必須嚴(yán)格管理用戶,管理員必須修改其默認(rèn)密碼,禁止用該用戶建立數(shù)據(jù)庫應(yīng)用對象。刪除或鎖定數(shù)據(jù)庫測試用戶;應(yīng)用級的用戶帳號密碼不能與數(shù)據(jù)庫相同,防止用戶直接操作數(shù)據(jù)庫。管理員只能用帳號登陸到應(yīng)用軟件,通過應(yīng)用軟件訪問數(shù)據(jù)庫,而沒有其它途徑操作數(shù)據(jù)庫。(2)角色與權(quán)限:必須按照應(yīng)用需求,設(shè)計不同的用戶訪問權(quán)限。包括應(yīng)用系統(tǒng)管理用戶,普通用戶等,按照業(yè)務(wù)需求建立不同的應(yīng)用角色。確定每個角色對數(shù)據(jù)庫表的操作權(quán)限,只有數(shù)據(jù)庫管理員才可以對企業(yè)信息進(jìn)行以下操作:如創(chuàng)建、檢索、更新、刪除等。而普通用戶只可以對企業(yè)相關(guān)信息進(jìn)行查詢,而不具備刪除、更新、添加等權(quán)限。4.1.2防止SQL注入式攻擊SQL注入式攻擊[21]是指利用設(shè)計上的漏洞,在目標(biāo)服務(wù)器上運(yùn)行SQL命令以及進(jìn)行其他方式的攻擊,動態(tài)生成SQL語句時沒有對用戶輸入的數(shù)據(jù)進(jìn)行驗證。SQL注入式攻擊是一種常規(guī)性的攻擊,可能允許一些不法用戶檢索他人的數(shù)據(jù),改變服務(wù)器的設(shè)置。SQL注入式攻擊不是SQLServer問題,而是由不適當(dāng)?shù)某绦蛞?。要防范SQL注入式攻擊,應(yīng)該注意以下幾點(diǎn):(1)普通用戶和管理員的權(quán)限要分開。(2)不要在用戶輸入過程中構(gòu)造WHERE語句,應(yīng)該利用參數(shù)來使用存儲過程。防止SQL注入式攻擊最佳解決方案是通過SqlCommand.Parameters屬性的參數(shù)傳值實現(xiàn),將非法字符過濾掉。如下代碼所示: publicDataTableSelectById(intid){DataTabledt=newDataTable();stringcmdText="SelectNoteById";//存儲過程名SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@id",id)};dt=sqlhelper.ExecuteQuery(cmdText,paras,CommandType.StoredProcedure);returndt;}Paras是參數(shù)數(shù)組,用于存儲傳遞的參數(shù),當(dāng)傳遞的參數(shù)是存儲過程時,只能使用SqlParameter參數(shù),否則不能得到返回結(jié)果。4.1.3存儲過程設(shè)計 存儲過程[17-18](StoredProcedure)是一組為了完成特定功能的SQL語句集,是利用SQLServer所提供的Transact-SQL語言所編寫的程序。經(jīng)編譯后存儲在數(shù)據(jù)庫中。存儲過程是數(shù)據(jù)庫中的一個重要對象,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是由流控制和SQL語句書寫的過程,這個過程經(jīng)編譯和優(yōu)化后存儲在數(shù)據(jù)庫服務(wù)器中,存儲過程可由應(yīng)用程序通過一個調(diào)用來執(zhí)行,而且允許用戶聲明變量。同時,存儲過程可以接收和輸出參數(shù)、返回執(zhí)行存儲過程的狀態(tài)值,也可以嵌套調(diào)用。存儲過程的優(yōu)點(diǎn):(1)存儲過程只在創(chuàng)造時進(jìn)行編譯,以后每次執(zhí)行存儲過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲過程可提高數(shù)據(jù)庫執(zhí)行速度;(2)當(dāng)對數(shù)據(jù)庫進(jìn)行復(fù)雜操作時(如對多表Update,Insert,Query,Delete),可將此復(fù)雜操作用存儲過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用;(3)存儲過程可以重復(fù)使用,可減少數(shù)據(jù)庫開發(fā)人員的工作量;(4)安全性高,可設(shè)定只有某些用戶才具有對指定存儲過程的使用權(quán)。下面是按“節(jié)點(diǎn)編號”查詢節(jié)點(diǎn)信息時,調(diào)用的存儲過程CREATEPROCEDURESelectNoteById --Addtheparametersforthestoredprocedurehere @idvarchar(10)ASBEGIN --Insertstatementsforprocedurehere SELECT*FROMNoteWHEREid=@idENDGO4.1.4數(shù)據(jù)庫性能優(yōu)化數(shù)據(jù)采集部分采集的監(jiān)控區(qū)域內(nèi)的數(shù)據(jù)將存儲在數(shù)據(jù)庫中,在線流量監(jiān)控系統(tǒng),從數(shù)據(jù)庫中讀取數(shù)據(jù)并對其進(jìn)行統(tǒng)計分析,由于需求中要求實現(xiàn)對實時數(shù)據(jù)的查詢和歷史數(shù)據(jù)的查詢,而數(shù)據(jù)庫中將會有大量的數(shù)據(jù),因此數(shù)據(jù)庫的設(shè)計很關(guān)鍵[3],主要從以下兩方面考慮:1)實時與歷史查詢數(shù)據(jù)源分開在數(shù)據(jù)庫中將設(shè)計兩張數(shù)據(jù)表,即實時數(shù)據(jù)表與歷史數(shù)據(jù)表分開存放。實時分析從實時數(shù)據(jù)表中讀取數(shù)據(jù)進(jìn)行分析,實時數(shù)據(jù)每小時向歷史數(shù)據(jù)表倒一次。統(tǒng)計分析在歷史數(shù)據(jù)表里查詢,但在涉及到查詢時間延續(xù)到前一個小時的數(shù)據(jù)時,必須歷史表與實時表關(guān)聯(lián)查詢,而不能繞開實時表數(shù)據(jù)進(jìn)行統(tǒng)計。2)優(yōu)化歷史數(shù)據(jù)表由于數(shù)據(jù)量較大,目前考慮從下面兩方面進(jìn)行優(yōu)化數(shù)據(jù)庫,一是限制歷史數(shù)據(jù)保存時間為31天。31天以上數(shù)據(jù)刪除不再保存。另一方面是根據(jù)需要對歷史表進(jìn)行優(yōu)化,因為即使只保存31天的數(shù)據(jù),也會有很大的數(shù)據(jù)量,所以必須對歷史記錄表進(jìn)行再優(yōu)化,比如將歷史記錄表每天數(shù)據(jù)單獨(dú)存為一張表。4.2系統(tǒng)實現(xiàn)4.2.1表示層實現(xiàn)表示層主要是一組Web頁面[7,19],每個頁面都包含.aspx文件和.aspx.cs隱藏代碼文件兩部分。.aspx文件中包含@page,用以建立與其相對應(yīng)的隱藏代碼文件的聯(lián)系,如下面代碼所示:<%@PageTitle=""Language="C#"MasterPageFile="~/admin.master"AutoEventWireup="true"CodeFile="admin_default.aspx.cs"Inherits="admin_default"%><asp:ContentID="Content1"ContentPlaceHolderID="HeadContent"Runat="Server">使用控件必須引入System.Web.UI.WebControls,標(biāo)記里的runat屬性表示該控件是在客戶端還是在服務(wù)器端運(yùn)行,上述例子中的控件均在服務(wù)器端運(yùn)行。CssClass屬性表示控件使用的CSS樣式類,在頁面開發(fā)時,定義各種控件的CSS樣式,然后再將控件應(yīng)用相應(yīng)的CSS樣式即可,這將有利于頁面中控件風(fēng)格的統(tǒng)一。整個系統(tǒng)的首頁如圖4-1所示,在首頁將顯示最新實時數(shù)據(jù)和最高歷史數(shù)據(jù)。系統(tǒng)的功能主要包括查詢統(tǒng)計功能、硬件檢測功能、報警記錄功能,管理員可以進(jìn)入后臺,對節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)、網(wǎng)絡(luò)進(jìn)行管理。當(dāng)管理員登錄成功時,后臺管理按鈕將可用,如果是普通用戶登錄成功,該按鈕不會顯示。圖4-1首頁 單擊“查詢統(tǒng)計”鏈接進(jìn)入“查詢統(tǒng)計”頁面,可以查詢節(jié)點(diǎn)流量、網(wǎng)關(guān)流量、子網(wǎng)流量、網(wǎng)絡(luò)流量,如圖4-2所示,可以查詢實時數(shù)據(jù),可以查詢歷史數(shù)據(jù),可以按照流量值查詢,可以按照時間查詢,每個查詢條件下又可以按照大于、小于、等于、按范圍進(jìn)行查詢,用戶可以根據(jù)不同的需要將查詢結(jié)果生成報表或生成圖形。圖4-2查詢統(tǒng)計頁面單擊“硬件檢測”鏈接,進(jìn)入“硬件檢測”頁面,在該頁面可以查看非正常工作的節(jié)點(diǎn)、網(wǎng)關(guān)的信息,如圖4-3所示,使用戶可以了解無線傳感器網(wǎng)絡(luò)的情況。圖4-3硬件檢測頁面單擊“報警記錄”鏈接,進(jìn)入報警記錄頁面,如圖4-4所示,該頁,用戶可以按照報警編號、級別查詢報警記錄。當(dāng)用戶知道出現(xiàn)報警信息的節(jié)點(diǎn)或網(wǎng)關(guān)的編號時,可以按照報警編號查詢,只需勾選“報警編號”單選按鈕,在文本框中輸入編號,單擊查詢按鈕即可查詢出符合條件的報警信息;當(dāng)用戶知道報警級別時,可以按照級別進(jìn)行查詢,只需勾選“級別”單選按鈕,在文本框中輸入級別,單擊查詢按鈕即可。圖4-4報警記錄頁面當(dāng)管理員成功登錄后,可以單擊“后臺管理”按鈕進(jìn)入后臺,對節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)、網(wǎng)絡(luò)進(jìn)行管理,如圖4-5所示。管理員可以對節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)、網(wǎng)絡(luò)進(jìn)行增加、刪除、修改等操作??梢韵韧ㄟ^搜索條件進(jìn)行搜索,得到需要修改或刪除的節(jié)點(diǎn)、網(wǎng)關(guān)、子網(wǎng)、網(wǎng)絡(luò)信息,再進(jìn)行相應(yīng)的操作。當(dāng)管理員刪除一個子網(wǎng)時,該子網(wǎng)中的節(jié)點(diǎn)和網(wǎng)關(guān)將全部被刪除,而實時數(shù)據(jù)表和歷史數(shù)據(jù)表中該子網(wǎng)以及該子網(wǎng)中節(jié)點(diǎn)和網(wǎng)關(guān)的流量將被刪除。圖4-5后臺管理頁面管理員還可以設(shè)置流量的上下值和下限值,在“指標(biāo)管理”頁面,如圖4-6所示,可以刪除、添加指標(biāo)。但是,只能保證有一個監(jiān)控指標(biāo),因此如果已經(jīng)存在監(jiān)控指標(biāo),那么管理員添加指標(biāo)時將是對原有指標(biāo)的修改,如果不存在監(jiān)控指標(biāo),那么就在數(shù)據(jù)庫中添加一條新的指標(biāo)。圖4-6監(jiān)控指標(biāo)管理頁面4.2.2SQLhelper設(shè)計SqlHelper是一個微軟完全開放源碼的數(shù)據(jù)庫操作類,用于避免重復(fù)的數(shù)據(jù)庫連接DbCommand、DbDataReader等[22]。SqlHelper封裝過后通常是只需要給方法傳入一些參數(shù)如數(shù)據(jù)庫連接字符串、SQL參數(shù)等,就可以訪問數(shù)據(jù)庫了,很方便。在本系統(tǒng)中將SQLHelper定義為一個包含構(gòu)造函數(shù)的類,在SqlHelper類中實現(xiàn)的每種方法都提供了一組一致的重載,這提供了一種很好的使用SqlHelper類來執(zhí)行命令的模式,每種方法的重載都支持不同的方法參數(shù),可以是SQL語句,也可以是存儲過程。SQLHelper類包含ExecuteNonQuery()、ExecuteQuery()兩種函數(shù),分別為:執(zhí)行帶參數(shù)的查詢SQL語句或存儲過程、執(zhí)行不帶參數(shù)的查詢SQL語句或存儲過程、執(zhí)行帶參數(shù)的增刪改SQL語句或存儲過程、執(zhí)行不帶參數(shù)的增刪改SQL語句或存儲過程,關(guān)鍵代碼如下:#region執(zhí)行不帶參數(shù)的增刪改SQL語句或存儲過程publicintExecuteNonQuery(stringcmdText,CommandTypect){intres;try{cmd=newSqlCommand(cmdText,GetConn());cmd.CommandType=ct;res=cmd.ExecuteNonQuery();}catch(Exceptionex){throwex;}finally{if(conn.State==ConnectionState.Open){conn.Close();}}returnres;}#endregion#region執(zhí)行帶參數(shù)的增刪改SQL語句或存儲過程publicintExecuteNonQuery(stringcmdText,SqlParameter[]paras,CommandTypect){intres;using(cmd=newSqlCommand(cmdText,GetConn())){cmd.CommandType=ct;cmd.Parameters.AddRange(paras);res=cmd.ExecuteNonQuery();}returnres;}#endregion#region執(zhí)行不帶參數(shù)的查詢SQL語句或存儲過程publicDataTableExecuteQuery(stringcmdText,CommandTypect){DataTabledt=newDataTable();cmd=newSqlCommand(cmdText,GetConn());cmd.CommandType=ct;using(sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection)){dt.Load(sdr);}returndt;}#endregion#region執(zhí)行帶參數(shù)的查詢SQL語句或存儲過程publicDataTableExecuteQuery(stringcmdText,SqlParameter[]paras,CommandTypect){DataTabledt=newDataTable();cmd=newSqlCommand(cmdText,GetConn());cmd.CommandType=ct;cmd.Parameters.AddRange(paras);using(sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection)){dt.Load(sdr);}returndt;}#endregion4.2.3業(yè)務(wù)層實現(xiàn)顯示層調(diào)用業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層再調(diào)用數(shù)據(jù)訪問層,最后由數(shù)據(jù)訪問層將處理的結(jié)構(gòu)再經(jīng)由業(yè)務(wù)邏輯層返回給表示層,其處理流程如圖4-1所示:顯示層顯示層業(yè)務(wù)邏輯層數(shù)據(jù)訪問層Admin_default.aspxAdmin_default.aspx.csNoteManager.csNoteDAO.cs數(shù)據(jù)層DB圖4-1系統(tǒng)的三層架構(gòu)模型在圖中,admin_default是一個表示層頁面,和它同名的.aspx.cs文件是它對應(yīng)的后臺代碼文件,該文件調(diào)用業(yè)務(wù)邏輯層的NoteManager.cs文件來完成頁面中所要處理的業(yè)務(wù),業(yè)務(wù)邏輯層文件又調(diào)用數(shù)據(jù)訪問層的NoteDAO.cs文件對數(shù)據(jù)庫中的Note表進(jìn)行操作,最終完成對Note表的增加、刪除、修改等操作。下面以【搜索】按鈕介紹各層的具體實現(xiàn)細(xì)節(jié),其業(yè)務(wù)流程為:選擇搜索條件,在文本框中輸入具體搜索條件,單擊【搜索】按鈕,在下面的表中顯示查詢結(jié)果。在.aspx.cs文件的后臺代碼中首先要判斷是按什么搜索,如果是按編號搜索,則調(diào)用BLL中NoteManager.cs下的SelectById()函數(shù),該函數(shù)將調(diào)用DAL中NoteDAO下的SelectById()函數(shù)對數(shù)據(jù)表進(jìn)行操作,從數(shù)據(jù)庫中選擇符合條件的節(jié)點(diǎn)信息,再通過參數(shù)傳回表示層進(jìn)行顯示。(1)后臺代碼:protectedvoidsearchbtn_Click(objectsender,EventArgse){stringkey=txtKey.Text.Trim();if(rad_id.Checked){DataTabledt=newNoteManager().SelectById(Convert.ToInt32(key));repNote.DataSource=dt;repNote.DataBind();}elseif(rad_state.Checked){DataTabledt=newNoteManager().SelectByState(key);repNote.DataSource=dt;repNote.DataBind();}else{DataTabledt=newNoteManager().SelectBySubNet(key);repNote.DataSource=dt;repNote.DataBind();}}(2)業(yè)務(wù)邏輯層實現(xiàn):#region按節(jié)點(diǎn)編號查詢節(jié)點(diǎn)信息publicDataTableSelectById(intid){returnnotedao.SelectById(id);}#endregion#region按節(jié)點(diǎn)狀態(tài)查詢節(jié)點(diǎn)信息publicDataTableSelectByState(stringstate){returnnotedao.SelectByState(state);}#endregion#region按子網(wǎng)查詢節(jié)點(diǎn)信息publicDataTableSelectBySubNet(stringsubnet){returnnotedao.SelectBySubNet(subnet);}#endregion(3)數(shù)據(jù)訪問層實現(xiàn):#region按節(jié)點(diǎn)編號查詢節(jié)點(diǎn)信息publicDataTableSelectById(intid){DataTabledt=newDataTable();stringcmdText="SelectNoteById";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@id",id)};dt=sqlhelper.ExecuteQuery(cmdText,paras,CommandType.StoredProcedure);returndt;}#endregion#region按節(jié)點(diǎn)狀態(tài)查詢節(jié)點(diǎn)信息publicDataTableSelectByState(stringstate){DataTabledt=newDataTable();stringcmdText="SelectNoteByState";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@state",state)};dt=sqlhelper.ExecuteQuery(cmdText,paras,CommandType.StoredProcedure);returndt;}#end

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論