張 娜,焦東來,吳子杰,楊 浩
(南京郵電大學(xué) 電子科學(xué)與工程學(xué)院,江蘇 南京 210009)
基于XML遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的研究與實(shí)現(xiàn)
張 娜,焦東來,吳子杰,楊 浩
(南京郵電大學(xué) 電子科學(xué)與工程學(xué)院,江蘇 南京 210009)
物聯(lián)網(wǎng)應(yīng)用領(lǐng)域中,應(yīng)用層的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議與通信程序往往融為一體,當(dāng)數(shù)據(jù)傳輸協(xié)議改變時(shí),通信程序一般需要大規(guī)模修改甚至重新編寫,因而大大降低了通信程序的可重用性。針對這一問題,文中提出了一種基于XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)結(jié)構(gòu)化方式來描述數(shù)據(jù)傳輸協(xié)議的方案,并探討了基于該方案的解析方法。該方案可以統(tǒng)一數(shù)據(jù)格式,實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的通用解析。在不修改通訊程序的情況下,通過修改數(shù)據(jù)傳輸協(xié)議的XML文件,即可實(shí)現(xiàn)通信數(shù)據(jù)的接收和解析。最后以電能表數(shù)據(jù)傳輸協(xié)議的某一子協(xié)議為例,對該功能進(jìn)行測試,驗(yàn)證了方案的可行性。
可擴(kuò)展標(biāo)記語言;遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議;解析程序;重用性
在物聯(lián)網(wǎng)應(yīng)用領(lǐng)域中,前臺與后臺之間,硬件與軟件之間都是通過通信程序進(jìn)行數(shù)據(jù)交互。然而在通信程序發(fā)展的現(xiàn)階段,不同終端和采集設(shè)備標(biāo)準(zhǔn)各異以及數(shù)據(jù)傳輸協(xié)議的千差萬別導(dǎo)致了通信程序應(yīng)用中信息孤島的出現(xiàn)。這使得通信程序的開發(fā)門檻較高,阻礙了企業(yè)業(yè)務(wù)應(yīng)用的創(chuàng)新,降低了面向大眾提供大規(guī)模應(yīng)用的可能性。通過對物聯(lián)網(wǎng)領(lǐng)域數(shù)據(jù)傳輸協(xié)議分析可知,進(jìn)行交互的大部分?jǐn)?shù)據(jù)為結(jié)構(gòu)化數(shù)據(jù)。該類數(shù)據(jù)存在內(nèi)部邏輯關(guān)系,數(shù)據(jù)由數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)項(xiàng)的長度、內(nèi)容、順序都具有一定的規(guī)律,是一種模式(schema)強(qiáng)約束的數(shù)據(jù)組織形式[1]。在這種結(jié)構(gòu)化數(shù)據(jù)下,以往程序員都根據(jù)該結(jié)構(gòu)對數(shù)據(jù)進(jìn)行組織與編寫,在編寫通信程序之前,必須約定好數(shù)據(jù)傳輸協(xié)議,包括采集終端與后臺服務(wù)器的數(shù)據(jù)傳輸協(xié)議、服務(wù)器與PAD顯示端的數(shù)據(jù)傳輸協(xié)議等。程序員充分理解數(shù)據(jù)傳輸協(xié)議后,再根據(jù)相應(yīng)的數(shù)據(jù)結(jié)構(gòu)編寫程序。這樣數(shù)據(jù)傳輸協(xié)議與通信程序已經(jīng)融為一體。然而,一旦數(shù)據(jù)傳輸協(xié)議發(fā)生改變,即使簡單的修改,例如數(shù)據(jù)傳輸協(xié)議中增加或減少功能,都必須大規(guī)模修改甚至重新編寫通信程序,這樣增加開發(fā)人員的工作量,使軟件的可重用性與可維護(hù)性變差,降低通信效率。
對此,文中提出一種以結(jié)構(gòu)化方式來描述數(shù)據(jù)傳輸協(xié)議的方案。該方案可在不改動(dòng)通信程序的基礎(chǔ)上適應(yīng)企業(yè)提出的協(xié)議修改建議,從而使通信程序?qū)?shù)據(jù)的管理與傳輸通用化,提高了軟件的重用性。
國際上,物聯(lián)網(wǎng)行業(yè)中基于TCP層的數(shù)據(jù)傳輸協(xié)議主要包括MODBUS[2-3]和IEC62056體系[4],以及用于遠(yuǎn)動(dòng)系統(tǒng)的IEC60870系列。IEC62056系列標(biāo)準(zhǔn)規(guī)定了設(shè)備間的數(shù)據(jù)交換協(xié)議,其核心部分是設(shè)備語言報(bào)文規(guī)范—DLMS(Device Language Message Specification)和能源計(jì)量配套規(guī)范—COSEM(COmpanion Specification for Energy Metering),即DLMS/COSEM[5]。MODBUS主要被歐美等發(fā)達(dá)國家采用,DLMS/COSEM主要在東南亞國家使用。通過對協(xié)議結(jié)構(gòu)的分析可知,無論數(shù)據(jù)的發(fā)送還是回應(yīng),其數(shù)據(jù)的組織方式都有順序和條件兩種組織形式。在順序組織結(jié)構(gòu)中,具有實(shí)際意義的數(shù)據(jù)項(xiàng)以順序方式依次記錄數(shù)據(jù);在條件組織結(jié)構(gòu)中,具有實(shí)際意義的數(shù)據(jù)按照數(shù)據(jù)傳輸過程中的具體條件對數(shù)據(jù)項(xiàng)進(jìn)行描述。因此順序和選擇是數(shù)據(jù)通訊協(xié)議中具有的基本結(jié)構(gòu)特征。
為了提高通訊軟件的復(fù)用程度,宋青山等提出了基于JSON格式的數(shù)據(jù)描述[6]。JSON格式是一種公開的數(shù)據(jù)交換格式,通過JSON描述通訊數(shù)據(jù)可以實(shí)現(xiàn)數(shù)據(jù)共享[7-8];但是該格式不能描述協(xié)議中的順序、選擇等結(jié)構(gòu)化特征,因此在解析過程中不能完全實(shí)現(xiàn)通訊程序的重用。
可擴(kuò)展標(biāo)記語言(XML)是一門新興的面向Internet應(yīng)用的標(biāo)記語言,它是由W3C組織(互聯(lián)網(wǎng)聯(lián)合組織)于1998年2月制定的一種通用語言規(guī)范。XML憑借其良好的擴(kuò)展性和自描述性、形式與內(nèi)容分離、遵循嚴(yán)格的語法要求以及對多語種的支持等特點(diǎn),給跨平臺、跨地域異構(gòu)應(yīng)用間的協(xié)同工作,基于語義的智能數(shù)據(jù)搜索等重要領(lǐng)域帶來了重大突破[9]。因而,采用基于XML結(jié)構(gòu)化方式來描述數(shù)據(jù)傳輸協(xié)議的方案是提高通信程序重用性的關(guān)鍵。
在描述數(shù)據(jù)方面,XML提供了較好的描述結(jié)構(gòu)化數(shù)據(jù)的方法,使用戶可以用自定義的標(biāo)記來描述數(shù)據(jù)元素,每個(gè)元素可以封裝復(fù)雜或者簡單的數(shù)據(jù),甚至可以定義一組無限制的XML標(biāo)記。XML這種結(jié)構(gòu)的描述不是基于只能由軟件程序去判讀的代碼,而是一種簡單的、能夠用任何編輯器讀取的文本。利用這種機(jī)制,可以將原來定義在程序中的數(shù)據(jù)結(jié)構(gòu)按照一定的規(guī)則用XML描述出來。軟件程序只需要完成對XML文件的解釋,并按照XML的描述來組織和管理數(shù)據(jù)。當(dāng)與數(shù)據(jù)交互的數(shù)據(jù)傳輸協(xié)議發(fā)生變化時(shí),軟件程序不需要改動(dòng),只需要修改相應(yīng)的XML文件即可。由于XML文件是文本文件,易讀且說明性強(qiáng),因此XML的修改并不需要專門軟件人員來完成,而且對于數(shù)據(jù)交互的雙方,修改一次即可。針對數(shù)據(jù)傳輸協(xié)議中的順序、選擇、條件等結(jié)構(gòu)化特征,分別定義相應(yīng)的XML標(biāo)簽,每類標(biāo)簽分別定義若干屬性對順序、選擇、條件等結(jié)構(gòu)進(jìn)行具體約束,如表1所示。
表1 數(shù)據(jù)傳輸協(xié)議的標(biāo)簽描述
Element是數(shù)據(jù)傳輸協(xié)議中的基本數(shù)據(jù)單元。該結(jié)構(gòu)中type表示值的類型,包括:INT,String,float,short,long,unsigned,signed,bit,byte,BCD;name表示值的名稱;value表示屬性值;length表示值的長度;desc表示值在協(xié)議中的作用。例如:
Sequence在數(shù)據(jù)傳輸協(xié)議中表示順序約束,它的屬性是repeat,當(dāng)值為“1”表示數(shù)據(jù)依次出現(xiàn),當(dāng)值為“unbound”表示數(shù)據(jù)循環(huán)出現(xiàn)。在通訊數(shù)據(jù)中數(shù)據(jù)項(xiàng)順序出現(xiàn)一次,可以用如下方式描述:
Choice在數(shù)據(jù)傳輸協(xié)議中表示數(shù)據(jù)單元或數(shù)據(jù)塊的選擇約束,它的屬性包括condition和respondref,分別代表選擇的條件和該條件下要執(zhí)行的操作。在數(shù)據(jù)傳輸協(xié)議中條件選擇結(jié)構(gòu)可用如下方式描述:
Structure是數(shù)據(jù)傳輸協(xié)議中的數(shù)據(jù)結(jié)構(gòu)塊,條件值指向的屬性為id,即結(jié)構(gòu)塊對應(yīng)的結(jié)構(gòu)號,根據(jù)該結(jié)構(gòu)號可以找到任何一個(gè)Structure結(jié)構(gòu)。數(shù)據(jù)傳輸協(xié)議中當(dāng)條件值為1時(shí),即id=“1”的結(jié)構(gòu)塊可用如下方式描述:
文中以國內(nèi)電能計(jì)量數(shù)據(jù)傳輸為例展開研究。目前在國內(nèi)數(shù)據(jù)采集終端的應(yīng)用上,除了國家電力部頒布的標(biāo)準(zhǔn)協(xié)議DL/T-645[10]規(guī)約系列外,《浙江省用電現(xiàn)場服務(wù)與管理系統(tǒng)通信規(guī)約》(以下簡稱《浙規(guī)》)和《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸協(xié)議—2004》(以下簡稱《國電規(guī)約》)最具有代表性,受到各電力局的認(rèn)可,變種非常多。尤其是《國電規(guī)約》,由國家電網(wǎng)公司的規(guī)模和性質(zhì)決定,很有可能成為事實(shí)上的國家標(biāo)準(zhǔn)[11],具有代表性的通信幀結(jié)構(gòu)以及與XML標(biāo)簽之間的映射關(guān)系,如表2所示。
表2 《國電規(guī)約》通信幀結(jié)構(gòu)及映射關(guān)系
《國電規(guī)約》通信幀由“幀起始符”、“長度”、“中間幀起始符”、“控制符”、“地址域”、“數(shù)據(jù)域”、“校驗(yàn)碼”、“結(jié)束碼”組成。而這些組成中,“幀起始符”、“長度”、“中間幀起始符”、“校驗(yàn)碼”、“結(jié)束碼”映射成順序(Sequence)結(jié)構(gòu);“控制符”、“地址域”和“數(shù)據(jù)域”映射成選擇(Choice)結(jié)構(gòu),其中控制符映射成Choice結(jié)構(gòu)的條件值(Condition),地址域和數(shù)據(jù)域是Choice結(jié)構(gòu)中的選擇結(jié)果。在Choice結(jié)構(gòu)中選擇結(jié)果由Structure索引號標(biāo)識,不同的索引號標(biāo)示不同的Structure結(jié)構(gòu),而該結(jié)構(gòu)所對應(yīng)的Element基本數(shù)據(jù)單元即為不同條件值所對應(yīng)的地址和數(shù)據(jù)。
結(jié)合電能表數(shù)據(jù)傳輸協(xié)議,將其中的順序、選擇等結(jié)構(gòu)化特征轉(zhuǎn)化成XML標(biāo)簽約束。電能表中的某一子協(xié)議用XML描述如下:
文中采用DOM4J作為XML文檔的解析工具[12],MINA為通訊承載服務(wù)器,在MINA框架下耦合DOM4J實(shí)現(xiàn)基于XML的數(shù)據(jù)傳輸協(xié)議的解析[13]。它應(yīng)用于Java平臺,而Java語言是一種具有簡單、跨平臺、面向?qū)ο蟮葍?yōu)點(diǎn)的語言,它的這些特性使它較適合作為XML編程語言。另外,XML和Java技術(shù)還有許多互補(bǔ)特性,兩者的結(jié)合將形成一個(gè)強(qiáng)大的數(shù)據(jù)共享和處理平臺。文中在XML文檔解析過程中,一方面采用面向?qū)ο蟮募夹g(shù)建立通訊協(xié)議結(jié)構(gòu)特征(標(biāo)簽)對應(yīng)的對象,對象包含了數(shù)據(jù)的解析方法;另一方面,在DOM4J解析過程中,根據(jù)標(biāo)簽的名稱構(gòu)建相應(yīng)的對象,對象的解析方法實(shí)現(xiàn)通訊協(xié)議中數(shù)據(jù)塊的解析。
4.1 基于XML的數(shù)據(jù)傳輸協(xié)議解析模型
依據(jù)通訊協(xié)議結(jié)構(gòu)特征(標(biāo)簽),采用面向?qū)ο蟮募夹g(shù)設(shè)計(jì)對應(yīng)的對象類,對象類包含了相應(yīng)數(shù)據(jù)的解析方法(見圖1)。通信協(xié)議中結(jié)構(gòu)之間的關(guān)系通過對象類的遞歸耦合實(shí)現(xiàn),如P_Structure,P_Sequence和P_element,分別對應(yīng)數(shù)據(jù)結(jié)構(gòu)中的Structure數(shù)據(jù)塊、Sequence順序結(jié)構(gòu)和element基本數(shù)據(jù)單元,類P_choice對應(yīng)數(shù)據(jù)結(jié)中的choice結(jié)構(gòu),它與類P_Sequence依賴。一幀數(shù)據(jù)解析完畢后將結(jié)果存入E_Value中,它與類StructureManage聚合。在應(yīng)用過程中,該模型通過DOM4J實(shí)現(xiàn)與MINA的結(jié)合,即在解析基于XML的數(shù)據(jù)傳輸協(xié)議文件的同時(shí),實(shí)現(xiàn)對象的構(gòu)建,并提供給MINA解析使用。
圖1 XML數(shù)據(jù)傳輸協(xié)議的解析模型
4.2 基于XML的數(shù)據(jù)傳輸協(xié)議解析過程
文中采用節(jié)點(diǎn)遞歸調(diào)用的解析方式。當(dāng)MINA通信程序收到請求后,通過接口將消息轉(zhuǎn)發(fā)給StructureManage類,該類通過id標(biāo)記Structure結(jié)構(gòu),將遍歷得到的值存入Hashtable表中。有三種類與StructureManage關(guān)聯(lián),最后將數(shù)據(jù)返回給MINA通信程序,XML文檔解析的邏輯模型如圖1所示。
XML解析程序集成在MINA通信程序中。通信程序運(yùn)行后,XML解析程序?qū)ML文檔讀入內(nèi)存,當(dāng)有數(shù)據(jù)傳來,解析程序調(diào)用類StructureManage接收一幀數(shù)據(jù),數(shù)據(jù)接收完畢后,首先判斷一幀數(shù)據(jù)是否完整,若不完整則重新接收數(shù)據(jù),完整則進(jìn)行解析。數(shù)據(jù)解析時(shí)首先調(diào)用Util工具類遍歷XML文檔,當(dāng)遍歷的標(biāo)簽分別為“Structure”、“Sequence”、“element”、“choice”時(shí)則分別調(diào)用“P_Structure”、“P_Sequence”、“P_element”、“P_choice”類進(jìn)行相應(yīng)的解析,最后將解析結(jié)果通過元素節(jié)點(diǎn)Evalue返回給類“StructureManage”,該類再通過接口將數(shù)據(jù)值傳送給MINA通信程序,通信程序?qū)ζ溥M(jìn)行后續(xù)處理。XML文檔的解析流圖如圖2所示。
圖2 XML數(shù)據(jù)傳輸協(xié)議解析流圖
當(dāng)數(shù)據(jù)傳輸協(xié)議改變時(shí),MINA通信程序不變,只需修改XML文件,即可實(shí)現(xiàn)對不同數(shù)據(jù)幀的解析和回應(yīng)。
在實(shí)驗(yàn)測試中,使用不同數(shù)據(jù)傳輸協(xié)議生成兩個(gè)配置文件XML1、XML2,它們的數(shù)據(jù)幀通信情況如圖3、4所示。
請求協(xié)議幀:
68001607010000150000050000000015012711420068000104ff00000002f211102001000001010201100001201016
通信程序回應(yīng)幀:
68001607010000150000050000000015012711420068000104FF00000001F211102001000001010201100001201016
圖3 XML1的通信結(jié)果
請求協(xié)議幀:68081234567890111234567890116801FF000000010102070116
通信程序回應(yīng)幀:6800081234567890111234567890116801FF000000010102070116
圖4 XML2的通信結(jié)果
通過測試結(jié)果可以看出,只要按照一定的XML格式對數(shù)據(jù)傳輸協(xié)議進(jìn)行描述,調(diào)用該解析程序,即可實(shí)現(xiàn)數(shù)據(jù)的交互與共享。該解析程序的通用性在國電規(guī)約數(shù)據(jù)傳輸協(xié)議和遠(yuǎn)程遙測項(xiàng)目中都得到了驗(yàn)證。
文中提出的基于XML結(jié)構(gòu)化方式來描述數(shù)據(jù)傳輸協(xié)議的方案,可以實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的通用解析。當(dāng)數(shù)據(jù)傳輸協(xié)議改變時(shí),不必修改解析程序,只需要修改配置文件XML,即可實(shí)現(xiàn)數(shù)據(jù)解析。這樣提高了通信程序的復(fù)用程度,加快了系統(tǒng)的整體開發(fā)速度,為企業(yè)業(yè)務(wù)應(yīng)用的創(chuàng)新提供了可能性。但是解析XML文檔時(shí)需要從上到下對每個(gè)節(jié)點(diǎn)進(jìn)行遍歷,增加了時(shí)間開銷,降低了程序的運(yùn)行效率,因此在如何提高效率這個(gè)問題上仍需要做進(jìn)一步的研究。
[1] 張 源,魏冬邦,康 昊.基于XML的測控軟件通信協(xié)議的研究[J].遙測遙控,2010(6):42-46.
[2] 譚文恕.傳輸協(xié)議現(xiàn)狀及國內(nèi)外相關(guān)標(biāo)準(zhǔn)[J].電力設(shè)備,2004,5(7):11-14.
[3] 陳德仙,鄭登峰,俞國勇,等.基于MODBUS協(xié)議的智能配電系統(tǒng)設(shè)計(jì)[J].江蘇電器,2007(4):25-28.
[4] 楊 洪.IEC60870-5傳輸規(guī)約的應(yīng)用及試驗(yàn)[J].電力自動(dòng)化設(shè)備,2007,27(11):75-78.
[5] 楊曉西.計(jì)量儀表和抄表系統(tǒng)的設(shè)計(jì)與IEC62056標(biāo)準(zhǔn)[J].電測與儀表,2005,42(11):37-41.
[6] 宋青山.JSON數(shù)據(jù)格式在企業(yè)數(shù)據(jù)交換中的應(yīng)用[J].天津冶金,2014(2):114-117.
[7] Lin B,Chen Y,Chen X,et al.Comparison between JSON and XML in applications based on AJAX[C]//Proc of international conference on computer science & service system.Nanjing:[s.n.],2012:1174-1177.
[8] 聶曉旭,于鳳芹,欽道理.可配置協(xié)議轉(zhuǎn)換方法的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015,25(4):80-84.
[9] 張富國.基于XML的通用數(shù)據(jù)交換平臺的設(shè)計(jì)及實(shí)現(xiàn)[J].科技廣場,2005,17(1):100-102.
[10] 劉昕鵬,羅英偉,汪小林,等.基于XML的WebGIS通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件學(xué)報(bào),2004,15(6):899-907.
[11] 王大宇.電能表及采集終端通信協(xié)議通用解析與生成算法研究[D].長沙:中南大學(xué),2008.
[12] 張屹峰.DOM4j解析技術(shù)探究[J].現(xiàn)代計(jì)算機(jī),2011(15):39-42.
[13] 蔚曉娟,冉 靜,李愛華,等.基于DOM的XML解析與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(4):86-88.
Research and Implementation of Remote Data Transmission Based on XML Protocol
ZHANG Na,JIAO Dong-lai,WU Zi-jie,YANG Hao
(College of Electronic Science and Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210009,China)
In the Internet of Things,remote data transmission protocol and the communication program is closely related.When the communication protocol is changed,the communication program is also to be written,so the reusability of communication program is reduced.In order to solve the problem,based on the XML structure,the transmission protocol of data description is proposed,based on which the analytic method is put forward.The unified data format of the scheme can adapt to the data exchange between heterogeneous systems by modifying the transmission protocol text file with no modification on the program.Finally,given the functional testing,the feasibility of this scheme is verified.
XML;remote data transmission protocol;analytical procedures;reusability
2015-06-06
2015-09-15
時(shí)間:2016-05-05
國家級面上項(xiàng)目(41471329)
張 娜(1989-),女,碩士研究生,研究方向?yàn)殡娐放c系統(tǒng);焦東來,碩士生導(dǎo)師,博士,研究方向?yàn)榭臻g信息可視化和數(shù)據(jù)共享與互操作。
http://www.cnki.net/kcms/detail/61.1450.TP.20160505.0815.030.html
TP31
A
1673-629X(2016)05-0012-05
10.3969/j.issn.1673-629X.2016.05.003