蔡俊濤,賴順橋,肖熠琳(.廣州市光機電技術研究院,廣東廣州 50663;2.中山大學數(shù)學與計算科學學院,廣東廣州 50275)
基于SqlDependency對象的路燈測控系統(tǒng)設計*
蔡俊濤1,2,賴順橋1,肖熠琳1
(1.廣州市光機電技術研究院,廣東廣州510663;2.中山大學數(shù)學與計算科學學院,廣東廣州510275)
摘要:以路燈測控系統(tǒng)為例,針對系統(tǒng)對用戶操作過程和各類測試數(shù)據(jù)需要隨時記錄的應用特點,采用基于SqlDependency對象,以數(shù)據(jù)的變化驅(qū)動功能模塊的架構模式,大大提高了接口可讀性,降低了功能模塊之間的耦合性,有利于開發(fā)過程中團隊的協(xié)同作業(yè),以及后期的改進升級。
關鍵詞:SqlDependency;路燈測控系統(tǒng);低耦合;數(shù)據(jù)驅(qū)動
*國家863計劃項目(編號:2013AA03A106);廣州市重大科技專項(編號:2013Y2-00142)
SqlDependency對象表示應用程序和SQL Serv?er實例間的查詢通知依賴關系。應用程序可以創(chuàng)建一個SqlDependency對象并進行注冊以通過On?ChangeEventHandler事件處理程序接收通知[1],其主要作用是監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化。利用SqlDependency對象的監(jiān)測功能,以數(shù)據(jù)庫作為數(shù)據(jù)驅(qū)動的接口,可以構建出模塊耦合性低、功能擴展性好、接口可讀性高的應用系統(tǒng)。本文以路燈測控系統(tǒng)為例,簡要地闡述了基于SqlDepen?dency對象的測控系統(tǒng)的開發(fā)模式。
目前,大部分LED路燈缺少必要的智能控制,或者雖然有定時控制但是卻不能自動檢測路燈的工作狀況,也不能方便地對路燈進行遠程測控[2]。對城市管理而言,亟需一套可統(tǒng)一管理的智能化路燈測控系統(tǒng)。筆者承擔了一項類似的開發(fā)任務,其需求具有以下顯著特點:
(1)系統(tǒng)管理的對象地域性廣,采用分布式架構,涉及多個服務器和各種客戶端應用;
(2)系統(tǒng)除了需要保存各種檢測數(shù)據(jù)、狀態(tài)數(shù)據(jù)外,每一次的操作都需要在數(shù)據(jù)庫中留下歷史記錄;
(3)系統(tǒng)要求功能擴展性好,而且有可能在系統(tǒng)完成初期還需要根據(jù)實際使用情況修改功能模塊。
可以看出,系統(tǒng)相對一般的應用系統(tǒng)架構較龐大,對數(shù)據(jù)庫操作頻繁,對功能模塊的耦合性十分敏感。因此,本系統(tǒng)以SQL Server數(shù)據(jù)庫為交互點,利用SqlDependency對象的監(jiān)測功能進行整合開發(fā)。
系統(tǒng)架構如圖1所示,主要包含三個部分:現(xiàn)場路段、中心、客戶端。
(1)現(xiàn)場路段:指路燈安裝現(xiàn)場,包括了燈、測控器以及基站。測控器安裝在燈上,實現(xiàn)對燈的開關、調(diào)光、檢測等功能,并通過Zigbee或電力線載波等通信方式,與基站連接?;緞t通過公共的無線數(shù)據(jù)通道(4G、GPRS等)與“中心”的網(wǎng)絡進行通信。
圖1 系統(tǒng)架構
(2)中心:以數(shù)據(jù)庫為核心,實現(xiàn)系統(tǒng)的各種應用。通過接口服務,實現(xiàn)客戶與終端之間的指令和數(shù)據(jù)交互;通過呈現(xiàn)服務(主要為Web服務),實現(xiàn)客戶端的界面交互和結果呈現(xiàn);通過分析服務,實現(xiàn)對檢測數(shù)據(jù)的深度分析;通過管理服務,實現(xiàn)用戶、路燈、路段等各方面信息的管理,以及對歷史日志的查詢。
(3)客戶端:通過中心提供的Web服務,實現(xiàn)對系統(tǒng)的應用操作。
系統(tǒng)以數(shù)據(jù)庫為核心,利用SqlDependency對象,可以實現(xiàn)客戶端與現(xiàn)場終端之間的交互以及各個服務之間數(shù)據(jù)的同步(如圖2)。包括在接口服務中實現(xiàn)指令的發(fā)送;在分析服務中實現(xiàn)數(shù)據(jù)自動累計;在呈現(xiàn)服務中實現(xiàn)緩存更新、故障主動預警;在管理服務中實現(xiàn)設置同步。
圖2 運用SqlDependency對象
下面以客戶端發(fā)送指令為例,使用SqlDepen?dency對象,將數(shù)據(jù)表變成交互的接口。首先,在數(shù)據(jù)庫中制定一個用于操作記錄的數(shù)據(jù)表[Control_In?fo](如圖3),此表既是用戶操作的歷史記錄表,也是觸發(fā)中心服務程序發(fā)送指令的接口表,然后在接口程序中建立一個SqlDe?pendency對象,監(jiān)測[Con?trol_Info]表的數(shù)據(jù)變化??蛻舳诵枰l(fā)送指令時,直接在[Control_Info]表中登記一條記錄,SqlDepen?dency對象就會自動觸發(fā)指令發(fā)送程序,對記錄進行解析并按接口協(xié)議完成指令發(fā)送。
圖4為SqlDependency對象在指令發(fā)送方面的程序流程。
實現(xiàn)SqlDependency對象應用的主要代碼如下:
圖3 [Control_Info]表
(1)需要SQL Server 2005以上版本的數(shù)據(jù)庫支持;
(2)必須開啟數(shù)據(jù)庫的ServiceBroker服務,可以使用以下語句開啟:ALTER DATABASE <數(shù)據(jù)庫名稱> SET ENABLE_BROKER;
(3)觸發(fā)發(fā)生后,監(jiān)測即失效,如果要循環(huán)監(jiān)測,需要重新設置SqlDependency對象,如上面實例中在dependency_OnChange函數(shù)里調(diào)用setde?pendency函數(shù)進行重新設置。
本文所描述的路燈測控系統(tǒng),以數(shù)據(jù)庫為核心,以數(shù)據(jù)表為交互接口,通過對SqlDependency對象的充分應用,以數(shù)據(jù)的變化驅(qū)動功能模塊,大大提高了接口可讀性,降低了功能模塊之間的耦合性,有利于開發(fā)過程中團隊的協(xié)同作業(yè),以及后期系統(tǒng)的改進、升級和功能模塊的添加。對于需要對操作過程和各類數(shù)據(jù)隨時記錄的系統(tǒng),特別適合這種應用模式。
圖4 指令發(fā)送流程圖
參考文獻:
[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)設計[J].電子測量技術,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年生,廣東潮州人,大學本科,工程師。研究領域:測控技術、軟件工程。已發(fā)表論文5篇。
收稿日期:2015-07-10
DOI:10.3969/j.issn.1009-9492.2015.08.021
中圖分類號:TP274
文獻標識碼:A
文章編號:1009-9492 (2015 ) 08-0074-03