專利名稱:數(shù)據(jù)傳輸系統(tǒng)及其傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)通信領(lǐng)域,具體地說,涉及一種利用數(shù)據(jù)壓縮算法減少Soap協(xié)議占用的網(wǎng)絡(luò)帶寬的方法。
背景技術(shù):
在目前的計(jì)算機(jī)通信領(lǐng)域中,為了滿足異構(gòu)設(shè)備之間通信的需要,使得WebService協(xié)議得到了越來越多的應(yīng)用。WebService接口中數(shù)據(jù)的封裝協(xié)議是Soap協(xié)議,通常采用Http協(xié)議進(jìn)行傳輸。WebService、Soap和XML之間的關(guān)系如圖1所示。Soap協(xié)議使用XML語句描述數(shù)據(jù)內(nèi)容,具有簡單易讀的優(yōu)點(diǎn),但是數(shù)據(jù)冗余量較大,有大量的描述字符。
現(xiàn)在通過無線網(wǎng)絡(luò)上網(wǎng),進(jìn)行數(shù)據(jù)通信的需求越來越大。用戶使用無線上網(wǎng)獲取信息是通信發(fā)展的大趨勢。用戶無線上網(wǎng),使用的還是和普通電腦上網(wǎng)一樣的通信協(xié)議,所有的數(shù)據(jù)都是承載在IP協(xié)議上的,只是用戶接入的方式采用的是無線方式而已。
如果要使用無線上網(wǎng),那么Soap協(xié)議就會(huì)被越來越多的使用到。但是無線這種接入方式就使網(wǎng)絡(luò)帶寬十分有限和寶貴,滿足不了用戶的需求,限制了無線上網(wǎng)業(yè)務(wù)的開展。所以在使用Soap協(xié)議通信的時(shí)候,XML語句信息冗余量大的缺點(diǎn)就會(huì)十分明顯。
為了解決這個(gè)矛盾,現(xiàn)在很多研究者提出了自己的方法。但都是采用一些復(fù)雜的算法對(duì)數(shù)據(jù)流進(jìn)行編碼壓縮,壓縮的方式都還是在不破壞數(shù)據(jù)的編碼格式(UTF8、gb2312等)的基礎(chǔ)上對(duì)字符串進(jìn)行重新組合,優(yōu)化。這種方式類似于huffman編碼的方式。讀取和操縱XML數(shù)據(jù)流的標(biāo)準(zhǔn)方法還是DOM(文檔對(duì)象模型)方式和SAX(Simple API for XML)方式。研究者們提出的方法都是對(duì)DOM或者SAX方式進(jìn)行修改并應(yīng)用,可以直接對(duì)數(shù)據(jù)流進(jìn)行解析。缺點(diǎn)是實(shí)現(xiàn)困難,因?yàn)闆]有現(xiàn)成的實(shí)現(xiàn)代碼可以用,而且更重要的是壓縮率很低,不能從根本上解決帶寬的占用問題。
另外,隨著CPU計(jì)算能力的提高,現(xiàn)在手機(jī)終端的運(yùn)算能力越來越強(qiáng)。這就使得手機(jī)終端完成一些運(yùn)算量大但是十分通用的算法成為可能。
發(fā)明內(nèi)容
考慮到上述問題而做出本發(fā)明,為此,本發(fā)明的目的在于提供數(shù)據(jù)傳輸系統(tǒng)及其傳輸方法。
根據(jù)本發(fā)明數(shù)據(jù)傳輸系統(tǒng),包括數(shù)據(jù)發(fā)送裝置,用于將Soap消息中的XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收裝置;數(shù)據(jù)接收裝置,用于在接收到Soap消息后,提取Soap消息的附件,并對(duì)附件進(jìn)行解壓以得到XML部分。
數(shù)據(jù)發(fā)送裝置包括數(shù)據(jù)壓縮模塊,用于將Soap消息中的XML部分進(jìn)行壓縮得到二進(jìn)制數(shù)據(jù);第一數(shù)據(jù)重組模塊,用于將壓縮得到的二進(jìn)制數(shù)據(jù)作為附件重組到Soap消息中并將Soap消息發(fā)送至數(shù)據(jù)接收裝置,其中,數(shù)據(jù)壓縮模塊通過內(nèi)容類型字段的屬性值標(biāo)識(shí)壓縮方法。
數(shù)據(jù)接收裝置包括第二數(shù)據(jù)重組模塊,用于提取接收到的Soap消息中的二進(jìn)制數(shù)據(jù)和內(nèi)容類型字段的屬性值;以及數(shù)據(jù)解壓模塊,用于根據(jù)屬性值對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行解壓縮。
此外,上述屬性值為以下之一對(duì)應(yīng)于lzw算法的lzw數(shù)據(jù)、對(duì)應(yīng)于lz78算法的lz78數(shù)據(jù)、對(duì)應(yīng)于lz77算法的lz77數(shù)據(jù)。同時(shí)屬性值為以下之一lzw數(shù)據(jù)/XML、lz78數(shù)據(jù)/XML、lz77數(shù)據(jù)/XML。
根據(jù)本發(fā)明的數(shù)據(jù)傳輸方法,包括以下步驟步驟S302,數(shù)據(jù)發(fā)送端將Soap消息中得XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收端;步驟S304,數(shù)據(jù)接收端在接收到Soap消息后,提取Soap消息的附件,并對(duì)附件進(jìn)行解壓以得到XML部分。
其中,步驟S302包括步驟S302-2,數(shù)據(jù)發(fā)送端將Soap消息中的XML部分進(jìn)行壓縮得到二進(jìn)制數(shù)據(jù);步驟S302-4,將壓縮得到的二進(jìn)制數(shù)據(jù)作為附件重組到Soap消息中并將Soap消息發(fā)送至數(shù)據(jù)接收端,其中,數(shù)據(jù)壓縮模塊通過內(nèi)容類型字段的屬性值標(biāo)識(shí)壓縮方法。
其中,步驟S304包括步驟S304-2,所述數(shù)據(jù)接收端提取接收到的Soap消息中的二進(jìn)制數(shù)據(jù)和所述內(nèi)容類型字段的屬性值;以及步驟S304-4,根據(jù)屬性值對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行解壓縮。
上述屬性值為以下之一對(duì)應(yīng)于lzw算法的lzw數(shù)據(jù)、對(duì)應(yīng)于lz78算法的lz78數(shù)據(jù)、對(duì)應(yīng)于lz77算法的lz77數(shù)據(jù)。同時(shí),屬性值為以下之一lzw數(shù)據(jù)/XML、lz78數(shù)據(jù)/XML、lz77數(shù)據(jù)/XML。
通過本發(fā)明的上述方面,算法(lzw、lz77、lz78)的實(shí)現(xiàn)代碼都是現(xiàn)成的,實(shí)現(xiàn)起來方便;壓縮率特別大,相比較現(xiàn)在各個(gè)研究者提出的同類壓縮算法,這種實(shí)現(xiàn)方式的壓縮效果是最好的;擴(kuò)展性強(qiáng),以后出現(xiàn)了新的數(shù)據(jù)壓縮算法都可以直接應(yīng)用。
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖1是示出了現(xiàn)有技術(shù)的WebService、Soap和XML之間的關(guān)系圖;圖2是示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)圖;圖3是示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)傳輸方法的流程圖;具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
在本實(shí)施例中,圖2是示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)圖。如圖2所示,數(shù)據(jù)傳輸系統(tǒng)包括數(shù)據(jù)發(fā)送裝置202,用于將Soap消息中得XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收裝置;數(shù)據(jù)接收裝置204,用于在接收到Soap消息后,提取Soap消息的附件,并對(duì)附件進(jìn)行解壓以得到XML部分。
數(shù)據(jù)發(fā)送裝置202包括數(shù)據(jù)壓縮模塊202-2,用于將Soap消息中的XML部分進(jìn)行壓縮得到二進(jìn)制數(shù)據(jù),它采用的算法是傳統(tǒng)的壓縮算法,如LZ77、LZ78、LZW等,數(shù)據(jù)壓縮模塊將Soap消息中的xml部分進(jìn)行壓縮,得到一系列的二進(jìn)制數(shù)據(jù);第一數(shù)據(jù)重組模塊202-4,用于將壓縮得到的二進(jìn)制數(shù)據(jù)作為附件重組到Soap消息中并將Soap消息發(fā)送至數(shù)據(jù)接收裝置。
數(shù)據(jù)接收裝置204包括第二數(shù)據(jù)重組模塊204-2,用于提取接收到的Soap消息中的二進(jìn)制數(shù)據(jù)和內(nèi)容類型字段的屬性值,重組模塊將附件中的二進(jìn)制數(shù)據(jù)提取出來。然后使用數(shù)據(jù)解壓模塊,使用Content-Type字段標(biāo)識(shí)的壓縮算法對(duì)數(shù)據(jù)塊進(jìn)行解壓,得到原始的xml格式的數(shù)據(jù);以及數(shù)據(jù)解壓模塊204-4,用于根據(jù)屬性值對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行解壓縮,它采用和發(fā)端相同的算法。
這種處理方式類似于Http傳送文件數(shù)據(jù)(比如網(wǎng)頁的圖片等)的方式。打包時(shí),發(fā)送端通過Content-Type字段的屬性值,標(biāo)示壓縮方法。這里需要說明的是消息重組模塊擴(kuò)展了Content-Type字段的屬性值,添加了如下屬性lzwdata、lz78data、lz77data,分別對(duì)應(yīng)lzw算法、lz78算法和lz77算法。其中,數(shù)據(jù)壓縮模塊通過內(nèi)容類型字段的屬性值標(biāo)識(shí)壓縮方法。
在本實(shí)施例中,圖3是示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)傳輸方法的流程圖。如圖3所示,數(shù)據(jù)傳輸方法包括以下步驟步驟S302,數(shù)據(jù)發(fā)送端將Soap消息中得XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收端;步驟S304,數(shù)據(jù)接收端在接收到Soap消息后,提取Soap消息的附件,并對(duì)附件進(jìn)行解壓以得到XML部分。
在該傳輸方法中,其中,步驟S302包括步驟S302-2,數(shù)據(jù)發(fā)送端將Soap消息中的XML部分進(jìn)行壓縮得到二進(jìn)制數(shù)據(jù);步驟S302-4,將壓縮得到的二進(jìn)制數(shù)據(jù)作為附件重組到Soap消息中并將Soap消息發(fā)送至數(shù)據(jù)接收端,其中,數(shù)據(jù)壓縮模塊通過內(nèi)容類型字段的屬性值標(biāo)識(shí)壓縮方法。
其中,步驟S304包括步驟S304-2,數(shù)據(jù)接收端提取接收到的Soap消息中的二進(jìn)制數(shù)據(jù)和所述內(nèi)容類型字段的屬性值;以及步驟S304-4,根據(jù)屬性值對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行解壓縮。
在該方法中,上述屬性值為以下之一對(duì)應(yīng)于lzw算法的lzw數(shù)據(jù)、對(duì)應(yīng)于lz78算法的lz78數(shù)據(jù)、對(duì)應(yīng)于lz77算法的lz77數(shù)據(jù)。
舉例如下現(xiàn)有一個(gè)未壓縮的Soap響應(yīng)包如下HTTP/1.1 200 okServerApache/1.3.29(Unix)ConnectioncloseContent-Typetext/xmlcontent-length815<?xml version=″1.0″e(cuò)ncoding=″UTF-8″?><SOAP-ENVEnvelopexmlnsxsi=″http//www.w3.org/2001/XMLSchema-instanee″xmlnsxsd=http//www.w3.org/2001/XMLSchemaxmlnsSOAP-ENV=″http//schemas.xmlsoap.org/soap/envelope/″xmlnsSOAP-ENC=″http//schemas.xmlsoap.org/soap/encoding/″><SOAP-ENVHeader>
<TransactionIDxmlns=″http//www.monternet.com/dsmp/schemas/″>9571000000000002</TransactionID>
</SOAP-ENVHeader>
<SOAP-ENVBody>
<AuthPriceResp xmlns=″http//10.1.2.122/misc/dsmp.xsd″>
<Version>1.5.0</Version>
</AuthPriceResp>
</SOAP-ENVBody>
</SOAP-ENVEnvelope>
其中粗體部分是需要傳送的XML數(shù)據(jù),數(shù)據(jù)塊大小有大約570個(gè)字節(jié)。對(duì)這些數(shù)據(jù)使用LZW算法進(jìn)行壓縮后,得到新的數(shù)據(jù)塊。新數(shù)據(jù)塊使用二進(jìn)制表示就是0x52 0x61 0x72 0x21……0x7B 0x000x40 0x07 0x00,有250個(gè)字節(jié),壓縮到了原來的44%。
使用Http對(duì)這個(gè)數(shù)據(jù)塊進(jìn)行傳送,得到新的數(shù)據(jù)包如下HTTP/1.1 200 okServerApache/1.3.29(Unix)ConnectioncloseContent-Typelzwdata/xmlcontent-length495--MIME_boundaryContent-TypesoapdataContent-ID
0x52 0x61 0x72 0x21……0x7B 0x00 0x40 0x07 0x00--MIME_boundary--上面數(shù)據(jù)包中的粗體部分,1,Content-Type的描述修改為lzwdata/xml,表示下面的數(shù)據(jù)使用了lzw算法進(jìn)行了壓縮,解壓后的格式為xml語句;2,加粗的數(shù)字部分就是壓縮后的二進(jìn)制數(shù)據(jù)。--MIME_boundary表示數(shù)據(jù)是Soap消息的附件部分。
接收端接收到數(shù)據(jù)后,根據(jù)Content-Type的描述,使用lzw算法對(duì)后面的二進(jìn)制數(shù)據(jù)進(jìn)行解壓得到正常UTF-8格式的xml數(shù)據(jù)。再使用SAX或者DOM方法進(jìn)行解析就可以得到自己所需要的數(shù)據(jù)了。
如果出現(xiàn)一個(gè)請求或者響應(yīng)被Http協(xié)議拆包的情況,則可以分別對(duì)每一個(gè)包中的數(shù)據(jù)進(jìn)行壓縮。根據(jù)現(xiàn)在常用的壓縮算法,Content-Type的屬性值可以擴(kuò)展為lzwdata/xml、lz77data/xml、lz78data/xml等。
綜上所述,本發(fā)明算法(lzw、lz77、lz78)的實(shí)現(xiàn)代碼都是現(xiàn)成的,實(shí)現(xiàn)起來方便;壓縮率特別大,相比較現(xiàn)在各個(gè)研究者提出的同類壓縮算法,這種實(shí)現(xiàn)方式的壓縮效果是最好的,從例子就可以看出,xml數(shù)據(jù)壓縮到了原來的44%,整個(gè)包減少了320個(gè)字節(jié);擴(kuò)展性強(qiáng),以后出現(xiàn)了新的數(shù)據(jù)壓縮算法都可以直接應(yīng)用。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)傳輸系統(tǒng),其特征在于包括數(shù)據(jù)發(fā)送裝置,用于將Soap消息中得XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到所述Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收裝置;所述數(shù)據(jù)接收裝置,用于在接收到所述Soap消息后,提取所述Soap消息的附件,并對(duì)所述附件進(jìn)行解壓以得到所述XML部分。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述數(shù)據(jù)發(fā)送裝置包括數(shù)據(jù)壓縮模塊,用于將所述Soap消息中的XML部分進(jìn)行壓縮得到二進(jìn)制數(shù)據(jù);第一數(shù)據(jù)重組模塊,用于將壓縮得到的二進(jìn)制數(shù)據(jù)作為附件重組到所述Soap消息中并將所述Soap消息發(fā)送至所述數(shù)據(jù)接收裝置,其中,所述數(shù)據(jù)壓縮模塊通過內(nèi)容類型字段的屬性值標(biāo)識(shí)壓縮方法。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述數(shù)據(jù)接收裝置包括第二數(shù)據(jù)重組模塊,用于提取接收到的Soap消息中的二進(jìn)制數(shù)據(jù)和所述內(nèi)容類型字段的屬性值;以及數(shù)據(jù)解壓模塊,用于根據(jù)所述屬性值對(duì)所述二進(jìn)制數(shù)據(jù)進(jìn)行解壓縮。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述屬性值為以下之一對(duì)應(yīng)于lzw算法的lzw數(shù)據(jù)、對(duì)應(yīng)于lz78算法的lz78數(shù)據(jù)、對(duì)應(yīng)于lz77算法的lz77數(shù)據(jù)。
5.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述屬性值為以下之一lzw數(shù)據(jù)/XML、lz78數(shù)據(jù)/XML、lz77數(shù)據(jù)/XML。
6.一種數(shù)據(jù)傳輸方法,其特征在于,包括以下步驟步驟一,數(shù)據(jù)發(fā)送端將Soap消息中得XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到所述Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收端;步驟二,所述數(shù)據(jù)接收端在接收到所述Soap消息后,提取所述Soap消息的附件,并對(duì)所述附件進(jìn)行解壓以得到所述XML部分。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸方法,其特征在于,步驟一包括步驟a,數(shù)據(jù)發(fā)送端將所述Soap消息中的XML部分進(jìn)行壓縮得到二進(jìn)制數(shù)據(jù);步驟b,將壓縮得到的二進(jìn)制數(shù)據(jù)作為附件重組到所述Soap消息中并將所述Soap消息發(fā)送至所述數(shù)據(jù)接收端,其中,所述數(shù)據(jù)壓縮模塊通過內(nèi)容類型字段的屬性值標(biāo)識(shí)壓縮方法。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟二包括步驟a,所述數(shù)據(jù)接收端提取接收到的Soap消息中的二進(jìn)制數(shù)據(jù)和所述內(nèi)容類型字段的屬性值;以及步驟b,根據(jù)所述屬性值對(duì)所述二進(jìn)制數(shù)據(jù)進(jìn)行解壓縮。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的數(shù)據(jù)傳輸方法,其特征在于,所述屬性值為以下之一對(duì)應(yīng)于lzw算法的lzw數(shù)據(jù)、對(duì)應(yīng)于lz78算法的lz78數(shù)據(jù)、對(duì)應(yīng)于lz77算法的lz77數(shù)據(jù)。
10.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的數(shù)據(jù)傳輸方法,其特征在于,所述屬性值為以下之一lzw數(shù)據(jù)/XML、lz78數(shù)據(jù)/XML、lz77數(shù)據(jù)/XML。
全文摘要
本發(fā)明公開了數(shù)據(jù)傳輸系統(tǒng),它包括數(shù)據(jù)發(fā)送裝置,用于將Soap消息中得XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收裝置;數(shù)據(jù)接收裝置,用于在接收到Soap消息后,提取Soap消息的附件,并對(duì)附件進(jìn)行解壓以得到XML部分。還公開了數(shù)據(jù)傳輸方法,它包括以下步驟數(shù)據(jù)發(fā)送端將Soap消息中得XML部分進(jìn)行壓縮并將壓縮后的數(shù)據(jù)作為附件打包到Soap消息中,將打包后的Soap消息發(fā)送至數(shù)據(jù)接收端;數(shù)據(jù)接收端在接收到Soap消息后,提取Soap消息的附件,并對(duì)附件進(jìn)行解壓以得到XML部分。
文檔編號(hào)H04L12/58GK101079889SQ20071011245
公開日2007年11月28日 申請日期2007年6月26日 優(yōu)先權(quán)日2007年6月26日
發(fā)明者馮宇翔 申請人:中興通訊股份有限公司