蔡俊濤,賴順橋,肖熠琳(.廣州市光機(jī)電技術(shù)研究院,廣東廣州 50663;2.中山大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,廣東廣州 50275)
基于SqlDependency對(duì)象的路燈測控系統(tǒng)設(shè)計(jì)*
蔡俊濤1,2,賴順橋1,肖熠琳1
(1.廣州市光機(jī)電技術(shù)研究院,廣東廣州510663;2.中山大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,廣東廣州510275)
摘要:以路燈測控系統(tǒng)為例,針對(duì)系統(tǒng)對(duì)用戶操作過程和各類測試數(shù)據(jù)需要隨時(shí)記錄的應(yīng)用特點(diǎn),采用基于SqlDependency對(duì)象,以數(shù)據(jù)的變化驅(qū)動(dòng)功能模塊的架構(gòu)模式,大大提高了接口可讀性,降低了功能模塊之間的耦合性,有利于開發(fā)過程中團(tuán)隊(duì)的協(xié)同作業(yè),以及后期的改進(jìn)升級(jí)。
關(guān)鍵詞:SqlDependency;路燈測控系統(tǒng);低耦合;數(shù)據(jù)驅(qū)動(dòng)
*國家863計(jì)劃項(xiàng)目(編號(hào):2013AA03A106);廣州市重大科技專項(xiàng)(編號(hào):2013Y2-00142)
SqlDependency對(duì)象表示應(yīng)用程序和SQL Serv?er實(shí)例間的查詢通知依賴關(guān)系。應(yīng)用程序可以創(chuàng)建一個(gè)SqlDependency對(duì)象并進(jìn)行注冊(cè)以通過On?ChangeEventHandler事件處理程序接收通知[1],其主要作用是監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化。利用SqlDependency對(duì)象的監(jiān)測功能,以數(shù)據(jù)庫作為數(shù)據(jù)驅(qū)動(dòng)的接口,可以構(gòu)建出模塊耦合性低、功能擴(kuò)展性好、接口可讀性高的應(yīng)用系統(tǒng)。本文以路燈測控系統(tǒng)為例,簡要地闡述了基于SqlDepen?dency對(duì)象的測控系統(tǒng)的開發(fā)模式。
目前,大部分LED路燈缺少必要的智能控制,或者雖然有定時(shí)控制但是卻不能自動(dòng)檢測路燈的工作狀況,也不能方便地對(duì)路燈進(jìn)行遠(yuǎn)程測控[2]。對(duì)城市管理而言,亟需一套可統(tǒng)一管理的智能化路燈測控系統(tǒng)。筆者承擔(dān)了一項(xiàng)類似的開發(fā)任務(wù),其需求具有以下顯著特點(diǎn):
(1)系統(tǒng)管理的對(duì)象地域性廣,采用分布式架構(gòu),涉及多個(gè)服務(wù)器和各種客戶端應(yīng)用;
(2)系統(tǒng)除了需要保存各種檢測數(shù)據(jù)、狀態(tài)數(shù)據(jù)外,每一次的操作都需要在數(shù)據(jù)庫中留下歷史記錄;
(3)系統(tǒng)要求功能擴(kuò)展性好,而且有可能在系統(tǒng)完成初期還需要根據(jù)實(shí)際使用情況修改功能模塊。
可以看出,系統(tǒng)相對(duì)一般的應(yīng)用系統(tǒng)架構(gòu)較龐大,對(duì)數(shù)據(jù)庫操作頻繁,對(duì)功能模塊的耦合性十分敏感。因此,本系統(tǒng)以SQL Server數(shù)據(jù)庫為交互點(diǎn),利用SqlDependency對(duì)象的監(jiān)測功能進(jìn)行整合開發(fā)。
系統(tǒng)架構(gòu)如圖1所示,主要包含三個(gè)部分:現(xiàn)場路段、中心、客戶端。
(1)現(xiàn)場路段:指路燈安裝現(xiàn)場,包括了燈、測控器以及基站。測控器安裝在燈上,實(shí)現(xiàn)對(duì)燈的開關(guān)、調(diào)光、檢測等功能,并通過Zigbee或電力線載波等通信方式,與基站連接?;緞t通過公共的無線數(shù)據(jù)通道(4G、GPRS等)與“中心”的網(wǎng)絡(luò)進(jìn)行通信。
圖1 系統(tǒng)架構(gòu)
(2)中心:以數(shù)據(jù)庫為核心,實(shí)現(xiàn)系統(tǒng)的各種應(yīng)用。通過接口服務(wù),實(shí)現(xiàn)客戶與終端之間的指令和數(shù)據(jù)交互;通過呈現(xiàn)服務(wù)(主要為Web服務(wù)),實(shí)現(xiàn)客戶端的界面交互和結(jié)果呈現(xiàn);通過分析服務(wù),實(shí)現(xiàn)對(duì)檢測數(shù)據(jù)的深度分析;通過管理服務(wù),實(shí)現(xiàn)用戶、路燈、路段等各方面信息的管理,以及對(duì)歷史日志的查詢。
(3)客戶端:通過中心提供的Web服務(wù),實(shí)現(xiàn)對(duì)系統(tǒng)的應(yīng)用操作。
系統(tǒng)以數(shù)據(jù)庫為核心,利用SqlDependency對(duì)象,可以實(shí)現(xiàn)客戶端與現(xiàn)場終端之間的交互以及各個(gè)服務(wù)之間數(shù)據(jù)的同步(如圖2)。包括在接口服務(wù)中實(shí)現(xiàn)指令的發(fā)送;在分析服務(wù)中實(shí)現(xiàn)數(shù)據(jù)自動(dòng)累計(jì);在呈現(xiàn)服務(wù)中實(shí)現(xiàn)緩存更新、故障主動(dòng)預(yù)警;在管理服務(wù)中實(shí)現(xiàn)設(shè)置同步。
圖2 運(yùn)用SqlDependency對(duì)象
下面以客戶端發(fā)送指令為例,使用SqlDepen?dency對(duì)象,將數(shù)據(jù)表變成交互的接口。首先,在數(shù)據(jù)庫中制定一個(gè)用于操作記錄的數(shù)據(jù)表[Control_In?fo](如圖3),此表既是用戶操作的歷史記錄表,也是觸發(fā)中心服務(wù)程序發(fā)送指令的接口表,然后在接口程序中建立一個(gè)SqlDe?pendency對(duì)象,監(jiān)測[Con?trol_Info]表的數(shù)據(jù)變化??蛻舳诵枰l(fā)送指令時(shí),直接在[Control_Info]表中登記一條記錄,SqlDepen?dency對(duì)象就會(huì)自動(dòng)觸發(fā)指令發(fā)送程序,對(duì)記錄進(jìn)行解析并按接口協(xié)議完成指令發(fā)送。
圖4為SqlDependency對(duì)象在指令發(fā)送方面的程序流程。
實(shí)現(xiàn)SqlDependency對(duì)象應(yīng)用的主要代碼如下:
圖3 [Control_Info]表
(1)需要SQL Server 2005以上版本的數(shù)據(jù)庫支持;
(2)必須開啟數(shù)據(jù)庫的ServiceBroker服務(wù),可以使用以下語句開啟:ALTER DATABASE <數(shù)據(jù)庫名稱> SET ENABLE_BROKER;
(3)觸發(fā)發(fā)生后,監(jiān)測即失效,如果要循環(huán)監(jiān)測,需要重新設(shè)置SqlDependency對(duì)象,如上面實(shí)例中在dependency_OnChange函數(shù)里調(diào)用setde?pendency函數(shù)進(jìn)行重新設(shè)置。
本文所描述的路燈測控系統(tǒng),以數(shù)據(jù)庫為核心,以數(shù)據(jù)表為交互接口,通過對(duì)SqlDependency對(duì)象的充分應(yīng)用,以數(shù)據(jù)的變化驅(qū)動(dòng)功能模塊,大大提高了接口可讀性,降低了功能模塊之間的耦合性,有利于開發(fā)過程中團(tuán)隊(duì)的協(xié)同作業(yè),以及后期系統(tǒng)的改進(jìn)、升級(jí)和功能模塊的添加。對(duì)于需要對(duì)操作過程和各類數(shù)據(jù)隨時(shí)記錄的系統(tǒng),特別適合這種應(yīng)用模式。
圖4 指令發(fā)送流程圖
參考文獻(xiàn):
[1]MSDN.SqlDependency類[EB/OL],https://msdn.mi?crosoft.com/zh-cn/library/system.data.sqlclient.sqldepen?dency.aspx.
[2]陳曉艷,高偉,秦歡,等.基于GPRS與ZigBee的LED路燈智能監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子測量技術(shù),2013,36(10):62-65.
(編輯:向飛)
Design of Street Lamp Monitoring and Controlling System Based on SqlDependency Object
CAI Jun-tao1,2,LAI Shun-qiao1,XIAO Yi-lin1
(1.Guangzhou Research Institute of O-M-E Technology,Guangzhou510063,China;2.Sun Yat-sen University School of Mathematics & Computational Science,Guangzhou510275,China)
Abstract:Taking street lamp monitoring and controlling system as an example,for the characteristics of the application that require record the user's operation process and all kinds of test data at any time,use an architectural model,based on SqlDependency object and with the change of the data to drive function module,that greatly improve the interface readability and reduce the coupling between modules.It is conducive to the development of team collaboration,and easy to upgrade later.
Key words:SqlDependency;street lamp monitoring and controlling system;low coupling;data driven
作者簡介:第一蔡俊濤,男,1978年生,廣東潮州人,大學(xué)本科,工程師。研究領(lǐng)域:測控技術(shù)、軟件工程。已發(fā)表論文5篇。
收稿日期:2015-07-10
DOI:10.3969/j.issn.1009-9492.2015.08.021
中圖分類號(hào):TP274
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-9492 (2015 ) 08-0074-03