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