本發(fā)明屬于電力自動(dòng)化技術(shù)領(lǐng)域,涉及面向服務(wù)(soa)架構(gòu)體系的信息交互等雙方需要進(jìn)行復(fù)雜數(shù)據(jù)交換的信息交互場(chǎng)合,具體為一種數(shù)據(jù)流傳輸服務(wù)的方法及系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,電網(wǎng)的智能化水平和要求不斷提升,傳統(tǒng)的針對(duì)電力系統(tǒng)某些特定應(yīng)用所設(shè)計(jì)的通信協(xié)議和信息交互機(jī)制已不能滿(mǎn)足需要,需要不斷的為這些協(xié)議做出非標(biāo)準(zhǔn)的擴(kuò)充,導(dǎo)致系統(tǒng)不能互操作,采用面向服務(wù)(soa)架構(gòu)體系的信息交互機(jī)制已經(jīng)成為一個(gè)發(fā)展方向,為此我國(guó)發(fā)布了《電力系統(tǒng)簡(jiǎn)單服務(wù)接口規(guī)范》(dl/t1233)為這個(gè)發(fā)展奠定了基礎(chǔ),待發(fā)布的《電力系統(tǒng)通用服務(wù)協(xié)議》標(biāo)準(zhǔn)又為解決這個(gè)問(wèn)題提出了解決方案,但《電力系統(tǒng)通用服務(wù)協(xié)議》沒(méi)具體的通過(guò)數(shù)據(jù)流實(shí)現(xiàn)服務(wù)傳輸?shù)慕鉀Q方案。本發(fā)明在《電力系統(tǒng)通用服務(wù)協(xié)議》基礎(chǔ)上對(duì)如何通過(guò)數(shù)據(jù)流實(shí)現(xiàn)服務(wù)傳輸?shù)膯?wèn)題提出解決了方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種解決了《通用服務(wù)協(xié)議》標(biāo)準(zhǔn)沒(méi)有具體解決該標(biāo)準(zhǔn)中所提到通過(guò)數(shù)據(jù)流傳輸服務(wù)的問(wèn)題的數(shù)據(jù)流傳輸服務(wù)的方法及系統(tǒng)。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種數(shù)據(jù)流傳輸服務(wù)的方法,包括如下步驟,
s1、定義服務(wù)數(shù)據(jù)流的格式:sds類(lèi)型+sds對(duì)應(yīng)服務(wù)原語(yǔ)+sds參數(shù);
s2、依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流,即:首先,判斷需形成的服務(wù)數(shù)據(jù)流類(lèi)型;而后,獲取與服務(wù)數(shù)據(jù)流類(lèi)型相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);再而,根據(jù)需形成的服務(wù)數(shù)據(jù)流類(lèi)型對(duì)sds類(lèi)型進(jìn)行賦值;然后,將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;最后,依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ)中服務(wù)請(qǐng)求參數(shù)的類(lèi)型和順序,查詢(xún)服務(wù)參數(shù)編碼表,并依據(jù)所查到的編碼方法,將相應(yīng)的服務(wù)請(qǐng)求參數(shù)進(jìn)行編碼后寫(xiě)入sds參數(shù)中,形成服務(wù)數(shù)據(jù)流;
s3、接收端收到服務(wù)數(shù)據(jù)流,需將服務(wù)數(shù)據(jù)流解碼,以獲取服務(wù)參數(shù),即:首先,解析服務(wù)數(shù)據(jù)流首字節(jié),獲取服務(wù)數(shù)據(jù)流的sds類(lèi)型;而后,按string類(lèi)型格式解析服務(wù)數(shù)據(jù)流,獲取服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,進(jìn)而獲取服務(wù)請(qǐng)求服務(wù)原語(yǔ);最后,依據(jù)sds類(lèi)型、服務(wù)請(qǐng)求服務(wù)原語(yǔ)對(duì)服務(wù)數(shù)據(jù)流進(jìn)行解析,獲取相應(yīng)的服務(wù)參數(shù)。
在本發(fā)明一實(shí)施例中,所述服務(wù)參數(shù)編碼表包括基本參數(shù)類(lèi)型編碼表和組合參數(shù)類(lèi)型編碼表,其中,基本參數(shù)類(lèi)型編碼表由基本參數(shù)類(lèi)型、該基本參數(shù)類(lèi)型對(duì)應(yīng)的編碼方法以及占數(shù)據(jù)流的字節(jié)數(shù)構(gòu)成;組合參數(shù)類(lèi)型編碼表由組合參數(shù)類(lèi)型、該組合參數(shù)類(lèi)型對(duì)應(yīng)的編碼方法以及占數(shù)據(jù)流的字節(jié)數(shù)構(gòu)成。
在本發(fā)明一實(shí)施例中,所述sds類(lèi)型的長(zhǎng)度為一個(gè)字節(jié);sds對(duì)應(yīng)服務(wù)原語(yǔ)的長(zhǎng)度可變,其格式為string類(lèi)型;sds參數(shù)包含多段,段的個(gè)數(shù)由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中參數(shù)的個(gè)數(shù)確定,各個(gè)段的格式由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中各個(gè)參數(shù)的類(lèi)型確定。
在本發(fā)明一實(shí)施例中,所述sds類(lèi)型取值包括i、d、o,其中,i表示in參數(shù),為客戶(hù)端到服務(wù)端方向;o表示out參數(shù),為服務(wù)端到客戶(hù)端方向;d表示無(wú)in,out參數(shù)標(biāo)識(shí)的數(shù)據(jù)塊。
在本發(fā)明一實(shí)施例中,所述sds參數(shù)的段的個(gè)數(shù),通過(guò)如下方式?jīng)Q定:
若sds類(lèi)型取值為i時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為in的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為o時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為out的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為d時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中所有參數(shù)的個(gè)數(shù)。
在本發(fā)明一實(shí)施例中,所述步驟s2中,若客戶(hù)端向服務(wù)端發(fā)服務(wù)請(qǐng)求時(shí),即需形成服務(wù)請(qǐng)求數(shù)據(jù)流時(shí),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流的具體方式如下:
1)獲取服務(wù)請(qǐng)求數(shù)據(jù)流相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
2)將sds類(lèi)型賦值為i;
3)將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,按string類(lèi)型格式寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;
4)查詢(xún)服務(wù)參數(shù)編碼表,依次將服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為in的對(duì)應(yīng)參數(shù),寫(xiě)入sds參數(shù)中,直到所有標(biāo)識(shí)為in的參數(shù)全部寫(xiě)入sds參數(shù)中。
在本發(fā)明一實(shí)施例中,所述步驟s2中,若服務(wù)端向客戶(hù)端發(fā)服務(wù)響應(yīng)時(shí),即需形成服務(wù)響應(yīng)數(shù)據(jù)流時(shí),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流的具體方式如下:
1)獲取服務(wù)響應(yīng)數(shù)據(jù)流相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
2)將sds類(lèi)型賦值為o;
3)將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,按string類(lèi)型格式寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;
4)查詢(xún)服務(wù)參數(shù)編碼表,依次將服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為out的對(duì)應(yīng)參數(shù),寫(xiě)入sds參數(shù)中,直到所有標(biāo)識(shí)為out的參數(shù)全部寫(xiě)入sds參數(shù)中。
在本發(fā)明一實(shí)施例中,所述步驟s2中,若需形成復(fù)雜數(shù)據(jù)傳輸使用時(shí),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流的具體方式如下:
1)獲取服務(wù)響應(yīng)數(shù)據(jù)流相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
2)將sds類(lèi)型賦值為d;
3)將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,按string類(lèi)型格式寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;
4)查詢(xún)服務(wù)參數(shù)編碼表,依次將服務(wù)請(qǐng)求服務(wù)原語(yǔ)中參數(shù),寫(xiě)入sds參數(shù)中。
本發(fā)明還提供了一種數(shù)據(jù)流傳輸服務(wù)的系統(tǒng),包括:
服務(wù)數(shù)據(jù)流定義單元,用于定義服務(wù)數(shù)據(jù)流的格式,服務(wù)數(shù)據(jù)流的格式:sds類(lèi)型+sds對(duì)應(yīng)服務(wù)原語(yǔ)+sds參數(shù);
服務(wù)參數(shù)編碼單元,依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ)以及服務(wù)數(shù)據(jù)流定義單元所定義的服務(wù)數(shù)據(jù)流格式,將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流,具體即:首先,判斷需形成的服務(wù)數(shù)據(jù)流類(lèi)型;而后,獲取與服務(wù)數(shù)據(jù)流類(lèi)型相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);再而,根據(jù)需形成的服務(wù)數(shù)據(jù)流類(lèi)型對(duì)sds類(lèi)型進(jìn)行賦值;然后,將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;最后,查詢(xún)服務(wù)參數(shù)編碼表,依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ)、sds類(lèi)型將服務(wù)參數(shù)編碼表中對(duì)應(yīng)的參數(shù)寫(xiě)入sds參數(shù)中,形成服務(wù)數(shù)據(jù)流;
服務(wù)數(shù)據(jù)流解碼單元,將服務(wù)數(shù)據(jù)流解碼,以獲取服務(wù)參數(shù),具體即:首先,解析服務(wù)數(shù)據(jù)流首字節(jié),獲取服務(wù)數(shù)據(jù)流的sds類(lèi)型;而后,按string類(lèi)型格式解析服務(wù)數(shù)據(jù)流,獲取服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,進(jìn)而獲取服務(wù)請(qǐng)求服務(wù)原語(yǔ);最后,依據(jù)sds類(lèi)型、服務(wù)請(qǐng)求服務(wù)原語(yǔ)對(duì)服務(wù)數(shù)據(jù)流進(jìn)行解析,獲取相應(yīng)的服務(wù)參數(shù)。
在本發(fā)明一實(shí)施例中,所述sds類(lèi)型的長(zhǎng)度為一個(gè)字節(jié);sds對(duì)應(yīng)服務(wù)原語(yǔ)的長(zhǎng)度可變,其格式為string類(lèi)型;sds參數(shù)包含多段,段的個(gè)數(shù)由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中參數(shù)的個(gè)數(shù)確定,各個(gè)段的格式由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中各個(gè)參數(shù)的類(lèi)型確定。
在本發(fā)明一實(shí)施例中,所述sds類(lèi)型取值包括i、d、o,其中,i表示in參數(shù),為客戶(hù)端到服務(wù)端方向;o表示out參數(shù),為服務(wù)端到客戶(hù)端方向;d表示無(wú)in,out參數(shù)標(biāo)識(shí)的數(shù)據(jù)塊;所述sds參數(shù)的段的個(gè)數(shù),通過(guò)如下方式?jīng)Q定:
若sds類(lèi)型取值為i時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為in的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為o時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為out的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為d時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中所有參數(shù)的個(gè)數(shù)。
相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本發(fā)明為《電力系統(tǒng)通用服務(wù)協(xié)議》標(biāo)準(zhǔn)所描述的數(shù)據(jù)流交互方法發(fā)明了一種可具體實(shí)現(xiàn)方法,解決了該標(biāo)準(zhǔn)沒(méi)有具體解決該標(biāo)準(zhǔn)中所提到通過(guò)數(shù)據(jù)流傳輸服務(wù)的問(wèn)題;本發(fā)明還可解決需要進(jìn)行多項(xiàng)復(fù)雜數(shù)據(jù)進(jìn)行整體交互或表達(dá)問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明將服務(wù)描述原語(yǔ)到sds的轉(zhuǎn)換方法示意圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說(shuō)明。
如圖1所示,本發(fā)明的一種用于傳輸服務(wù)的數(shù)據(jù)流形成方法,包括如下步驟,
s1、定義服務(wù)數(shù)據(jù)流的格式:sds類(lèi)型+sds對(duì)應(yīng)服務(wù)原語(yǔ)+sds參數(shù),其中,sds類(lèi)型的長(zhǎng)度為一個(gè)字節(jié);sds對(duì)應(yīng)服務(wù)原語(yǔ)的長(zhǎng)度可變,其格式為string類(lèi)型;sds參數(shù)包含多段,段的個(gè)數(shù)由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中參數(shù)的個(gè)數(shù)確定,各個(gè)段的格式由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中各個(gè)參數(shù)的類(lèi)型確定。
s2、依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流,即:首先,判斷需形成的服務(wù)數(shù)據(jù)流類(lèi)型;而后,獲取與服務(wù)數(shù)據(jù)流類(lèi)型相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ)(服務(wù)請(qǐng)求服務(wù)原語(yǔ)存儲(chǔ)于服務(wù)管理中心,發(fā)送端、接收端均可通過(guò)服務(wù)管理中心調(diào)取相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ));再而,根據(jù)需形成的服務(wù)數(shù)據(jù)流類(lèi)型對(duì)sds類(lèi)型進(jìn)行賦值;然后,將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;最后,依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ)中服務(wù)請(qǐng)求參數(shù)的類(lèi)型和順序,查詢(xún)服務(wù)參數(shù)編碼表,并依據(jù)所查到的編碼方法,將相應(yīng)的服務(wù)請(qǐng)求參數(shù)進(jìn)行編碼后寫(xiě)入sds參數(shù)中,形成服務(wù)數(shù)據(jù)流;
s3、接收端收到服務(wù)數(shù)據(jù)流,需將服務(wù)數(shù)據(jù)流解碼,以獲取服務(wù)參數(shù),即:首先,解析服務(wù)數(shù)據(jù)流首字節(jié),獲取服務(wù)數(shù)據(jù)流的sds類(lèi)型;而后,按string類(lèi)型格式解析服務(wù)數(shù)據(jù)流,獲取服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,進(jìn)而獲取服務(wù)請(qǐng)求服務(wù)原語(yǔ);最后,依據(jù)sds類(lèi)型、服務(wù)請(qǐng)求服務(wù)原語(yǔ)對(duì)服務(wù)數(shù)據(jù)流進(jìn)行解析,獲取相應(yīng)的服務(wù)參數(shù)。
上述過(guò)程中,在通信雙方采用預(yù)先約定傳輸類(lèi)型和服務(wù)請(qǐng)求服務(wù)原語(yǔ)的情況下,數(shù)據(jù)流可以簡(jiǎn)化掉“sds類(lèi)型+sds對(duì)應(yīng)服務(wù)原語(yǔ)”部分,采用純“sds參數(shù)”形式傳輸服務(wù);即相當(dāng)于認(rèn)為“sds類(lèi)型+sds對(duì)應(yīng)服務(wù)原語(yǔ)”為已知;
在本發(fā)明一實(shí)施例中,所述服務(wù)參數(shù)編碼表包括基本參數(shù)類(lèi)型編碼表和組合參數(shù)類(lèi)型編碼表,其中,基本參數(shù)類(lèi)型編碼表由基本參數(shù)類(lèi)型、該基本參數(shù)類(lèi)型對(duì)應(yīng)的編碼方法以及占數(shù)據(jù)流的字節(jié)數(shù)構(gòu)成;組合參數(shù)類(lèi)型編碼表由組合參數(shù)類(lèi)型、該組合參數(shù)類(lèi)型對(duì)應(yīng)的編碼方法以及占數(shù)據(jù)流的字節(jié)數(shù)構(gòu)成;組合參數(shù)類(lèi)型即不屬于基本參數(shù)類(lèi)型的參數(shù)類(lèi)型(具體的表例可參見(jiàn)表2、表3,其中,表2即基本參數(shù)類(lèi)型編碼表,表3即組合參數(shù)類(lèi)型編碼表)。
所述sds類(lèi)型取值包括i、d、o,其中,i表示in參數(shù),為客戶(hù)端到服務(wù)端方向;o表示out參數(shù),為服務(wù)端到客戶(hù)端方向;d表示無(wú)in,out參數(shù)標(biāo)識(shí)的數(shù)據(jù)塊;所述sds參數(shù)的段的個(gè)數(shù),通過(guò)如下方式?jīng)Q定:
若sds類(lèi)型取值為i時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為in的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為o時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為out的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為d時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中所有參數(shù)的個(gè)數(shù)。
所述步驟s2中,若客戶(hù)端向服務(wù)端發(fā)服務(wù)請(qǐng)求時(shí),即需形成服務(wù)請(qǐng)求數(shù)據(jù)流時(shí),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流的具體方式如下:
1)獲取服務(wù)請(qǐng)求數(shù)據(jù)流相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
2)將sds類(lèi)型賦值為i;
3)將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,按string類(lèi)型格式寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;
4)依次將服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為in的對(duì)應(yīng)參數(shù),寫(xiě)入sds參數(shù)中,直到所有標(biāo)識(shí)為in的參數(shù)全部寫(xiě)入sds參數(shù)中。
所述步驟s2中,若服務(wù)端向客戶(hù)端發(fā)服務(wù)響應(yīng)時(shí),即需形成服務(wù)響應(yīng)數(shù)據(jù)流時(shí),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流的具體方式如下:
1)獲取服務(wù)響應(yīng)數(shù)據(jù)流相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
2)將sds類(lèi)型賦值為o;
3)將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,按string類(lèi)型格式寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;
4)依次將服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為out的對(duì)應(yīng)參數(shù),寫(xiě)入sds參數(shù)中,直到所有標(biāo)識(shí)為out的參數(shù)全部寫(xiě)入sds參數(shù)中。
所述步驟s2中,若需形成復(fù)雜數(shù)據(jù)傳輸使用時(shí),將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流的具體方式如下:
1)獲取服務(wù)響應(yīng)數(shù)據(jù)流相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
2)將sds類(lèi)型賦值為d;
3)將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名,按string類(lèi)型格式寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;
4)依次將服務(wù)請(qǐng)求服務(wù)原語(yǔ)中參數(shù),寫(xiě)入sds參數(shù)中。
本發(fā)明還提供了一種數(shù)據(jù)流傳輸服務(wù)的系統(tǒng),包括:
服務(wù)數(shù)據(jù)流定義單元,用于定義服務(wù)數(shù)據(jù)流的格式,服務(wù)數(shù)據(jù)流的格式:sds類(lèi)型+sds對(duì)應(yīng)服務(wù)原語(yǔ)+sds參數(shù);
服務(wù)參數(shù)編碼單元,依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ)以及服務(wù)數(shù)據(jù)流定義單元所定義的服務(wù)數(shù)據(jù)流格式,將服務(wù)參數(shù)編碼成服務(wù)數(shù)據(jù)流,具體即:首先,判斷需形成的服務(wù)數(shù)據(jù)流類(lèi)型;而后,獲取與服務(wù)數(shù)據(jù)流類(lèi)型相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);再而,根據(jù)需形成的服務(wù)數(shù)據(jù)流類(lèi)型對(duì)sds類(lèi)型進(jìn)行賦值;然后,將服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名寫(xiě)入sds對(duì)應(yīng)服務(wù)原語(yǔ)中;最后,查詢(xún)服務(wù)參數(shù)編碼表,依據(jù)服務(wù)請(qǐng)求服務(wù)原語(yǔ)、sds類(lèi)型將服務(wù)參數(shù)編碼表中對(duì)應(yīng)的參數(shù)寫(xiě)入sds參數(shù)中,形成服務(wù)數(shù)據(jù)流;
服務(wù)數(shù)據(jù)流解碼單元,將服務(wù)數(shù)據(jù)流解碼,以獲取服務(wù)參數(shù),具體即:首先,解析服務(wù)數(shù)據(jù)流首字節(jié),獲取服務(wù)數(shù)據(jù)流的sds類(lèi)型;而后,按string類(lèi)型格式解析服務(wù)數(shù)據(jù)流,獲取服務(wù)請(qǐng)求服務(wù)原語(yǔ)的服務(wù)名;最后,依據(jù)sds類(lèi)型賦值對(duì)服務(wù)數(shù)據(jù)流進(jìn)行解析,獲取相應(yīng)的參數(shù)。
所述sds類(lèi)型的長(zhǎng)度為一個(gè)字節(jié);sds對(duì)應(yīng)服務(wù)原語(yǔ)的長(zhǎng)度可變,其格式為string類(lèi)型;sds參數(shù)包含多段,段的個(gè)數(shù)由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中參數(shù)的個(gè)數(shù)確定,各個(gè)段的格式由服務(wù)請(qǐng)求服務(wù)原語(yǔ)中各個(gè)參數(shù)的類(lèi)型確定。
所述sds類(lèi)型取值包括i、d、o,其中,i表示in參數(shù),為客戶(hù)端到服務(wù)端方向;o表示out參數(shù),為服務(wù)端到客戶(hù)端方向;d表示無(wú)in,out參數(shù)標(biāo)識(shí)的數(shù)據(jù)塊;所述sds參數(shù)的段的個(gè)數(shù),通過(guò)如下方式?jīng)Q定:
若sds類(lèi)型取值為i時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為in的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為o時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中標(biāo)識(shí)為out的參數(shù)的個(gè)數(shù);
若sds類(lèi)型取值為d時(shí),sds參數(shù)的段的個(gè)數(shù)為服務(wù)請(qǐng)求服務(wù)原語(yǔ)中所有參數(shù)的個(gè)數(shù)。
以下對(duì)本發(fā)明的方案進(jìn)行詳細(xì)描述。
本發(fā)明提出了把dl/t1233(《電力系統(tǒng)簡(jiǎn)單服務(wù)接口規(guī)范》)(簡(jiǎn)稱(chēng):s語(yǔ)言)描述的抽象服務(wù)接口原語(yǔ),轉(zhuǎn)換到數(shù)據(jù)流的方法。發(fā)明內(nèi)容包括服務(wù)的數(shù)據(jù)流(servicedatastream,簡(jiǎn)稱(chēng)sds)格式和依據(jù)服務(wù)s語(yǔ)言原語(yǔ),把參數(shù)編碼形成sds的方法。解決了《電力系統(tǒng)通用服務(wù)協(xié)議》沒(méi)有具體解決該標(biāo)準(zhǔn)中所提到通過(guò)數(shù)據(jù)流傳輸服務(wù)的問(wèn)題。
1)服務(wù)數(shù)據(jù)流(sds)格式
sds格式如表1所示,具體說(shuō)明如下:
(1)sds類(lèi)型:s段,長(zhǎng)度一個(gè)字節(jié)ascii碼,含義如下:
a)s=“i”:表示in參數(shù),為客戶(hù)端到服務(wù)端方向;
b)s=“o”:表示out參數(shù),為服務(wù)端到客戶(hù)端方向;
c)s=“d”:表示無(wú)in,out參數(shù)標(biāo)識(shí)的數(shù)據(jù)塊;
d)s還可為其它值,以留擴(kuò)展使用。
(2)sds對(duì)應(yīng)服務(wù)原語(yǔ):servicename段,可變長(zhǎng)度,其格式同string類(lèi)型參數(shù);
(3)sds參數(shù):par-1到par-n段,段的個(gè)數(shù)和每個(gè)段的格式,取決于相應(yīng)的s語(yǔ)言描述的參數(shù)個(gè)數(shù)和類(lèi)型:
a)s=i時(shí),參數(shù)段的個(gè)數(shù)為服務(wù)描述中標(biāo)識(shí)為in的參數(shù)個(gè)數(shù);
b)s=o時(shí),參數(shù)段的個(gè)數(shù)為服務(wù)描述中標(biāo)識(shí)為out的參數(shù)個(gè)數(shù);
c)s=d時(shí),參數(shù)段的個(gè)數(shù)為服務(wù)描述中所有參數(shù)的個(gè)數(shù);
2)依據(jù)服務(wù)描述原語(yǔ),把服務(wù)參數(shù)編碼形成sds的方法
(圖1)為依據(jù)服務(wù)描述原語(yǔ)形成sds的轉(zhuǎn)換方法示意圖,方法如下:
a、當(dāng)客戶(hù)端向服務(wù)端發(fā)服務(wù)請(qǐng)求時(shí)需形成服務(wù)請(qǐng)求數(shù)據(jù)流,編碼方法如下:
(1)獲取相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
(2)把數(shù)據(jù)流類(lèi)型s賦予(數(shù)據(jù)流頭字節(jié))為“i”(圖1中①);
(3)把服務(wù)請(qǐng)求原語(yǔ)的服務(wù)名,按(表2)string類(lèi)型格式編入數(shù)據(jù)流(圖1中②);
(4)依次把服務(wù)原語(yǔ)中標(biāo)識(shí)為in的對(duì)應(yīng)參數(shù),依照(表2)和(表3)的編碼格式編入數(shù)據(jù)流,直到所有標(biāo)識(shí)為in的參數(shù)全部編入數(shù)據(jù)流(圖1中③);
上述(1)-(3)形成的數(shù)據(jù)流即為服務(wù)請(qǐng)求數(shù)據(jù)流。
b、當(dāng)服務(wù)端向客戶(hù)端發(fā)服務(wù)響應(yīng)時(shí)需形成服務(wù)響應(yīng)數(shù)據(jù)流,編碼方法如下:
(1)獲取相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
(2)把數(shù)據(jù)流類(lèi)型s賦予(數(shù)據(jù)流頭字節(jié))為“o”(圖1中④);
(3)把服務(wù)請(qǐng)求原語(yǔ)的服務(wù)名,按(表2)string類(lèi)型格式編入數(shù)據(jù)流(圖1中⑤);
(4)依次把服務(wù)原語(yǔ)中標(biāo)識(shí)為out的對(duì)應(yīng)參數(shù),依照(表2)和(表3)的編碼格式編入數(shù)據(jù)流,直到所有標(biāo)識(shí)為out的參數(shù)全部編入數(shù)據(jù)流(圖1中⑥);
上述(1)-(3)形成的數(shù)據(jù)流即為服務(wù)響應(yīng)數(shù)據(jù)流。
c、當(dāng)數(shù)據(jù)流作為復(fù)雜數(shù)據(jù)傳輸使用時(shí),編碼方法類(lèi)似,只是數(shù)據(jù)流類(lèi)型為“d”,編碼時(shí)不判斷in或out標(biāo)識(shí)(通常原語(yǔ)中無(wú)in,和out)。
3)依據(jù)服務(wù)描述原語(yǔ),對(duì)sds解碼,獲取參數(shù)的方法
接收端收到數(shù)據(jù)流后,從數(shù)據(jù)流獲取參數(shù)的解碼過(guò)程如下:
(1)解析數(shù)據(jù)流首字節(jié),獲得數(shù)據(jù)流類(lèi)型;
(2)按string類(lèi)型格式解析數(shù)據(jù)流,獲取服務(wù)原語(yǔ)名;
(3)獲取相應(yīng)的服務(wù)請(qǐng)求服務(wù)原語(yǔ);
(4)依據(jù)數(shù)據(jù)流類(lèi)型,按照服務(wù)原語(yǔ)中相應(yīng)的標(biāo)識(shí)(“i”對(duì)應(yīng)in參數(shù),“o”對(duì)應(yīng)out參數(shù))參數(shù)類(lèi)型和順序?qū)?shù)據(jù)流進(jìn)行解析,獲取相應(yīng)的參數(shù)。
4)參數(shù)段的數(shù)據(jù)格式
參數(shù)段的數(shù)據(jù)格式也就是每個(gè)參數(shù)的編碼格式,以編碼庫(kù)方式進(jìn)行描述。編碼庫(kù)包含所有s描述的服務(wù)參數(shù)的編碼方法,從類(lèi)型上分為基本參數(shù)類(lèi)型和特殊(組合)參數(shù)類(lèi)型。
a)基本參數(shù)類(lèi)型
需支持的基本參數(shù)類(lèi)型、對(duì)應(yīng)的編碼方法以及占數(shù)據(jù)流的字節(jié)數(shù)如(表2)(參考gsp基本數(shù)據(jù)類(lèi)型定義,可根據(jù)需要擴(kuò)充):
b)特殊(組合)參數(shù)類(lèi)型
支持的特殊(組合)參數(shù)類(lèi)型、對(duì)應(yīng)的編碼方法以及占數(shù)據(jù)流的字節(jié)數(shù)如(表3)(可根據(jù)需要擴(kuò)充):
5)s語(yǔ)言的擴(kuò)充
s語(yǔ)言(dlt1233只能描述簡(jiǎn)單參數(shù)描述,無(wú)法滿(mǎn)足描述特殊(組合)參數(shù)類(lèi)型的需要,擴(kuò)充如下:
1、用in表示服務(wù)請(qǐng)求輸入?yún)?shù)(客戶(hù)端到服務(wù)端方向的參數(shù));
2、用out表示服務(wù)響應(yīng)返回參數(shù)(服務(wù)端到客戶(hù)端方向的參數(shù));
3、增加特殊參數(shù)類(lèi)型;
4、結(jié)構(gòu)數(shù)據(jù)類(lèi)型;
5、增加數(shù)組及結(jié)構(gòu)數(shù)組參數(shù)。
示例1:帶特殊參數(shù)類(lèi)型的服務(wù)原語(yǔ)
<getsubstationchiedscdfile(//服務(wù)名
instring:iedname,//ied名稱(chēng)
outstring:filename,//文件名
outfiledata:filedate,//ied的scd文件內(nèi)容,特殊參數(shù)類(lèi)型
)"獲取變化ied的scd文件"/>
示例2:帶擴(kuò)充結(jié)構(gòu)數(shù)組的服務(wù)原語(yǔ)
<getsubstationiedlist(//服務(wù)名
instring:substationname,//變電站名稱(chēng)
outint16:iednumber,//ied數(shù)量
outstructiedlist{string:iedname,string:ieddesc}[],//ied清單,結(jié)構(gòu)數(shù)組
)"獲取ied清單"/>
示例3:作為復(fù)雜數(shù)據(jù)表達(dá)使用的原語(yǔ)
<authpara(//身份認(rèn)證參數(shù)
stringidentity,//身份標(biāo)識(shí)
int8usigntype,//簽名類(lèi)型
timecurrenttime,//當(dāng)前時(shí)間
stringsignvalue,//簽名值
)"認(rèn)證參數(shù)"/>。
本發(fā)明的技術(shù)方案具體應(yīng)用如下:
(1)結(jié)合《通用服務(wù)協(xié)議》實(shí)現(xiàn)面向服務(wù)架構(gòu)下的應(yīng)用服務(wù)傳輸;
(2)用于加密和安全認(rèn)證,通過(guò)sds,把多項(xiàng)數(shù)據(jù)或參數(shù),編碼成一個(gè)數(shù)據(jù)流,以實(shí)現(xiàn)一次性對(duì)多項(xiàng)數(shù)據(jù)進(jìn)行加密和數(shù)字簽名;
(3)作為一種信息幀格式,嵌入已有應(yīng)用通信協(xié)議,以實(shí)現(xiàn)傳輸協(xié)議規(guī)定外的數(shù)據(jù)傳輸,如把sds嵌入dl/t634.5104、dl/t476通信協(xié)議。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。