丁志勇 魏杰 郭華 劉洋
【摘要】針對(duì)目前學(xué)院控電系統(tǒng)不能提供宿舍電量自助實(shí)時(shí)查詢(xún)的情況,我們與廠家一起進(jìn)行了技術(shù)研發(fā),利用Web Service與Socket技術(shù),有效解決了此問(wèn)題。
【關(guān)鍵詞】電量自助實(shí)時(shí)查詢(xún) Web Service Socket
1目前現(xiàn)狀
隨著控電技術(shù)與無(wú)現(xiàn)金支付手段的發(fā)展,電費(fèi)自助繳納與查詢(xún)系統(tǒng)在電力行業(yè)得到了蓬勃發(fā)展。在眾多高校中也已經(jīng)提供了宿舍電費(fèi)的自助充值、查詢(xún)服務(wù),極大地方便了師生,大大降低了人工充值的壓力,我們學(xué)院也受益頗多。
然而,在充值之前,人們往往會(huì)先進(jìn)行電量查詢(xún)。我們學(xué)院的做法是:由后臺(tái)系統(tǒng)間隔一定的時(shí)間段自動(dòng)查詢(xún)剩余電量,保存到數(shù)據(jù)庫(kù)中,用戶(hù)查詢(xún)的是數(shù)據(jù)庫(kù)中的數(shù)據(jù),這種方法實(shí)際上是傳統(tǒng)意義上的手工抄表。缺點(diǎn)是非常明顯的,由于查詢(xún)顯示的電量有可能不是真實(shí)電量,明明是沒(méi)電量了,但是查詢(xún)到的依然是有剩余電量,長(zhǎng)此以往,會(huì)給用戶(hù)帶來(lái)極大的不信任感。因此,本文就電量的實(shí)時(shí)查詢(xún)問(wèn)題進(jìn)行了研究。
2用到的技術(shù)簡(jiǎn)介
2.1 Web Service技術(shù)簡(jiǎn)介
Web Service是由W3C制定的一套開(kāi)放的標(biāo)準(zhǔn)的技術(shù)規(guī)范,W3C對(duì)Web Service的定義如下:Web Service是由URI標(biāo)識(shí)的一個(gè)軟件應(yīng)用,其接口和綁定可以通過(guò)XML文檔定義、描述和發(fā)現(xiàn);它使用基于XML的消息通過(guò)互聯(lián)網(wǎng)協(xié)議與其它軟件之間直接交互。Web服務(wù)的目的是讓不同的軟件應(yīng)用程序能相互操作,無(wú)論這些程序是用什么編程語(yǔ)言實(shí)現(xiàn),運(yùn)行在什么樣的操作平臺(tái)或架構(gòu)技術(shù)上。在Web Service體系結(jié)構(gòu)中有三種角色:服務(wù)提供者、服務(wù)代理(或服務(wù)注冊(cè)中心)和服務(wù)請(qǐng)求者。
服務(wù)提供者首先將服務(wù)發(fā)布到服務(wù)注冊(cè)中心并通過(guò)WSDL對(duì)所發(fā)布的服務(wù)進(jìn)行描述,以待服務(wù)請(qǐng)求者去注冊(cè)中心對(duì)服務(wù)進(jìn)行查詢(xún);服務(wù)請(qǐng)求者根據(jù)其需要到服務(wù)注冊(cè)中心查找服務(wù),以找到合適的WEB服務(wù);服務(wù)請(qǐng)求者通過(guò)服務(wù)注冊(cè)中心找到合適的服務(wù),服務(wù)提供者接受服務(wù)請(qǐng)求者的服務(wù)請(qǐng)求,并與服務(wù)請(qǐng)求者綁定和傳輸服務(wù)。
Web Service相較于傳統(tǒng)的分布式應(yīng)用,具有極大的優(yōu)勢(shì)。
以前,分布式的應(yīng)用程序邏輯需要使用分布式的對(duì)象模型,通過(guò)使用DCOM、CORBA、RMI之類(lèi)的基本結(jié)構(gòu),開(kāi)發(fā)人員仍可擁有使用本地模型所提供的豐富資源和精確性,并可將服務(wù)置于遠(yuǎn)程系統(tǒng)中。中間件確實(shí)提供了強(qiáng)大的服務(wù)實(shí)現(xiàn)手段,但是,這些系統(tǒng)有一個(gè)共同的缺陷,那就是它們無(wú)法擴(kuò)展到互聯(lián)網(wǎng)上。現(xiàn)在,Web Service是創(chuàng)建可互操作的分布式應(yīng)用程序的新平臺(tái)。Web Service的主要目標(biāo)是跨平臺(tái)的可互操作性,為了達(dá)到這一目標(biāo),Web Service是完全基于XML、XSD等獨(dú)立于平臺(tái)、獨(dú)立于軟件供應(yīng)商的標(biāo)準(zhǔn)的。
2.2 Socket技術(shù)簡(jiǎn)介
Socket的英文之意為套接字,對(duì)于使用TCP/IP協(xié)議完成的電腦間通信,套接字提供了雙方通信的接口。它是一種基本的操作單元,是雙方的相互約定,它的功能已被打包在DLL中,通過(guò)相應(yīng)的函數(shù)來(lái)完成相應(yīng)的功能。套接字分兩種:流套接字和數(shù)據(jù)報(bào)套接字。
流套接字提供了接受方和發(fā)送方,按照一定的次序,沒(méi)有重復(fù)并且無(wú)記錄邊界的數(shù)據(jù)流交互,比較適合用于處理大量的數(shù)據(jù),最終再通過(guò)網(wǎng)絡(luò)傳輸層的分析、處理。
數(shù)據(jù)報(bào)套接字同樣支持發(fā)送方與接受方之間的數(shù)據(jù)交流,但在傳輸過(guò)程中,其可靠性、次順性及不可重復(fù)性不能保證。
3本文的解決方法
本方法綜合利用了Web Service與Socket技術(shù),與廠家一起進(jìn)行技術(shù)研發(fā),終于解決了宿舍電量自助實(shí)時(shí)查詢(xún)的難題。
Web Service用來(lái)向用戶(hù)提供查詢(xún)宿舍剩余電量服務(wù)。當(dāng)用戶(hù)發(fā)起電量查詢(xún)后,Web Service會(huì)先利用Socket向控電管理機(jī)發(fā)出查詢(xún)命令,再將查詢(xún)到的結(jié)果返回給用戶(hù)。具體執(zhí)行流程如下圖所示: ?用到的Web Service代碼:
1、方法名:TraceDLZTArray查詢(xún)電量狀態(tài),數(shù)組方式輸出。
2、參數(shù)說(shuō)明:TraceDlZTArray(ByVal inMm As String, ByVal inXq As String, ByVal inFj As String)返回電量狀態(tài)信息數(shù)組。(1)入口參數(shù):inMm輸入密碼,inXq輸入校區(qū),inFj輸入房間,數(shù)據(jù)類(lèi)型String;如:inXq=”主校區(qū)”,inFj=”101001”。(2)說(shuō)明:inFj=“101001”,代表1號(hào)樓1層01房間。(3)返回?cái)?shù)據(jù):房間號(hào)、免費(fèi)電量、收費(fèi)電量、累計(jì)電量、負(fù)電量、供電狀態(tài)值、供電狀態(tài);
3、舉例:TraceDLZTArray(“******”,“主校區(qū)”,“101001”),調(diào)取1號(hào)樓1層01號(hào)房間智能電表電量狀態(tài)信息
為了有效檢驗(yàn)本方法的可行性,我們選取了一棟宿舍樓進(jìn)行測(cè)試。歷經(jīng)1年,3937人次的試用,反應(yīng)良好,徹底杜絕了查詢(xún)到的剩余電量與實(shí)際電量不一致現(xiàn)象的發(fā)生。
4本方法存在的問(wèn)題與改進(jìn)措施
在試用期間,我們也發(fā)現(xiàn)了該方法存在的最大問(wèn)題:當(dāng)一個(gè)用戶(hù)查詢(xún)未完成,另一個(gè)用戶(hù)也進(jìn)行查詢(xún)時(shí),電控模塊的管理機(jī)會(huì)不進(jìn)行響應(yīng),導(dǎo)致查詢(xún)失敗,如果用戶(hù)仍然想查詢(xún)的話(huà),只能進(jìn)行多次嘗試。
針對(duì)存在的問(wèn)題,下一步,我們準(zhǔn)備將查詢(xún)操作放入查詢(xún)隊(duì)列中,先來(lái)先服務(wù),待完成一次查詢(xún)后,管理機(jī)返回成功狀態(tài)標(biāo)志,在隊(duì)列中取下一個(gè)要查詢(xún)的房間號(hào),同時(shí)設(shè)置超時(shí)時(shí)間,如果超時(shí),就認(rèn)為是查詢(xún)失敗。要想得到結(jié)果,只能再次發(fā)起查詢(xún)。
參考文獻(xiàn):
[1]龐文昌,王興權(quán).基于WebService的費(fèi)控電能表便捷繳費(fèi)技術(shù)應(yīng)用研究[J].通訊世界,2018(02).
[2]李莉,高峰.WEB Service技術(shù)綜述[J].信息系統(tǒng)工程,2014(01).
[3]蔣達(dá).基于Socket的網(wǎng)絡(luò)接口編程[J].辦公自動(dòng)化,2018(23).