專利名稱:使用模板化參數(shù)的消息編碼/解碼的制作方法
使用模板化參數(shù)的消息編碼/解碼背景我們現(xiàn)代的連接的世界由來回傳遞消息的消息處理器來促進。消息處理器可以是 相當(dāng)復(fù)雜的,諸如全能力計算系統(tǒng)或甚至計算系統(tǒng)的集合。在另一方面,消息處理器可以是 相當(dāng)簡單的,并且甚至可能只是簡單的狀態(tài)機(例如,耳機)。消息處理器還可具有這兩個 極端之間的能力。此外,消息處理器之間的信道的能力是不同的。信道可以是具有每秒數(shù) 萬億位(1(Γ12位)的信息級的較大帶寬的光纖束,或者可以慢得多,諸如例如,紅外或藍牙 連接。為了減少在消息處理器之間通過特定信道發(fā)送的信息量,經(jīng)常壓縮信息。在一種 典型的壓縮技術(shù)中,構(gòu)造碼元字典,其中每一個碼元替換特定位序列。哈夫曼編碼、算術(shù)編 碼和LZW編碼是這一基于字典的壓縮技術(shù)的示例。然而,這些壓縮技術(shù)基于位級知識來執(zhí) 行壓縮,并且不使用數(shù)據(jù)的語義知識(即,數(shù)據(jù)的含義)來執(zhí)行壓縮。簡要概述此處所描述的各實施例涉及消息處理器之間通過通信信道的壓縮數(shù)據(jù)傳遞。在如在發(fā)送側(cè)看到的一個實施例中,發(fā)送消息處理器可以按照模板標識(顯式或 隱式地標識)以及一個或多個參數(shù)來以壓縮形式表達消息。基于模板標識,可以理解一個 或多個參數(shù)的含義,而這些參數(shù)的含義在不具有模板知識的情況下無法理解。在一個實施 例中,發(fā)送消息處理器首先訪問預(yù)壓縮消息,標識用來壓縮該消息的模板,并標識未填充在 模板中的消息的一個或多個參數(shù)。發(fā)送消息處理器然后可通過簡單地標識模板(明確地或 隱式地)并且然后包括參數(shù)的特定值來制定壓縮消息?;蛘撸l(fā)送消息處理器簡單地用對 所標識的模板的正確的語義理解來對參數(shù)值進行操作。在接收側(cè)的一個實施例中,接收消息處理器可接收壓縮形式的消息。接收消息處 理器可以直接對壓縮消息進行操作,或者可以在對消息采取動作之前首先解壓消息。在任 一種情況下,模板標識用于提供對包括在壓縮消息中的參數(shù)的含義的上下文語義理解。如 果接收消息處理器解壓消息,則所標識的模板可用作解壓消息的結(jié)構(gòu)基礎(chǔ),其中參數(shù)值用 于填充該解壓消息的各部分。此處所描述的原理不限于任何特定類型的模板。作為一個示例,模板可以是兩個 消息處理器都可以訪問和理解的靜態(tài)模板集的一部分。例如,靜態(tài)模板集可以是標準的一 部分,可以是兩個消息處理器都參與的分布式應(yīng)用程序的一部分,可以在通信開始時的握 手過程期間協(xié)商,或者以某種其他方式設(shè)置。另選地或另外地,模板集可以是動態(tài)的,或許 在靜態(tài)模板集上構(gòu)建并以消息處理器之間的其他通信為依據(jù)。本概述不旨在標識所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助 確定所要求保護的主題的范圍。附圖
簡述為了描述能夠獲得上述和其它優(yōu)點和特征的方式,各實施例的更具體的描述將通 過參考附圖來呈現(xiàn)??梢岳斫?,這些附圖僅描述各樣本實施例,從而不被認為是對本發(fā)明的 范圍的限制,將通過使用附圖用附加特征和細節(jié)來描述和解釋這些實施例,附圖中
圖IA示出了計算系統(tǒng)形式的消息處理器的一個示例;圖IB示出了狀態(tài)機形式的消息處理器的另一個示例;圖2A示出了其中發(fā)送消息處理器壓縮要發(fā)送的消息,但接收消息處理器直接對 壓縮形式的消息進行操作的消息收發(fā)環(huán)境;圖2B示出了其中發(fā)送消息處理器對壓縮形式的消息進行操作,但接收消息處理 器解壓該消息的消息收發(fā)環(huán)境;圖2C示出了其中發(fā)送消息處理器壓縮要發(fā)送的消息,而接收消息處理器解壓該 消息的消息收發(fā)環(huán)境;圖3示出了可由一個或多個參數(shù)以及模板來表示的消息的數(shù)據(jù)結(jié)構(gòu),該模板表達 消息的某些語義上下文和消息中的一個或多個參數(shù)的語義上下文;圖4示出了包括模板標識符以及一個或多個參數(shù)的壓縮消息的數(shù)據(jù)結(jié)構(gòu);圖5示意性地示出了可用于表達消息的語義上下文以及消息中的一個或多個參 數(shù)的語義上下文的模板的數(shù)據(jù)結(jié)構(gòu);圖6示出了用于使用模板來壓縮消息的方法的流程圖;圖7示出了用于使用模板來解壓消息的方法的流程圖;以及圖8示出了用于動態(tài)地更改模板集的方法的流程圖。詳細描述根據(jù)此處所描述的各實施例,描述了消息壓縮和解壓。壓縮消息可以按照顯式或 隱式模板標識以及一個或多個參數(shù)的值來表示。基于模板標識,可以理解一個或多個參數(shù) 的含義,而這些參數(shù)的含義在不具有模板知識的情況下可能無法理解。模板為一個或多個 參數(shù)提供語義上下文。發(fā)送消息處理器可能已經(jīng)使用所標識的模板來壓縮消息。另選地或 另外地,接收消息處理器可使用所標識的模板來解壓消息。模板本身不必是所發(fā)送的壓縮 消息的一部分。首先,關(guān)于消息處理器的某些介紹性討論將參考圖IA和IB來描述。然而,使用語 義模板的壓縮和解壓的各實施例將參考圖2A到7來描述。最后,用于動態(tài)地更改可用于壓 縮或解壓的模板集的方法將參考圖8來描述。在本說明書以及權(quán)利要求書中,“消息處理器”應(yīng)被非常寬泛地解釋為包括能夠處 理消息的任何設(shè)備或計算系統(tǒng)。對消息的“處理”包括以下各項中的任一個或多個從消 息訪問數(shù)據(jù)、將數(shù)據(jù)提供到消息中、構(gòu)造消息、壓縮消息、解壓消息、和/或解釋消息中的數(shù) 據(jù)。圖IA示出了計算系統(tǒng)形式的消息處理器的一個示例,該示例現(xiàn)在將更詳細地描 述。之后,另一消息處理器將參考圖IB的狀態(tài)機來描述。即,本領(lǐng)域的普通技術(shù)人員將認 識到,術(shù)語“消息處理器”將不受圖IA和IB所描述的實施例的限制,并且圖IA和IB只是 出于說明示例的目的而提供的。存在消息處理器的嚴格意義上無限種類的可能實現(xiàn)。說明 和描述所有這些實現(xiàn)將不必要地使本發(fā)明的較寬泛的原理變得模糊。計算系統(tǒng)現(xiàn)在越來越多地采用各種各樣的形式。例如,計算系統(tǒng)可以是手持式設(shè) 備、電器、膝上型計算機、臺式計算機、大型機、分布式計算系統(tǒng)或甚至常規(guī)上不被認為是計 算系統(tǒng)的設(shè)備。在本說明書以及權(quán)利要求書中,術(shù)語“計算系統(tǒng)”被廣義地定義為包括包含 至少一個處理器以及其上能含有可由處理器執(zhí)行的計算機可執(zhí)行指令的存儲器的任何設(shè)備或系統(tǒng)(或其組合)。存儲器可采取任何形式,且可取決于計算系統(tǒng)的本質(zhì)和形式。計算 系統(tǒng)可分布在網(wǎng)絡(luò)環(huán)境上,且可包括多個組成計算系統(tǒng)。即,“消息處理器”甚至根本不限于 在計算系統(tǒng)中使用。圖IA示出了計算系統(tǒng)100A形式的消息處理器。在其最基本的配置中,計算系統(tǒng) 100通常包括至少一個處理單元102和存儲器104。存儲器104可以是物理系統(tǒng)存儲器,它 可以是易失性的、非易失性的或兩者的某種組合。術(shù)語“存儲器”也可在此處用來指諸如物 理存儲介質(zhì)等非易失性大容量存儲。如果計算系統(tǒng)是分布式的,則處理、存儲器、和/或存 儲能力也可以是分布式的。如此處所使用的,術(shù)語“模塊”或“組件”可以指在計算系統(tǒng)上執(zhí)行的軟件對象或例 程。此處描述的不同的組件、模塊、引擎和服務(wù)可被實現(xiàn)為在計算系統(tǒng)上執(zhí)行的對象或進程 (例如,作為單獨的線程)。軟件應(yīng)用程序可具有多個相互關(guān)聯(lián)的組成模塊。在分布式應(yīng)用 程序中,該應(yīng)用程序的不同模塊可被部署在不同的物理機器上。在以下描述中,參考由一個或多個計算系統(tǒng)執(zhí)行的動作描述各實施例。如果這樣 的動作用軟件實現(xiàn),則相關(guān)聯(lián)計算系統(tǒng)中執(zhí)行該動作的一個或多個處理器響應(yīng)于執(zhí)行了計 算可執(zhí)行指令而引導(dǎo)計算系統(tǒng)的操作。這樣的操作的示例涉及對數(shù)據(jù)的操縱。計算機可執(zhí) 行指令(和所操縱的數(shù)據(jù))可被存儲在計算系統(tǒng)100A的存儲器104中。例如,如果計算系 統(tǒng)100A是以此處所描述的方式壓縮消息的消息處理器,則該壓縮(或解壓)可能使用指示 該處理器使壓縮(或解壓)發(fā)生的計算機可執(zhí)行指令來實現(xiàn)。計算系統(tǒng)100A還可包含允許計算系統(tǒng)100A通過例如網(wǎng)絡(luò)110與其他消息處理器 通信的通信信道108。通信信道108是通信介質(zhì)的示例。通信介質(zhì)一般用諸如載波或其他 傳輸機制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并且 包括任何信息傳遞介質(zhì)。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接 線連接,以及無線介質(zhì),諸如聲學(xué)、無線電、紅外線和其他無線介質(zhì)。如此處所用的術(shù)語“計 算機可讀介質(zhì)”既包括存儲介質(zhì)又包括通信介質(zhì)。本發(fā)明的范圍內(nèi)的實施例也包括用于承載或其上儲存有計算機可執(zhí)行指令或數(shù) 據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)。這樣的機器可讀介質(zhì)可以是可由通用或?qū)S糜嬎銠C訪問的任 何可用介質(zhì)。作為示例而非限制,這樣的計算機可讀介質(zhì)可包括物理存儲和/或存儲器介 質(zhì),諸如RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或可用于 承載或存儲計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?算機訪問的任何其他介質(zhì)。當(dāng)信息在網(wǎng)絡(luò)或另一通信連接(硬連線、無線或硬連線或無線 的組合)上傳輸或提供給計算機時,計算機將連接完全視為計算機可讀介質(zhì)。因此,任何這 樣的連接被適當(dāng)?shù)胤Q為計算機可讀介質(zhì)。上述的組合也應(yīng)被包括在計算機可讀介質(zhì)的范圍 內(nèi)。計算機可執(zhí)行指令例如包括,使通用計算機、專用計算機、或?qū)S锰幚碓O(shè)備執(zhí)行某 一功能或某組功能的指令和數(shù)據(jù)。盡管用對結(jié)構(gòu)特征和/或方法動作專用的語言描述了本 主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于在此所述的具體特征或動作。相 反,在此所述的具體特征和動作是作為實現(xiàn)權(quán)利要求的示例形式公開的。圖IB示出了狀態(tài)機120形式的消息處理器。狀態(tài)機120可以完全用硬件來實現(xiàn)。 狀態(tài)機接收輸入信號121,并且確定性地生成輸出信號122??扇芜x地,確定性功能可取決于一個或多個可任選的配置設(shè)置123。在一個實施例中,狀態(tài)機120可使用邏輯門以及諸如 或許寄存器和時鐘等可能的其他電路組件來實現(xiàn)。當(dāng)被實現(xiàn)為消息處理器時,狀態(tài)機120 可執(zhí)行此處所描述的壓縮和/或解壓。對于壓縮,輸入信號121可表示預(yù)壓縮消息,而輸出 信號122可表示壓縮消息。對于解壓,輸入信號121可表示壓縮消息,而輸出信號122可表 示解壓消息?,F(xiàn)在已經(jīng)描述了示例消息處理器,用于使用消息處理器使用消息的語義模板來壓 縮和解壓消息的各實施例現(xiàn)在將參考圖2A到7來描述。首先圖2A到2C示出了各種消息 收發(fā)環(huán)境200A、200B和200C。在每一種情況下,消息環(huán)境包括發(fā)送消息處理器201 (對應(yīng) 于發(fā)送消息處理器201A、201B和201C),以及接收消息處理器202 (對應(yīng)于接收消息處理器 202A、202B和202C)。發(fā)送消息處理器201被稱為是“發(fā)送”消息處理器僅僅是因為在此處 所描述的示例中它們發(fā)送消息。接收消息處理器202被稱為是“接收”消息處理器僅僅是 因為在此處所描述的示例中它們接收消息。然而,典型的消息處理器通常發(fā)送和接收消息。 因此,術(shù)語“發(fā)送”和“接收”不應(yīng)被解釋為排他性地要求消息處理器在發(fā)送消息處理器的 情況下只發(fā)送消息或者在接收消息處理器的情況下只接收消息。圖2A示出了其中發(fā)送消息處理器201A壓縮消息,但接收消息處理器202A直接對 壓縮消息進行操作的消息環(huán)境200A。具體而言,發(fā)送消息處理器包括向壓縮組件213A提供 預(yù)壓縮消息212A的上層211A。消息可經(jīng)歷各壓縮和處理階段?!邦A(yù)壓縮”消息意味著該消息尚未經(jīng)歷使用本發(fā)明 的原理的壓縮。消息中的部分或全部可能已經(jīng)經(jīng)歷了使用此處未描述且不在本發(fā)明的范圍 內(nèi)的其他壓縮技術(shù)的其他類型的壓縮。然而,消息甚至在這些情況下也被稱為“預(yù)壓縮”,因 為消息尚未經(jīng)歷此處所描述的壓縮。此外,術(shù)語“組件”在參考消息處理器使用時可以是軟 件組件、硬件組件或其組合。壓縮組件213A使用模板214A來壓縮消息。具體而言,在一個實施例中,壓縮組件 213A選擇匹配消息本身的語義上下文的模板。然后使用該模塊來選擇來自消息的一個或多 個參數(shù)以便發(fā)送,而不是發(fā)送整個消息。在不止一個模板的情況下,從模板集215A訪問模 板214A。壓縮組件213A制定壓縮消息216A以便以一個或多個參數(shù)以及模板標識(隱式或 明確)的形式發(fā)送到接收消息處理器202A。通常,壓縮消息并非直接從壓縮組件發(fā)送,而是 通常在物理消息發(fā)送之前經(jīng)歷其他處理。因此,消息被“發(fā)送”應(yīng)被視作通過邏輯信道230A 的邏輯發(fā)送。邏輯信道230A可包括物理信道,但還可包括發(fā)送和接收消息處理器中的任一 個或兩者上的較低層處理組件。一旦接收消息處理器202A從邏輯信道230A訪問了壓縮消息216A (或至少其派生 物),接收消息處理器202就在不首先解壓消息216A的情況下直接對壓縮消息216A進行操作。相反,圖2B示出了其中發(fā)送消息處理器201B直接對壓縮消息216B進行操作的消 息收發(fā)環(huán)境200B。在該意義上,使用術(shù)語“壓縮”來描述消息216B不意味著該消息是先前 從較大的消息壓縮的。相反,術(shù)語“壓縮”僅僅意味著該消息可使用語義模板來解壓或擴展 成較大的形式。發(fā)送消息處理器201B將壓縮消息216B發(fā)送到邏輯信道230B中。在接收到來自邏輯信道230B的壓縮消息216B后,接收消息處理器202B使用解壓 組件223B來解壓消息216B。該解壓使用模板224B來完成。模板224B可以在壓縮消息本身中隱式或明確地標識。在一個實施例中,解壓通過將在壓縮消息中提供的一個或多個參 數(shù)值放置到壓縮消息中所標識的模板的實例中以由此填充擴展消息來實現(xiàn)。如果存在多個 模板,則從模板集225B中選擇模板224B。解壓可通過使用模板224B來實現(xiàn)。然后將解壓 或擴展消息222B提供給上層221B以供進一步處理。圖2C示出了其中發(fā)送消息處理器201C壓縮消息,而接收消息處理器202C解壓該 消息的消息收發(fā)環(huán)境200C。具體而言,發(fā)送消息處理器201C包括向壓縮組件213C提供預(yù) 壓縮消息212C的上層211C。壓縮組件213C使用或許選自模板集215C的模板214C來壓縮消息。在一個實施 例中,壓縮組件213C制定壓縮消息216C以便以模板的標識(隱式或明確)以及一個或多 個參數(shù)的形式發(fā)送到接收消息處理器202A。壓縮消息216C然后可以在邏輯信道230C上發(fā)送。在接收到來自邏輯信道230C的壓縮消息216C后,接收消息處理器202C使用解壓 組件223C來解壓消息216C。該解壓使用或許選自模板集215C的模板214C來實現(xiàn)。用于 解壓的模板可以,但不必與用于壓縮的模板相同。此外,接收消息處理器202C可以,但不必 具有對發(fā)送消息處理器201C可訪問的相同模板的訪問權(quán)。然后可將解壓消息212C提供給 上層221C以供進一步處理。因此,此處所描述的各實施例可用于在發(fā)送側(cè)壓縮消息和/或在接收側(cè)解壓消 息。示例傳輸過程現(xiàn)在將參考具體示例擴展消息、模板和壓縮消息示例來描述。圖3示意性地示出了擴展消息300的數(shù)據(jù)結(jié)構(gòu)。盡管并非必需,但在所示示例中, 消息包括多個參數(shù)名值對。具體而言,示出了七個名值對301到307,每一個都具有名稱(分 別對應(yīng)于名稱301A到307A)以及值(分別對應(yīng)于值301B到307B)。省略號308表示在所 處理的任何給定消息中可能存在多于或少于7個名值對。在一個甚至更具體的示例中,參 數(shù)名值對的集合可以是如可擴展標記語言(XML)文檔中那樣為分層結(jié)構(gòu)的,其中每一個名 值對都表示XML分層結(jié)構(gòu)中的一特定節(jié)點。只是出于討論的目的,提供以下為清楚和易于參考起見添加了行號的具體XML示例消息
1. <xsl transform version = 1. 0”xmlns:xsl ='http://www/w3/org/1999/XSL/
Transform)
2. <xsl::template match =,,/,,>
3.<s : Envelope xmlns:s = 〃 http://www.w3. org/2003/05/soap-envelope“xmlns:
a="http://schemas. xmlsoap. org/ws/2004/08/addressing“ >
4.<s:Header>
5.〈a:Action s:mustUnderstand = " 1" wsu: Id = “ Action" >
6.http://schemas. xmlsoap. org/ws/2004/04/security/trust/RSTR/Issue
7.〈/a:Action〉
8.<a:RelatesTo wsu:Id = “ RelatesTo“ >
9*.Messagel
11.<a:To smustUnderstand="1" wsu: Id=" To" >
12.http://schemas. xmlsoap. org/ws/2004/08/addressing/roleanonymous
13.</a:To>
14.</s:Header)
15.<s:Body wsu: Id =" Body" >
16.<wst:RequestSecurityTokenResponse>
17.<wst:TokenType>urn:oasi s:names:tc:SAML:1. 1
</wst:TokenType>
18.<wst:Lifetime)
19.<wsu:Created)
20*.<xsl:value-ofselect =,,$Created,,>
21.</wsu:Created)
22.<wsu:Expires)
23*.<xsl:value-ofselect =,,$Expires,,>
24.</wsu:Expires>
25.</wst:Lifetime)
26.<wst:RequestedSecurityToken>
27*.<xsl:value-of selec
=,,$RequestedSecurityToken" >28.</wstRequestedSecurityToken>29.<wstRequestedAttachedReference>30*.<xsl value-of select ="$RequestedAttachedReference“ >31.</wstRequestedAttachedReference>32.<wst:RequestedUnattachedReference>33*.<xsl: value-of select = " $RequestedUnattachedR eference" >34.</wst:RequestedUnattachedReference>35.</wst:RequestSecurityTokenResponse>36.</s:Body>37.</s: Envelope)38. </xsl: template)39. </xsl: tranform>該示例模板看上去與上述示例消息非常相似。事實上,在該示例中,保留消息的語 義,且該模板的每一行(行1-39)都是該消息的每一行(行1-39)的復(fù)制品。在該示例中, 對于這一點的唯一例外是表示實際值的占位符的行9、20、23、27、30和33。以下示出了可能由示例39行消息使用示例39行模板的壓縮而產(chǎn)生的壓縮消息的 具體示例。為清楚起見添加了行號,但壓縮消息只是不具有行號概念的位序列。行號只用于幫助解釋該位序列的結(jié)構(gòu)。1.0x00012. 0x00323. http://xml. schemas. org/2005/02/PSTS/constrainedRST4. 0x000000085.消息 16. OxOOOOOOOA7. 30/11/20078. OxOOOOOOOA9. 30/06/200810. 0x0000410a11. [ 二進制目標服務(wù)x509證書]12. 0x0000000813. 1234567814. 0x0000000815. 1234567816. OxFFFFFFFF每一行都使用十六進制記法來表示。該消息開始于具有十六進制記法0x0001的 行1,該行與位序列0000000000000001相同。這指示壓縮消息的開頭。在該標準中,下一個出現(xiàn)的信息將會是模板標識符。然而,為了正確地解析來自消 息的模板標識符,行2包括模板標識符的長度(0x0032,其在十進制中是50)。因此,在讀取 行2的位序列后,解壓組件知道接下來的50個字節(jié)將包括模板標識符。默認地,解壓組件 可以理解,模板標識符將被表達為一字符串,該字符串中的每一個字符為一個字節(jié)。解壓組件然后讀取行3中所表示的接下來50字節(jié)的數(shù)據(jù)以制定以下字符串 "http://xml. schemas. org/2005/02/PSTS/constrainedRST,,。這準許解壓組件訪問正確的模板以便進行解壓。例如,可以訪問模板500以解壓 消息400。解壓組件然后將期望在值本身之后接收值長度形式的實際參數(shù)值。例如,行4 將下一參數(shù)標識為8字節(jié)長。具體而言,參數(shù)值是字符串“消息1”。行6將下一個值標 識為10字節(jié)長,并且讀取行7,其是日期30/11/2007的字符串值。行8將下一個值標識 為10字節(jié)長,并且讀取行9,其是日期30/06/2008的字符串值。行10將下一個值標識為 0x0000410a(以十六進制表達)字節(jié)長,并且然后讀取由行11中的[二進制目標服務(wù)x509 證書]用符號表示的二進制序列。行12將下一個值標識為8字節(jié)長并且將行13讀作值 12345678。行14將下一個值標識為8字節(jié)長并且將行15讀作值12345678。行16包括指 示消息末尾的十六進制序列OxFFFFFFFF??扇芜x地,如果存在某些可任選的值,則改為使用 位序列OxFFFFFFFFE,之后是一個或多個長度值對序列。然后可使用所提取的值,但用模板來重新制定擴展消息。例如,可以在模板的行9 中插入“消息1”,可以在行20中插入“30/11/2007”,可以在行23處插入“30/06/2008”,可 以在行27處插入[二進制目標服務(wù)x509證書],可以在行30中插入12345678,并且可以
12在行33處插入12345678,以由此重構(gòu)較大消息。圖6示出了用于壓縮壓縮消息的方法600的流程圖。例如,在圖2A(和圖2C)中, 發(fā)送消息處理器201A (和201C)壓縮消息212A (和212C)以制定壓縮消息216A (和216C)。壓縮組件首先訪問預(yù)壓縮消息(動作601)。例如,在圖2A中,壓縮組件213A訪問 消息212A。在圖2C中,壓縮組件213C訪問消息212C。壓縮組件還標識要被包括在壓縮消息中的一個或多個參數(shù)(動作602),并且還標 識對應(yīng)于該消息的模板(動作603)。壓縮組件可以很好地使用該模板來標識消息的哪些參 數(shù)要被包括在壓縮消息中。在任何情況下,然后以至少隱式地標識模板的方式構(gòu)造壓縮消 息(動作604)。然后可將壓縮消息發(fā)送到接收消息處理器(動作605)。圖7示出了用于解壓壓縮消息的方法700的流程圖。接收消息處理器通過例如從 發(fā)送消息處理器接收至少壓縮消息的派生物來訪問壓縮消息(動作701)。例如,在圖2B(和 2C)中,接收消息處理器202B (和202C)接收壓縮消息216B (動作216C)。接收消息處理器的解壓組件然后從壓縮消息訪問一個或多個參數(shù)值(動作702), 并且還標識與壓縮消息相關(guān)聯(lián)的模板(動作703)。例如,如果壓縮消息如對于圖4的壓縮 消息400所描述的那樣構(gòu)造,則解壓組件可從壓縮消息400中讀取模板標識符401,并且可 從壓縮消息400中讀取一個或多個參數(shù)值402。然而,如上所述,模板標識符可能并非被明確地包括在壓縮消息中,但或許可以被 推斷。例如,可能只有當(dāng)在兩個消息處理器之間通信時使用的單個模板,或者可能存在在沒 有指定其他模板時使用的默認模板。解壓組件然后可使用被包括在壓縮消息中的參數(shù)值并使用如上所述的所標識的 模板來將壓縮消息解壓或擴展成擴展消息(動作704)。模板所描述的語義信息甚至在發(fā)送和接收消息處理器之間的首次通信之前也可 被這些消息處理器理解。例如,壓縮和解壓可以是分布式應(yīng)用程序的包括的功能,且不同的 組件被安裝在每一個消息處理器上。在這種情況下,每一個消息處理器都可隱式地基于初 始應(yīng)用程序安裝來理解相同的模板集?;蛘撸0逭Z義信息可由發(fā)送和接收消息處理器在 傳遞消息時的相同的通信會話中協(xié)商,或許作為初始握手操作。模板集可以是靜態(tài)且不變 的。另選地或另外地,模板集可隨著通信在發(fā)送和接收消息處理器之間繼續(xù)而動態(tài)更改。圖8示出了用于動態(tài)更新用于在兩個消息處理器之間進行通信的模板集的方法 800的流程圖。首先,標識用于在消息處理器之間進行通信的初始語義模板(動作801)。然 后,對于在消息處理器之間傳遞的至少某些消息中的每一個,可以使用模板集中的特定模 板來壓縮和/或解壓消息(動作802)。另外,可以定義用于添加模板集的一個或多個準則 (判定框803)。如果滿足一個或多個準則(判定框803中的“是”),則更改模板集(動作 804)。例如,或許如果特定語義結(jié)構(gòu)的消息被識別為以某一頻率出現(xiàn),則可以為這一語義結(jié) 構(gòu)創(chuàng)建模板。因此,此處所描述的各實施例呈現(xiàn)用于使用消息的語義上下文來壓縮和/或解壓 消息的有效機制。本發(fā)明可具體化為其他具體形式而不背離其精神或本質(zhì)特征。所描述的 實施例在所有方面都應(yīng)被認為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附權(quán)利 要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變應(yīng)被權(quán) 利要求書的范圍所涵蓋。
權(quán)利要求
一種在消息收發(fā)環(huán)境(100A)中的方法(600),所述消息收發(fā)環(huán)境包括發(fā)送消息處理器(201A、201C)和接收消息處理器(202A、202C),所述方法供所述發(fā)送消息處理器壓縮消息(212A、212C、300)以準備將該消息發(fā)送到所述接收消息處理器,所述方法包括訪問(601)預(yù)壓縮消息(212A、212C、300)的動作;標識(603)對應(yīng)于所述消息的模板(214A、214C、500)的動作;標識(602)所述預(yù)壓縮消息的將要被包括在對應(yīng)于所述預(yù)壓縮消息的壓縮消息(216A、216C、400)中的一個或多個參數(shù)(302B、305A)的動作,其中所標識的模板定義用于所標識的一個或多個參數(shù)的語義框架(502B、505B);以及以至少隱式地標識(401)所述模板的方式構(gòu)造(604)所述壓縮消息的動作,并且這使得所述壓縮消息包括所標識的一個或多個參數(shù)的值(402)。
2.如權(quán)利要求1所述的方法,其特征在于,所述一個或多個參數(shù)是所述預(yù)壓縮消息的 多個參數(shù)。
3.如權(quán)利要求1所述的方法,其特征在于,所述模板表示參數(shù)名值字段對的集合,其中 所述對中的至少一個的值字段包括文字值,并且其中所述對中的至少一個的值字段包括抽象值。
4.如權(quán)利要求3所述的方法,其特征在于,所述消息由所述模板來表示,但所標識的一 個或多個參數(shù)中的每一個的實際值替換所述模板的對應(yīng)的抽象值。
5.如權(quán)利要求4所述的方法,其特征在于,所述壓縮消息被構(gòu)造以使得基于所述實際 值在所述壓縮消息中的位置來表示所標識的一個或多個參數(shù)中的每一個的實際值和所述 模板的對應(yīng)的抽象值之間的相關(guān)。
6.如權(quán)利要求3所述的方法,其特征在于,所述參數(shù)名值字段的集合各自被表達為分 層構(gòu)造的數(shù)據(jù)結(jié)構(gòu)中的節(jié)點。
7.如權(quán)利要求1所述的方法,其特征在于,所標識的模板在所述壓縮消息中明確地標識。
8.如權(quán)利要求1所述的方法,其特征在于,還包括 將所述壓縮消息發(fā)送到所述接收消息處理器的動作。
9.如權(quán)利要求1所述的方法,其特征在于,被包括在所述模板中的語義信息在所述發(fā) 送和接收消息處理器之間的相同的通信會話之前被所述發(fā)送和接收消息處理器兩者理解。
10.如權(quán)利要求1所述的方法,其特征在于,被包括在所述模板中的語義信息由所述發(fā) 送和接收消息處理器在傳遞所述消息時在相同的通信會話中協(xié)商。
11.如權(quán)利要求1所述的方法,其特征在于,隨著通信在所述發(fā)送和接收消息處理器之 間繼續(xù),所述模板集動態(tài)地改變。
12.一種在消息收發(fā)環(huán)境(IOOa)中的方法(700),所述消息收發(fā)環(huán)境包括發(fā)送消息處 理器(201B、201C)和接收消息處理器(202B、202C),所述方法供所述接收消息處理器解壓 從所述發(fā)送消息處理器接收到的消息(216A、216C、400),所述方法包括訪問(700)壓縮消息(216A、216C、400)的動作; 標識(703)對應(yīng)于所述壓縮消息的模板(224B、214C、500)的動作; 訪問(702)來自所述壓縮消息的一個或多個參數(shù)的值(402)的動作,其中所述模板 (500)定義用于對應(yīng)于所述壓縮消息的解壓消息中的所標識的一個或多個參數(shù)(302B、305B)的語義框架(502B.505B);以及解壓(704)所述壓縮消息以便使用所標識的模板以及從所述壓縮消息訪問的一個或 多個參數(shù)的值來生成對應(yīng)的解壓消息(212B、212C)的動作。
13.如權(quán)利要求12所述的方法,其特征在于,所述訪問所述壓縮消息的動作包括從所 述發(fā)送消息處理器接收至少所述壓縮消息的派生物的動作。
14.如權(quán)利要求12所述的方法,其特征在于,所述解壓所述壓縮消息以便使用所標識 的模板以及從所述壓縮消息訪問的一個或多個參數(shù)的值來生成對應(yīng)的解壓消息的動作包 括對于每一個值,使用該值在所述壓縮消息中的位置來確定該值在所述模板中的位置的 動作。
15.如權(quán)利要求12所述的方法,其特征在于,所述標識對應(yīng)于所述壓縮消息的模板的 動作包括使用所述壓縮消息中的模板標識符來標識所述模板的動作。
16.如權(quán)利要求12所述的方法,其特征在于,所述標識對應(yīng)于所述壓縮消息的模板的 動作包括將默認模板標識為所述模板的動作。
17.如權(quán)利要求16所述的方法,其特征在于,所述標識模板的動作在所述標識默認模 板的動作之前還包括確定在所述壓縮消息中不存在模板標識符的動作。
18.如權(quán)利要求12所述的方法,其特征在于,所述標識模板的動作包括使用至少所述 壓縮消息中的信息來制定新模板。
19.一種或多種其上具有計算機可執(zhí)行指令的計算機可讀介質(zhì)(104),所述指令在被 一個或多個處理器(102)執(zhí)行時指定一種用于將消息從發(fā)送消息處理器發(fā)送到接收消息 處理器的協(xié)議,所述協(xié)議包括標識(801)用于在所述消息處理器之間傳遞消息的初始模板集的動作,其中每一個模 板都為具有共同語義的消息提供語義上下文;對于在所述消息處理器之間傳遞的至少某些消息中的每一個,標識(802)所述模板集 中的要在壓縮或解壓所述消息時使用的模板的動作;定義用于向所述模板集添加模板的一個或多個準則的動作;以及在確定滿足一個或多個準則時(803)更改(804)所述模板集的動作。
20.如權(quán)利要求19所述的一種或多種計算機可讀介質(zhì),其特征在于,所述一種或多種 計算機可讀介質(zhì)是物理存儲器和/或存儲介質(zhì)。全文摘要
提供了壓縮消息通過消息處理器之間的通信信道的傳遞。壓縮消息可以按照明確或隱式模板標識以及一個或多個參數(shù)的值來表達?;谀0鍢俗R,可以理解一個或多個參數(shù)的含義,而這些參數(shù)的含義在不具有模板知識的情況下無法理解。模板為一個或多個參數(shù)提供語義上下文。發(fā)送消息處理器可能已經(jīng)使用所標識的模板來壓縮消息。另選地或另外地,接收消息處理器可使用所標識的模板來解壓消息。模板本身不必是所發(fā)送的壓縮消息的一部分。
文檔編號H04L12/58GK101933297SQ200880126149
公開日2010年12月29日 申請日期2008年12月31日 優(yōu)先權(quán)日2008年1月31日
發(fā)明者A·K·納恩達, C·G·凱勒, H·O·威爾遜, J·P·休丘卡 申請人:微軟公司