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