《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于C/S和B/S混合結(jié)構(gòu)的遠(yuǎn)程抄表系統(tǒng)設(shè)計(jì)
基于C/S和B/S混合結(jié)構(gòu)的遠(yuǎn)程抄表系統(tǒng)設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2014年第1期
劉春輝1,徐 平1,朱世峰2
(1.杭州電子科技大學(xué) 生命信息與儀器工程學(xué)院,浙江 杭州 310018; 2.杭州電子科技大學(xué) 自
摘要: 設(shè)計(jì)了一種基于C/S和B/S混合結(jié)構(gòu)的水表遠(yuǎn)程抄表系統(tǒng),以GPRS網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)為通道,實(shí)現(xiàn)水表系統(tǒng)的遠(yuǎn)程數(shù)據(jù)采集和傳輸,同時(shí)給出了一種基于Web集群和數(shù)據(jù)庫(kù)集群的負(fù)載均衡方案。另外,設(shè)計(jì)了一款基于Android平臺(tái)的抄表機(jī)抄表軟件。該軟件具有二維碼掃描、GPS定位/地圖導(dǎo)航、拍照以及GPRS/WiFi通信等功能。整個(gè)系統(tǒng)采用Internet編程、多線程、數(shù)據(jù)庫(kù)管理等技術(shù),采用模塊化、結(jié)構(gòu)化的程序設(shè)計(jì)思想。系統(tǒng)完成后能夠解決傳統(tǒng)人工入戶抄表帶來(lái)的各種弊端,降低供水部門(mén)的管理成本,提高用水管理水平和服務(wù)質(zhì)量,實(shí)際運(yùn)行表明該系統(tǒng)通信可靠,實(shí)時(shí)性好。
Abstract:
Key words :

摘  要: 設(shè)計(jì)了一種基于C/S和B/S混合結(jié)構(gòu)的水表遠(yuǎn)程抄表系統(tǒng),以GPRS網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)為通道,實(shí)現(xiàn)水表系統(tǒng)的遠(yuǎn)程數(shù)據(jù)采集和傳輸,同時(shí)給出了一種基于Web集群和數(shù)據(jù)庫(kù)集群的負(fù)載均衡方案。另外,設(shè)計(jì)了一款基于Android平臺(tái)的抄表機(jī)抄表軟件。該軟件具有二維碼掃描、GPS定位/地圖導(dǎo)航、拍照以及GPRS/WiFi通信等功能。整個(gè)系統(tǒng)采用Internet編程、多線程、數(shù)據(jù)庫(kù)管理等技術(shù),采用模塊化、結(jié)構(gòu)化的程序設(shè)計(jì)思想。系統(tǒng)完成后能夠解決傳統(tǒng)人工入戶抄表帶來(lái)的各種弊端,降低供水部門(mén)的管理成本,提高用水管理水平和服務(wù)質(zhì)量,實(shí)際運(yùn)行表明該系統(tǒng)通信可靠,實(shí)時(shí)性好。
關(guān)鍵詞: 自動(dòng)抄表;無(wú)線分組業(yè)務(wù);網(wǎng)絡(luò)編程多線程技術(shù);Web集群服務(wù)器;負(fù)載均衡

 隨著電子技術(shù)、計(jì)算機(jī)技術(shù)以及網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展,供水系統(tǒng)的自動(dòng)化程度也在不斷地提高,自動(dòng)抄表已成為各大供水公司所關(guān)注的一個(gè)重要課題。目前國(guó)內(nèi)的自動(dòng)抄表系統(tǒng)一般都采用兩層結(jié)構(gòu),底層(集中器與采集器之間)一般利用低壓載波或RS-485總線的通信方式[1-2]。上層(集中器與管理中心之間)的通信根據(jù)信道介質(zhì)不同有電話線、電力線載波、光纖和無(wú)線等多種方式,并且以有線的方式居多。但在很多情況下,對(duì)于供水公司來(lái)說(shuō),水表測(cè)點(diǎn)分散,地理位置復(fù)雜,實(shí)施布線比較困難。
 目前基于公共互聯(lián)網(wǎng)遠(yuǎn)程監(jiān)控技術(shù)的研究與應(yīng)用在許多領(lǐng)域都引起了關(guān)注,互聯(lián)網(wǎng)已經(jīng)滲透到社會(huì)的每一個(gè)角落,而通過(guò)GPRS網(wǎng)絡(luò)系統(tǒng)[3],設(shè)備可采用Internet的技術(shù)標(biāo)準(zhǔn)與服務(wù)器交換數(shù)據(jù),實(shí)現(xiàn)與國(guó)際互聯(lián)網(wǎng)的連接。
 然而基于供水系統(tǒng)自身的特點(diǎn),采用自動(dòng)抄表而沒(méi)有人為去監(jiān)督校驗(yàn)數(shù)據(jù)很難保證數(shù)據(jù)的完全可靠,所以必須開(kāi)發(fā)一款手持抄表機(jī)去配合完成數(shù)據(jù)的檢驗(yàn),目前國(guó)內(nèi)現(xiàn)有的抄表機(jī)抄表存在以下4個(gè)問(wèn)題:(1)抄表機(jī)不能夠精確定位每一只水表,導(dǎo)致找表困難;(2)供水企業(yè)難以掌握外出抄表員工的工作情況,常出現(xiàn)有意估抄的情況;(3)水表分布廣泛、不規(guī)律,常常漏抄水表;(4)現(xiàn)有抄表機(jī)界面不友好,不便于使用。
 本文選用了基于GPRS的無(wú)線通信技術(shù)作為遠(yuǎn)程集中自動(dòng)抄表的通信方式,開(kāi)發(fā)一款服務(wù)器后臺(tái)管理軟件,同時(shí)開(kāi)發(fā)了一款基于安卓的手持抄表機(jī)終端。
1 系統(tǒng)分析和設(shè)計(jì)
1.1 系統(tǒng)體系結(jié)構(gòu)

 C/S結(jié)構(gòu)是20世紀(jì)90年代開(kāi)始流行的一種體系結(jié)構(gòu),在C/S結(jié)構(gòu)下,應(yīng)用系統(tǒng)包括客戶機(jī)和服務(wù)器兩部分[4],應(yīng)用處理由客戶端來(lái)完成,數(shù)據(jù)訪問(wèn)及事務(wù)處理由服務(wù)器來(lái)承擔(dān)。C/S結(jié)構(gòu)對(duì)程序整體性考慮較多,注重流程及對(duì)權(quán)限進(jìn)行多層次校驗(yàn),具有安全性高、聯(lián)機(jī)事務(wù)處理性能好的特點(diǎn),并且還具有應(yīng)用程序開(kāi)發(fā)效率高的優(yōu)點(diǎn),但同時(shí)也具有內(nèi)在缺陷,例如客戶端平臺(tái)相關(guān)性,客戶端管理復(fù)雜,維護(hù)困難等。隨著C/S結(jié)構(gòu)的進(jìn)一步深化,出現(xiàn)了基于Web的B/S結(jié)構(gòu)。B/S結(jié)構(gòu)用戶界面更加友好,可跨平臺(tái)使用數(shù)據(jù)庫(kù)、超文本、多媒體等多種形式的信息,系統(tǒng)具有可靠性、整體性以及可擴(kuò)展性,客戶端僅需配置操作系統(tǒng)和Web瀏覽器,更利于軟件的開(kāi)發(fā)、安裝、升級(jí),節(jié)省開(kāi)發(fā)維護(hù)費(fèi)用。基于Web的B/S結(jié)構(gòu)特別適用于信息的瀏覽、查詢與發(fā)布,適于領(lǐng)導(dǎo)輔助決策支持。而C/S結(jié)構(gòu)適用于信息管理、辦公自動(dòng)化等事務(wù)處理的系統(tǒng)。根據(jù)系統(tǒng)的開(kāi)發(fā)要求和系統(tǒng)目標(biāo),系統(tǒng)選擇C/S和B/S混合的結(jié)構(gòu),該混合結(jié)構(gòu)的軟件開(kāi)發(fā)由瀏覽器、網(wǎng)頁(yè)服務(wù)器、客戶端、事務(wù)服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器(資源文件)和數(shù)據(jù)庫(kù)組成,如圖1所示。這種混合結(jié)構(gòu)既發(fā)揮傳統(tǒng)C/S結(jié)構(gòu)成熟的技術(shù),又能借Internet技術(shù)充分發(fā)揮B/S結(jié)構(gòu)的優(yōu)點(diǎn)[5-6]。系統(tǒng)的功能框圖如圖2所示。

1.2 編程工具選擇和數(shù)據(jù)庫(kù)建立
 Visual C#是極其優(yōu)秀的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,具有開(kāi)發(fā)簡(jiǎn)單、功能強(qiáng)大、擴(kuò)展方便、易于維護(hù)的優(yōu)點(diǎn),本系統(tǒng)采用該語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)。ASP.NET實(shí)現(xiàn)了網(wǎng)頁(yè)的前臺(tái)和后臺(tái)的分離以及代碼的“隱藏”技術(shù)。因此,利用ASP.NET構(gòu)建網(wǎng)站越來(lái)越多,所以網(wǎng)頁(yè)部分采用ASP.NET技術(shù)實(shí)現(xiàn)。SQL Server作為微軟發(fā)布的一個(gè)典型的關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),功能強(qiáng)大、操作簡(jiǎn)便、安全可靠。本系統(tǒng)設(shè)計(jì)中選擇Microsoft SQL Server 2008作為數(shù)據(jù)庫(kù)服務(wù)器平臺(tái)。
 在數(shù)據(jù)庫(kù)設(shè)計(jì)中使用了存儲(chǔ)過(guò)程和事務(wù),增強(qiáng)了代碼的重用性和共享性,應(yīng)用程序的開(kāi)發(fā)速度,開(kāi)發(fā)質(zhì)量和效率都有所提高,對(duì)禁止用戶直接訪問(wèn)的數(shù)據(jù)對(duì)象,通過(guò)對(duì)用戶進(jìn)行存儲(chǔ)過(guò)程的使用授權(quán),能夠通過(guò)執(zhí)行存儲(chǔ)過(guò)程去操作那些禁止直接訪問(wèn)的下層數(shù)據(jù)對(duì)象,保證數(shù)據(jù)安全、完整性,通過(guò)將事務(wù)管理機(jī)制引入存儲(chǔ)過(guò)程,保證了系統(tǒng)數(shù)據(jù)的一致性和完整性。
1.3 Internet編程
1.3.1 異步通信

 異步通信方式比之同步方式可以提高程序的并行度和效率,其具體的實(shí)現(xiàn)是通過(guò)委托的方式,事件發(fā)生時(shí),系統(tǒng)會(huì)自動(dòng)地通知回調(diào)函數(shù)去執(zhí)行相關(guān)的操作。但是,異步的方式一般需要在某種程度上的協(xié)調(diào)才能將功能發(fā)揮到極致。例如,在服務(wù)器上獲取正在嘗試連接的客戶端套接字時(shí),由于使用了異步方式,這樣就使得可以在不等待客戶端連接接入,而直接去執(zhí)行后面的代碼,看似好像是效率很高,不阻塞就能夠執(zhí)行,但是如果在該方法尚未接收到連接請(qǐng)求時(shí)就在此方法的后面調(diào)用了在套接字上的讀寫(xiě)操作,就會(huì)造成程序執(zhí)行結(jié)構(gòu)的錯(cuò)誤。.NET Framework可以利用委托異步調(diào)用任何方法,對(duì)于任何一種方法,如果希望異步執(zhí)行,最簡(jiǎn)單的方法就是通過(guò)調(diào)用委托的開(kāi)啟方法開(kāi)始異步執(zhí)行,然后執(zhí)行其他操作,最后調(diào)用委托終止方法結(jié)束異步操作,通過(guò)輪詢方式檢查異步調(diào)用是否完成。終止方法在異步調(diào)用完成后才返回,因此這種方式非常適合執(zhí)行文件或網(wǎng)絡(luò)操作。
1.3.2 多線程技術(shù)
 由于各個(gè)現(xiàn)場(chǎng)水表是獨(dú)立運(yùn)行的,向服務(wù)器申請(qǐng)連接及數(shù)據(jù)傳輸事件時(shí)也是隨機(jī)的,因此非常適合于多線程技術(shù)。當(dāng)主機(jī)監(jiān)聽(tīng)到有連接請(qǐng)求時(shí),就啟動(dòng)一個(gè)新線程,用于處理相應(yīng)的任務(wù)。一個(gè)終端對(duì)應(yīng)一個(gè)獨(dú)立的線程,一旦該線程啟動(dòng),將和主線程一起獨(dú)立運(yùn)行,主線程仍然處于監(jiān)聽(tīng)狀態(tài),從而確保整個(gè)系統(tǒng)處于有序狀態(tài),多線程工作流程如圖3所示,創(chuàng)建線程包括創(chuàng)建監(jiān)聽(tīng)端口的主線程和處理終端任務(wù)的輔助線程。抄表終端工作流程如圖4所示。

?。?)終端回饋信息格式如表2所示。


?。?)在數(shù)據(jù)傳輸過(guò)程中,中心服務(wù)器每發(fā)一個(gè)小包,必須等待終端有相應(yīng)的反饋后才繼續(xù)發(fā)送。例如發(fā)心跳包后必須回心跳包,發(fā)狀態(tài)查詢包后必須回狀態(tài)查詢包。
1.3.4 通信過(guò)程中異常處理
 為了保證通信安全可靠和系統(tǒng)的穩(wěn)定,必須將通信過(guò)程中的異常處理問(wèn)題放在一個(gè)比較高的位置,例如:(1)Socket連接的異常斷開(kāi):在發(fā)送信息失敗Socket斷開(kāi)的情況需要重連接。發(fā)送線程(Send Thread)在發(fā)現(xiàn)Send失敗后(由計(jì)時(shí)器通知),關(guān)閉Socket連接,新建Socket并重新連接;(2)發(fā)送請(qǐng)求包異常:發(fā)送請(qǐng)求包后T1時(shí)間內(nèi)沒(méi)有收到應(yīng)答包判定為應(yīng)答接收失敗。發(fā)送請(qǐng)求包后沒(méi)有回應(yīng)的情況、檢測(cè)異常,累計(jì)3次失敗視為終端掉線,通信的異常情況較多,具體限于篇幅不做詳細(xì)介紹。
1.4 Web服務(wù)器集群和數(shù)據(jù)庫(kù)服務(wù)器集群技術(shù)[7]
1.4.1 負(fù)載均衡算法

 將一組服務(wù)器組成集群,對(duì)外作為一個(gè)整體來(lái)提供服務(wù),可以提高服務(wù)器的服務(wù)質(zhì)量。這樣就避免了一臺(tái)服務(wù)器由于資源的有限而只能為有限的用戶提供服務(wù)的弊端。此時(shí)多個(gè)服務(wù)器集群中任務(wù)的合理分配至關(guān)重要。負(fù)載均衡算法的好壞直接決定集群中單個(gè)節(jié)點(diǎn)的負(fù)載,進(jìn)而影響集群的性能。
 目前應(yīng)用服務(wù)器集群負(fù)載均衡有硬件和軟件兩種方式,在本系統(tǒng)設(shè)計(jì)中選用了軟件的方式,采用動(dòng)態(tài)加權(quán)方式負(fù)擔(dān)負(fù)載,在系統(tǒng)的運(yùn)行開(kāi)始時(shí)通過(guò)收集每個(gè)服務(wù)器的負(fù)載情況設(shè)置權(quán)值,真正實(shí)現(xiàn)負(fù)載均衡。數(shù)據(jù)庫(kù)的負(fù)載均衡的實(shí)現(xiàn)采用的是最小連接法。在數(shù)據(jù)庫(kù)中存有連接表。Web服務(wù)器通過(guò)查看該表確定連接的對(duì)象,同時(shí)動(dòng)態(tài)地修改該表為其他的Web服務(wù)器提供連接標(biāo)準(zhǔn)。
1.4.2 數(shù)據(jù)庫(kù)集群負(fù)載均衡結(jié)構(gòu)
 數(shù)據(jù)庫(kù)服務(wù)器在設(shè)計(jì)中采用了master/slave機(jī)制,每個(gè)節(jié)點(diǎn)同時(shí)扮演著master和slave的角色,在每一個(gè)節(jié)點(diǎn)上操作數(shù)據(jù)庫(kù),其結(jié)果是每一個(gè)數(shù)據(jù)庫(kù)都得到相同的數(shù)據(jù)。連接到數(shù)據(jù)庫(kù)的服務(wù)按照一定的策略分配給其中的一臺(tái)服務(wù)器,實(shí)現(xiàn)負(fù)載的分擔(dān)。同時(shí)該結(jié)構(gòu)一個(gè)master可以對(duì)應(yīng)增加多個(gè)slave,擴(kuò)展性良好,如圖5所示。

1.4.3 Web服務(wù)器負(fù)載均衡結(jié)構(gòu)
 負(fù)載均衡器負(fù)責(zé)接受客戶端的請(qǐng)求,根據(jù)服務(wù)器的情況將任務(wù)分配給服務(wù)器,同時(shí)將結(jié)果返回給客戶。服務(wù)器在接受任務(wù)和返回結(jié)果都需要負(fù)載均衡的參與。Internet連接直接和負(fù)載均衡器相連接,而不是直接和Web服務(wù)器連接,具體如圖6所示。

 

 

2 具體實(shí)現(xiàn)
2.1 系統(tǒng)登錄

 管理人員登錄時(shí)要輸入用戶名和密碼,同時(shí)要對(duì)系統(tǒng)的基本參數(shù)進(jìn)行設(shè)置,只有通過(guò)認(rèn)證才能進(jìn)入系統(tǒng)主界面,否則無(wú)法進(jìn)入。
2.2 用戶管理的實(shí)現(xiàn)
 為確保信息的安全性,用戶管理模塊對(duì)系統(tǒng)使用者的名稱、密碼、權(quán)限等信息做了規(guī)定。該模塊實(shí)現(xiàn)了用戶添加、用戶刪除、密碼修改等功能。系統(tǒng)登錄時(shí)會(huì)根據(jù)登錄者的權(quán)限提供全部或部分功能,當(dāng)?shù)卿浾呤枪芾韱T時(shí),將提供全部的功能,如果登錄者是一般用戶,將只提供部分功能。
2.3 水表管理的實(shí)現(xiàn)
 管理人員可以增加、修改、刪除水表信息,導(dǎo)出用戶信息,增加街區(qū)信息等,并且能夠查看修改單個(gè)水表的具體信息。管理人員可以實(shí)時(shí)查看各個(gè)自動(dòng)抄表模塊的運(yùn)行情況以及手持終端的地理信息位置。
2.4 統(tǒng)計(jì)分析的實(shí)現(xiàn)
 具有編制單個(gè)用戶每月報(bào)表、全部用戶的每日?qǐng)?bào)表、費(fèi)用結(jié)算單等功能,并將系統(tǒng)采集到的信息,統(tǒng)計(jì)匯總出二次信息,以數(shù)據(jù)表格和趨勢(shì)圖的形式顯示統(tǒng)計(jì)的詳細(xì)數(shù)據(jù),用于管理決策。統(tǒng)計(jì)分析模塊除了統(tǒng)計(jì)各種常用信息外還包括經(jīng)常發(fā)生故障的用戶及地段等信息。
2.5 系統(tǒng)維護(hù)功能的實(shí)現(xiàn)
 系統(tǒng)維護(hù)主要是對(duì)系統(tǒng)中需要用到的一些參數(shù)進(jìn)行設(shè)置或重新配置以及對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行維護(hù),這些參數(shù)一般是比較固定的,但是用戶可以根據(jù)實(shí)際的變動(dòng)情況對(duì)其設(shè)置。系統(tǒng)維護(hù)包括系統(tǒng)參數(shù)設(shè)置和數(shù)據(jù)維護(hù)部分,其中參數(shù)設(shè)置包括系統(tǒng)常用參數(shù)設(shè)置和數(shù)據(jù)庫(kù)參數(shù)設(shè)置,系統(tǒng)常用參數(shù)設(shè)置指的是對(duì)公司名稱,站點(diǎn)等相關(guān)信息進(jìn)行設(shè)置,數(shù)據(jù)庫(kù)參數(shù)設(shè)置指的是對(duì)服務(wù)器名稱、數(shù)據(jù)庫(kù)類(lèi)型、數(shù)據(jù)庫(kù)名稱等的恢復(fù)及定期刪除數(shù)據(jù)庫(kù)中部分?jǐn)?shù)據(jù)的功能。此外,后臺(tái)服務(wù)管理軟件對(duì)數(shù)據(jù)采集的時(shí)間和周期也可自行設(shè)定,具體實(shí)現(xiàn)鑒于篇幅不做具體描述。
 本文提出了一種基于C/S和B/S混合結(jié)構(gòu)的水表遠(yuǎn)程抄表和管理系統(tǒng)的設(shè)計(jì)方案。既發(fā)揮了C/S模式成熟的技術(shù)特長(zhǎng),避免建立多層C/S模式的高昂代價(jià),又能借Internet技術(shù)充分發(fā)揮B/S模式的優(yōu)點(diǎn),有效實(shí)現(xiàn)快速的信息交流和信息共享。該系統(tǒng)能夠解決傳統(tǒng)抄表帶來(lái)的各種弊端,降低供水部門(mén)的管理成本,提高用水管理水平和服務(wù)質(zhì)量。手持抄表終端增加現(xiàn)有抄表機(jī)沒(méi)有的二維碼讀取、地圖導(dǎo)航等功能,彌補(bǔ)了現(xiàn)有抄表機(jī)存在的不足。下一步計(jì)劃實(shí)現(xiàn)與營(yíng)業(yè)收費(fèi)系統(tǒng)的互聯(lián)。該系統(tǒng)除在供水公司應(yīng)用外,同時(shí)也為電表、煤氣表的數(shù)據(jù)抄收工作以及智能家居提供了技術(shù)解決方案。
參考文獻(xiàn)
[1] 劉基華,盧延詩(shī).基于C/S與B/S的電廠信息管理系統(tǒng)[J].中國(guó)測(cè)試技術(shù),2003,29(1):49-50.
[2] 栗玉霞,徐建政,劉愛(ài)兵.GPRS技術(shù)在自動(dòng)抄表系統(tǒng)中的應(yīng)用[J].電力自動(dòng)化設(shè)備,2003,23(12):52-53.
[3] 孫忠富,曹洪太,李洪亮,等.基于GPRS和WEB的溫室環(huán)境信息采集系統(tǒng)的實(shí)現(xiàn)[J].農(nóng)業(yè)工程學(xué)報(bào),2006,22(6):131-134.
[4] 王喜富,陳建廣.基于B/S與C/S模式的鐵路運(yùn)輸安全管理信息系統(tǒng)[J].中國(guó)安全科學(xué)學(xué)報(bào),2004,14(3):73-76.
[5] SAEED GHASEMI, MAJID MEGHDAD. The design and management of intelligent systems in mechanical domestic water meters[J]. Open Journal of Urology, 2011,2(4):424-429.
[6] 馮鑒煒.太陽(yáng)能熱水工程遠(yuǎn)程監(jiān)測(cè)系統(tǒng)開(kāi)發(fā)[D].杭州:杭州電子科技大學(xué),2012.
[7] 張鋒,祝永志.B/S模式服務(wù)器集群系統(tǒng)的研究與應(yīng)用[J].電腦知識(shí)與技術(shù),2009,5(1):88-89.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。