專利名稱:分層地分解消息的制作方法
分層地分解消息背景I.背景和相關(guān)技術(shù)計(jì)算機(jī)系統(tǒng)和相關(guān)技術(shù)影響社會(huì)的許多方面。的確,計(jì)算機(jī)系統(tǒng)處理信息的能力已轉(zhuǎn)變了人們生活和工作的方式。計(jì)算機(jī)系統(tǒng)現(xiàn)在通常執(zhí)行在計(jì)算機(jī)系統(tǒng)出現(xiàn)以前手動(dòng)執(zhí)行的許多任務(wù)(例如,文字處理、日程安排和會(huì)計(jì)等)。最近,計(jì)算機(jī)系統(tǒng)彼此耦合并耦合到其他電子設(shè)備以形成計(jì)算機(jī)系統(tǒng)和其他電子設(shè)備可以在其上傳輸電子數(shù)據(jù)的有線和無線計(jì)算機(jī)網(wǎng)絡(luò)。因此,許多計(jì)算任務(wù)的執(zhí)行分布在多個(gè)不同的計(jì)算機(jī)系統(tǒng)和/或多個(gè)不同的計(jì)算環(huán)境中。為了在發(fā)送消息時(shí)優(yōu)化帶寬,將一組消息一起進(jìn)行批量處理是普遍的。這一過程有時(shí)候被稱為消息組合。類似地,取出單個(gè)消息并將其轉(zhuǎn)換回一組消息的解析過程有時(shí)候被稱為分解。在某些環(huán)境中,消息的批量處理可進(jìn)一步被嵌套,以使得較小的批次被包含在較大的批次內(nèi)。不幸的是,消息的分層嵌套對于開發(fā)分解處理器而言引入了相當(dāng)大的困難。例如,當(dāng)多個(gè)應(yīng)用消息已經(jīng)被分組成單個(gè)傳輸消息時(shí),分解的任務(wù)是提取內(nèi)層的應(yīng)用消息以使得它們可被呈現(xiàn)給軟件棧的較高層。然而,在某些環(huán)境中,分組被多層化。電子數(shù)據(jù)交換(“EDI”)協(xié)議是其中消息結(jié)構(gòu)被多次嵌套的一個(gè)示例。多次嵌套可極大地使分解過程復(fù)雜化。 許多消息模式使用會(huì)話,其由一組消息交換構(gòu)成。從而,消息分解的任務(wù)可包括從單個(gè)消息(例如,外層消息)中創(chuàng)建出消息會(huì)話。此外,循環(huán)分解(例如,以獲得嵌套的消息)可能要求從現(xiàn)有的會(huì)話中創(chuàng)建出較長的會(huì)話。然而,許多消息通信模式欠缺關(guān)于子會(huì)話的任何概念,從而使得這一過程變得困難。必須按順序地執(zhí)行各種獨(dú)特的功能以構(gòu)建分布式消息通信系統(tǒng),包括數(shù)據(jù)的物理傳輸、實(shí)現(xiàn)消息交換協(xié)議的狀態(tài)機(jī)、以及消息的格式化。這些消息通信功能一起常常被稱為消息通信棧。許多消息通信系統(tǒng)將構(gòu)成消息通信棧的這些不同的功能耦合在一起。從而,每當(dāng)一個(gè)獨(dú)特的功能改變,所有其他相關(guān)聯(lián)的功能出于兼容性也必須被重新編寫。例如,這種耦合可能要求當(dāng)傳輸介質(zhì)改變時(shí)消息格式化代碼被重新編寫,即使新的傳輸介質(zhì)在語義上與舊的傳輸介質(zhì)是相同的。某些軟件框架提供了對于考慮消息通信棧的實(shí)現(xiàn)以使得離散功能可被有效地實(shí)現(xiàn)為獨(dú)立的組件的抽象。然而,現(xiàn)有的框架幾乎(即使有的話)不具有對便于構(gòu)建會(huì)話格式化邏輯的抽象的支持。欠缺會(huì)話格式化邏輯抽象對于接收側(cè)的分解而言問題尤其嚴(yán)重。取決于嵌套的消息的格式和安排,會(huì)話格式化邏輯可能改變并且在接收消息(例如,外層消息)時(shí)可能是未知的。然而,分解過程可能固定于特定的功能集,從而無法處理嵌套的消息。簡要概述本發(fā)明涉及用于分層地分解消息的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的各實(shí)施例包括分解一個(gè)或多個(gè)消息。在消息分解的某些實(shí)施例中,從一個(gè)或多個(gè)分解器組件中選出的分解器組件從組件的分層安排中緊靠所述分解器組件下一層的組件接收消息。所述消息包含在所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息。所述分解器組件向幀調(diào)節(jié)器廠指示所述消息的消息類型。幀調(diào)節(jié)器廠向分解器組件提供幀調(diào)節(jié)器。幀調(diào)節(jié)器用于解析所述消息。所述分解器組件向所述組件的分層安排中緊靠著所述分解器組件上一層的組件指示會(huì)話的開始。所述會(huì)話位于所述分解器組件和緊靠著所述分解器組件上一層的組件之間。對于所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息,幀調(diào)節(jié)器解析所述消息以從所述消息中包含的一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套的消息。對于所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息,所述分解器組件將被標(biāo)識的下一嵌套的消息發(fā)送給所述會(huì)話。所述分解器組件向緊靠著所述分解器組件上一層的組件指示所述會(huì)話的結(jié)束。在消息分解的其他實(shí)施例中,第一分解器組件從組件的分層安排中緊靠著所述第一分解器組件下一層的組件接收消息。所述消息包含在所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息。所述第一分解器組件向所述組件的分層安排中緊靠著所述第一分解器組件上一層的組件指示會(huì)話的開始。所述會(huì)話位于所述第一分解器組件和緊靠著所述第一分解器組件上一·層的組件之間。所述第一分解器組件將所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息之一發(fā)送給所述會(huì)話。第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話開始的指示。所述第一會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件下一層的組件之間。所述第一會(huì)話響應(yīng)于所述第一分解器組件所指示的會(huì)話。所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收所述第一會(huì)話上的消息。所述消息包含在所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息。所述消息響應(yīng)于由所述第一分解器組件發(fā)送的嵌套消息。所述第二分解器組件向所述組件的分層安排中緊靠著所述第二分解器組件上一層的組件指示第二會(huì)話的開始。所述第二會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件上一層的組件之間。所述第二分解器組件在向緊靠著所述第二分解器組件上一層的組件指示所述第二會(huì)話的開始之后,向其發(fā)送所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)(包括最后一個(gè)嵌套消息)。發(fā)送一個(gè)或多個(gè)嵌套消息包括,所述第二分解器組件解析所述消息以從所述消息中包含的一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套的消息。發(fā)送一個(gè)或多個(gè)嵌套消息還包括,所述第二分解器組件將被標(biāo)識的下一嵌套消息發(fā)送給所述第二會(huì)話。所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話結(jié)束的指示。所述第二分解器組件在向所述第二會(huì)話發(fā)送最后嵌套的消息之后,向緊靠著所述第二分解器組件上一層的組件指示所述第二會(huì)話的結(jié)束。在接收所述第一會(huì)話結(jié)束的指示之后發(fā)送所述第二會(huì)話結(jié)束的指示。在另外一些實(shí)施例中,創(chuàng)建用于分解應(yīng)用的消息的消息棧。消息通信運(yùn)行時(shí)接收消息通信棧的聲明性規(guī)范。聲明性規(guī)范規(guī)定了要被包括在消息通信棧中用于分解應(yīng)用的消息的組件。聲明性規(guī)范包括傳輸組件規(guī)范、分解器組件的一個(gè)或多個(gè)實(shí)例的規(guī)范、以及一個(gè)或多個(gè)幀調(diào)節(jié)器組件規(guī)范。運(yùn)行時(shí)從聲明性規(guī)范中創(chuàng)建消息棧。創(chuàng)建運(yùn)行時(shí)包括形成執(zhí)行組件的分層線性集合。執(zhí)行組件的分層線性集合包括Ca)下層傳輸組件,(b) 一個(gè)或多個(gè)分解器組件,以及(C)上層應(yīng)用組件。下層傳輸組件根據(jù)傳輸組件規(guī)范來配置。一個(gè)或多個(gè)分解器組件根據(jù)分解器組件規(guī)范來配置。每一個(gè)分解器組件分別與分解器組件的實(shí)例之一的規(guī)范相對應(yīng)。更新層應(yīng)用組件對應(yīng)于應(yīng)用。當(dāng)組件被添加到執(zhí)行組件的分層線性集合時(shí),消息通信運(yùn)行時(shí)攜帶共享上下文。對于一個(gè)或多個(gè)幀調(diào)節(jié)器組件規(guī)范中的每一個(gè),消息運(yùn)行時(shí)將幀調(diào)節(jié)器組件規(guī)范添加到與分解器組件之一相對應(yīng)的共享上下文的一部分。分解器組件之一是利用根據(jù)幀調(diào)節(jié)器組件規(guī)范來配置的幀調(diào)節(jié)器組件來解析消息的分解器組件。對于每一個(gè)分解器組件,消息通信運(yùn)行時(shí)在與分解器組件之一相對應(yīng)的共享上下文的一部分中創(chuàng)建幀調(diào)節(jié)器廠。幀調(diào)節(jié)器廠被配置成從分解器組件接收消息,并且向分解器組件返回用于所述消息的幀調(diào)節(jié)器的組件。幀調(diào)節(jié)器組件用于包含在分解器組件內(nèi)以解析消息從而標(biāo)識出所述消息中包含的嵌套消息。幀調(diào)節(jié)器組件根據(jù)添加到與分解器組件相對應(yīng)的共享上下文的一部分的幀調(diào)節(jié)器組件規(guī)范來配置。每一個(gè)分解器組件被配置成從執(zhí)行組件的分層線性集合中緊靠著所述分解器組 件下一層的組件接收消息。對于每一個(gè)接收到的消息,分解器組件用接收到的消息來調(diào)用與所述分解器組件相對應(yīng)的幀調(diào)節(jié)器廠、從幀調(diào)節(jié)器廠獲得幀調(diào)節(jié)器組件以解析消息從而標(biāo)識任何嵌套的消息、以及將任何嵌套的消息發(fā)送至執(zhí)行組件的分層線性集合中緊靠著所述分解器組件上一層的組件。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下的具體實(shí)施例中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。本發(fā)明的附加特征和優(yōu)點(diǎn)將在以下描述中敘述,且其一部分根據(jù)本描述將是顯而易見的,或可通過對本發(fā)明的實(shí)踐來獲知。本發(fā)明的特征和優(yōu)點(diǎn)可通過在所附權(quán)利要求書中特別指出的工具和組合來實(shí)現(xiàn)和獲得。本發(fā)明的這些和其他特征將通過以下描述和所附權(quán)利要求書變得更加顯而易見,或可通過對下文中所述的本發(fā)明的實(shí)踐來領(lǐng)會(huì)。附圖簡述為了描述可獲得本發(fā)明的上述和其他優(yōu)點(diǎn)和特征的方式,將通過參考附圖中示出的本發(fā)明的具體實(shí)施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述??梢岳斫?,這些附圖僅描述本發(fā)明的典型實(shí)施例,從而不被認(rèn)為是對其范圍的限制,本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和說明,在附圖中圖I示出了便于分層地分解消息的示例計(jì)算機(jī)架構(gòu)。圖2示出了用于分層地分解消息的示例方法的流程圖。圖3示出了便于分層地分解消息的另一示例計(jì)算機(jī)架構(gòu)。圖4示出了用于分層地分解消息的另一示例方法的流程圖。圖5示出了消息通信流水線規(guī)范以及相對應(yīng)的消息通信組件的分層安排。詳細(xì)描述本發(fā)明涉及用于分層地分解消息的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的各實(shí)施例包括分解一個(gè)或多個(gè)消息。在消息分解的某些實(shí)施例中,從一個(gè)或多個(gè)分解器組件中選出的分解器組件從組件的分層安排中緊靠著所述分解器組件下一層的組件接收消息。所述消息包含在所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息。
所述分解器組件向幀調(diào)節(jié)器廠指示所述消息的消息類型。幀調(diào)節(jié)器廠創(chuàng)建分解器組件內(nèi)包含的幀調(diào)節(jié)器。幀調(diào)節(jié)器用于解析所述消息。所述分解器組件向所述組件的分層安排中緊靠著所述分解器組件上一層的組件指示會(huì)話開始。所述會(huì)話位于所述分解器組件和緊靠著所述分解器組件上一層的組件之間。對于所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息,幀調(diào)節(jié)器解析所述消息以從所述消息中包含的一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套的消息。對于所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息,所述分解器組件將被標(biāo)識的下一嵌套的消息發(fā)送給所述會(huì)話。所述分解器組件向緊靠著所述分解器組件上一層的組件指示所述會(huì)話的結(jié)束。在消息分解的其他實(shí)施例中,第一分解器組件從組件的分層安排中緊靠著所述第一分解器組件下一層的組件接收消息。所述消息包含在所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息。所述第一分解器組件向所述組件的分層安排中緊靠著所述第一分解器組件上一層的組件指示會(huì)話的開始。所述會(huì)話位于所述第一分解器組件和緊靠著所述第一分解器組件上一層的組件之間。所述第一分解器組件將所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息之一發(fā)送給所述會(huì)話。
第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話開始的指示。所述第一會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件下一層的組件之間。所述第一會(huì)話響應(yīng)于所述第一分解器組件所指示的會(huì)話。所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收所述第一會(huì)話上的消息。所述消息包含在所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息。所述消息響應(yīng)于由所述第一分解器組件發(fā)送的嵌套消息。所述第二分解器組件向所述組件的分層安排中緊靠著所述第二分解器組件上一層的組件指示第二會(huì)話的開始。所述第二會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件上一層的組件之間。所述第二分解器組件在向緊靠著所述第二分解器組件上一層的組件指示所述第二會(huì)話的開始之后,向其發(fā)送所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)(包括最后一個(gè)嵌套消息)。發(fā)送一個(gè)或多個(gè)嵌套消息包括,所述第二分解器組件解析所述消息以從所述消息中包含的一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套的消息。發(fā)送一個(gè)或多個(gè)嵌套消息還包括,所述第二分解器組件將被標(biāo)識的下一嵌套消息發(fā)送給所述第二會(huì)話。所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話結(jié)束的指示。所述第二分解器組件在向所述第二會(huì)話發(fā)送最后嵌套的消息之后,向緊靠著所述第二分解器組件上一層的組件指示所述第二會(huì)話的結(jié)束。在接收所述第一會(huì)話結(jié)束的指示之后發(fā)送所述第二會(huì)話結(jié)束的指示。在另外一些實(shí)施例中,創(chuàng)建用于分解應(yīng)用的消息的消息棧。消息通信運(yùn)行時(shí)接收消息通信棧的聲明性規(guī)范。聲明性規(guī)范規(guī)定了要被包括在消息通信棧中用于分解應(yīng)用的消息的組件。聲明性規(guī)范包括傳輸組件規(guī)范、分解器組件的一個(gè)或多個(gè)實(shí)例的規(guī)范、以及一個(gè)或多個(gè)幀調(diào)節(jié)器組件規(guī)范。運(yùn)行時(shí)從聲明性規(guī)范中創(chuàng)建消息棧。創(chuàng)建運(yùn)行時(shí)包括形成執(zhí)行組件的分層線性集合。執(zhí)行組件的分層線性集合包括Ca)下層傳輸組件,(b) 一個(gè)或多個(gè)分解器組件,以及(C)上層應(yīng)用組件。下層傳輸組件根據(jù)傳輸組件規(guī)范來配置。一個(gè)或多個(gè)分解器組件根據(jù)分解器組件規(guī)范來配置。每一個(gè)分解器組件分別與分解器組件的實(shí)例之一的規(guī)范相對應(yīng)。更新層應(yīng)用組件對應(yīng)于應(yīng)用。當(dāng)組件被添加到執(zhí)行組件的分層線性集合時(shí),消息通信運(yùn)行時(shí)攜帶共享上下文。對于一個(gè)或多個(gè)幀調(diào)節(jié)器組件規(guī)范中的每一個(gè),消息運(yùn)行時(shí)將幀調(diào)節(jié)器組件規(guī)范添加到與分解器組件之一相對應(yīng)的共享上下文的一部分。分解器組件之一是利用根據(jù)幀調(diào)節(jié)器組件規(guī)范來配置的幀調(diào)節(jié)器組件來解析消息的分解器組件。對于每一個(gè)分解器組件,消息通信運(yùn)行時(shí)在與分解器組件之一相對應(yīng)的共享上下文的一部分中創(chuàng)建幀調(diào)節(jié)器廠。幀調(diào)節(jié)器廠被配置成從分解器組件接收消息,并且向分解器組件返回用于所述消息的幀調(diào)節(jié)器的組件。幀調(diào)節(jié)器組件用于包含在分解器組件內(nèi)以解析消息從而標(biāo)識出所述消息中包含的嵌套消息。幀調(diào)節(jié)器組件根據(jù)添加到與分解器組件相對應(yīng)的共享上下文的一部分的幀調(diào)節(jié)器組件規(guī)范來配置。
每一個(gè)分解器組件被配置成從執(zhí)行組件的分層線性集合中緊靠著所述分解器組件下一層的組件接收消息。對于每一個(gè)接收到的消息,分解器組件用接收到的消息來調(diào)用 與所述分解器組件相對應(yīng)的幀調(diào)節(jié)器廠、從幀調(diào)節(jié)器廠獲得幀調(diào)節(jié)器組件以解析消息從而標(biāo)識任何嵌套的消息、以及將任何嵌套的消息發(fā)送至執(zhí)行組件的分層線性集合中緊靠著所述分解器組件上一層的組件。在某些實(shí)施例中,可重用幀調(diào)節(jié)器組件可被嵌入在分解器組件內(nèi)以檢測消息中各個(gè)段之間的邊界從而將單個(gè)消息變換成子消息流。幀調(diào)節(jié)器和分解器可在消息處理分層結(jié)構(gòu)中組成,從而允許它們與其他消息通信組件一起被使用并且支持多個(gè)分解器的堆疊以拆解分層結(jié)構(gòu)化的消息批次。分解器的分層結(jié)構(gòu)可完全從一個(gè)或多個(gè)統(tǒng)一的規(guī)范中構(gòu)造。本發(fā)明的各實(shí)施例可包括或利用專用或通用計(jì)算機(jī),該專用或通用計(jì)算機(jī)包括諸如例如一個(gè)或多個(gè)處理器和系統(tǒng)存儲(chǔ)器等計(jì)算機(jī)硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實(shí)施例還包括用于承載或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問的任何可用介質(zhì)。存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是物理存儲(chǔ)介質(zhì)。承載計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實(shí)施例可包括至少兩種顯著不同的計(jì)算機(jī)可讀介質(zhì)計(jì)算機(jī)存儲(chǔ)介質(zhì)和傳輸介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或可用于存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為允許在計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一個(gè)通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計(jì)算機(jī)時(shí),該計(jì)算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計(jì)算機(jī)系統(tǒng)組件之后,計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動(dòng)傳輸?shù)接?jì)算機(jī)存儲(chǔ)介質(zhì)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收到的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)。因而,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲(chǔ)介質(zhì)可被包括在還利用(或甚至主要利用)傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。計(jì)算機(jī)可執(zhí)行指令例如包括,當(dāng)在處理器處執(zhí)行時(shí)使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如二進(jìn)制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動(dòng)作。相反,上述特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包括個(gè)人計(jì)算機(jī)、臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、尋呼機(jī)、路由器、交換機(jī)等等。本發(fā)明也可在其中通過 網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實(shí)施。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備二者中。圖I示出了便于分層地分解消息的示例計(jì)算機(jī)架構(gòu)100。參考
圖1,計(jì)算機(jī)架構(gòu)100包括下層組件101、分解器104、幀調(diào)節(jié)器廠106、以及上層組件107。所描繪的組件中的每一個(gè)可通過系統(tǒng)總線和/或諸如例如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)和甚至因特網(wǎng)等網(wǎng)絡(luò)彼此連接。因此,所描繪的組件中的每一個(gè)以及任何其他連接的計(jì)算機(jī)系統(tǒng)及其組件都可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)交換消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議(“IP”)數(shù)據(jù)報(bào)和利用IP數(shù)據(jù)報(bào)的其他更高層協(xié)議,諸如傳輸控制協(xié)議(“TCP”)、超文本傳輸協(xié)議(“HTTP”)、簡單郵件傳輸協(xié)議(“ SMTP )等)?!比缢枥L的,下層組件101包括通信介質(zhì)102 (例如,下層傳輸組件)和可任選的分解器103。一般地,消息在通信介質(zhì)102上接收。消息可任選地通過下層組件101的其他組件(包括分解器103)來向上傳遞。分解器103可以是被可任選地包括在下層組件101中的一個(gè)或多個(gè)分解器之一。從而,可能的情況是消息從通信介質(zhì)102被直接傳遞至分解器104。另選地,消息可從通信介質(zhì)102通過被包括在下層組件101中的一個(gè)或多個(gè)可任選的分解器來傳遞。最后一個(gè)可任選的分解器隨后將消息(或其部分)傳遞至分解器104。在通過下層組件101進(jìn)行傳遞之后,消息(或其至少一部分)被向上傳遞至分解器104。在接收到消息時(shí),分解器104向幀調(diào)節(jié)器廠106指示消息類型。在某些實(shí)施例中,分解器104確定消息類型并將消息類型發(fā)送給幀調(diào)節(jié)器廠106。在其他實(shí)施例中,分解器104將消息發(fā)送給幀調(diào)節(jié)器廠106而幀調(diào)節(jié)器廠106確定消息類型。響應(yīng)于接收到消息類型,幀調(diào)節(jié)器廠106加載分解器104內(nèi)包含的幀調(diào)節(jié)器。分解器104使用幀調(diào)節(jié)器來訪問任何與接收到的消息嵌套的消息。任何被訪問的嵌套消息被單獨(dú)地向上傳遞至上層組件107。當(dāng)最后一個(gè)嵌套消息被訪問并且被向上傳遞至上層組件107時(shí),所包含的幀調(diào)節(jié)器可被銷毀。如所描繪的,上層組件107包括應(yīng)用109和可任選的分解器108。一般地,上層組件107從分解器104接收消息。消息可任選地通過上層組件107的其他組件(包括分解器108)被向上傳遞。分解器108可以是被可任選地包括在上層組件107中的一個(gè)或多個(gè)分解器之一。消息(或其至少一部分)被遞送至應(yīng)用109。諸如例如分解器103和109之類的其他可任選地包括的分解器還可利用幀調(diào)節(jié)器廠106來訪問嵌套消息。被訪問的嵌套消息隨后可被單獨(dú)地向上傳遞至上層組件。由此,多次嵌套的消息可在應(yīng)用處被訪問和處理。圖2示出了用于分層地分解消息的示例方法200的流程圖。方法200將參考計(jì)算機(jī)架構(gòu)100的組件和數(shù)據(jù)來描述。方法200包括,從一個(gè)或多個(gè)分解器組件中選出的分解器組件從組件的分層安排中緊靠著所述分解器組件下一層的組件接收消息的動(dòng)作,所述消息包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息(動(dòng)作201)。例如,分解器104可從下層組件101中的組件接收消息121。在某些實(shí)施例中,分解器104直接從通信介質(zhì)102接收消息。在其他實(shí)施例中,分解器104從分解器103或者被包括在下層組件101中的某一其他分解器接收消息。如所描繪的,消息121包含嵌套消息121AU21B等。
然而,消息121 (以及其他消息)實(shí)質(zhì)上可具有任何嵌套級別。消息可包括包含深度嵌套的消息的分層級別的批量處理的電子數(shù)據(jù)交換(EDI)消息。方法200包括分解器組件向幀調(diào)節(jié)器廠指示消息的消息類型的動(dòng)作(動(dòng)作202)。例如,分解器140可向幀調(diào)節(jié)器廠106指示(消息122的)消息類型123。消息類型123可以是由分解器104確定的消息類型。另選地,消息類型123可由幀調(diào)節(jié)器廠106在接收到消息122時(shí)確定。方法200包括幀調(diào)節(jié)器廠創(chuàng)建包含在分解器組件內(nèi)的幀調(diào)節(jié)器的動(dòng)作,所述幀調(diào)節(jié)器用于解析消息(動(dòng)作203)。例如,幀調(diào)節(jié)器廠106可創(chuàng)建包含在分解器104內(nèi)的幀調(diào)節(jié)器111。幀調(diào)節(jié)器111被配置成解析消息121。方法200包括,分解器組件向組件的分層安排中緊靠著所述分解器組件上一層的組件指示會(huì)話開始的動(dòng)作,所述會(huì)話位于所述分解器組件和緊靠著所述分解器組件上一層的組件之間(動(dòng)作204)。例如,分解器104可向上層組件107中的組件發(fā)送會(huì)話開始(SoS)141。SoS 141可被發(fā)送至被包括在上層組件107中的分解器組件,諸如例如,被發(fā)送至分解器108。另選地,SoS 141可被發(fā)送至應(yīng)用109。作為響應(yīng),可適當(dāng)?shù)卦诜纸馄?04和上層組件107中的另一組件之間,或者在分解器104和應(yīng)用109之間建立會(huì)話。對于消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息(包括最后一個(gè)嵌套消息),并且在指示會(huì)話開始之后,方法200包括,幀調(diào)節(jié)器解析消息以從消息內(nèi)包含的一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套消息的動(dòng)作(動(dòng)作205),以及分解器組件將被標(biāo)識的下一嵌套消息發(fā)送至?xí)挼膭?dòng)作(動(dòng)作206)。例如,幀調(diào)節(jié)器111可解析消息121以標(biāo)識消息121A。分解器104隨后可將消息121A發(fā)送至上層組件,不管其是另一分解器還是應(yīng)用109。接著,幀調(diào)節(jié)器111可解析消息121以標(biāo)識消息121B。分解器104隨后可將消息121B發(fā)送至上層組件,不管其是另一分解器還是應(yīng)用109。這可繼續(xù)直到消息121中包含的最后一個(gè)嵌套消息被標(biāo)識并被發(fā)送至上層組件。在將消息內(nèi)的最后一個(gè)嵌套消息發(fā)送至?xí)捴?,幀調(diào)節(jié)器可被銷毀。例如,在分解器104將消息121內(nèi)的最后一個(gè)嵌套消息發(fā)送至上層組件之后,幀調(diào)節(jié)器111可被銷毀。方法200包括,分解器向緊靠著所述分解器組件上一層的組件指示會(huì)話結(jié)束的動(dòng)作(動(dòng)作207)。例如,分解器104可將會(huì)話結(jié)束(EoS) 142發(fā)送至上層組件107中的組件,諸如例如,發(fā)送至分解器108、發(fā)送至應(yīng)用109。還可能的情況是,下層組件101中的組件(分解器或通信介質(zhì)102)將會(huì)話開始的指示發(fā)送給分解器104。例如,下層組件101中的組件可將會(huì)話開始(SoS)131發(fā)送至分解器104。作為響應(yīng),可在下層組件和分解器104之間建立會(huì)話。消息121可從下層組件通過會(huì)話被發(fā)送至分解器104。也可在下層組件和分解器104之間的會(huì)話上發(fā)送一個(gè)或多個(gè)其他消息。例如,消息122可從下層組件被發(fā)送至分解器104。如所描繪的,消息122包含嵌套消息122AU22B等。在接收到消息122時(shí),分解器104向幀調(diào)節(jié)器廠106指示消息122的消息類型。例如,分解器104可將消息類型124發(fā)送至幀調(diào)節(jié)器廠106。作為響應(yīng),幀調(diào)節(jié)器廠106可創(chuàng)建包含在分解器104內(nèi)的幀調(diào)節(jié)器112。對于消息122中包含的每一個(gè)嵌套消息,幀調(diào)節(jié)器112可解析消息122以標(biāo)識下 一嵌套消息,并且將被標(biāo)識的下一嵌套消息發(fā)送至上層組件107中的組件。例如,幀調(diào)節(jié)器112可解析消息122以標(biāo)識消息122A。分解器104隨后可將消息122A發(fā)送至上層組件,不管其是另一分解器還是應(yīng)用109。接著,幀調(diào)節(jié)器112可解析消息122以標(biāo)識消息122B。分解器104隨后可將消息122B發(fā)送至上層組件,不管其是另一分解器還是應(yīng)用109。這可繼續(xù)直到消息122中包含的最后一個(gè)嵌套消息被標(biāo)識并被發(fā)送至上層組件。當(dāng)下層組件不再具有供分解器104的消息時(shí),下層組件可指示下層組件和分解器104之間的會(huì)話結(jié)束。例如,下層組件101中的下層組件可將會(huì)話結(jié)束(EoS) 132發(fā)送至分解器104。分解器104可接收EoS 132。EoS 132向分解器104指示,下層組件不再具有供分解器104的消息。作為對EoS 132的響應(yīng),幀調(diào)節(jié)器112可被銷毀。也可以響應(yīng)于接收到 EoS 132 來發(fā)送 EoS 142。圖3示出了便于分層地分解消息的計(jì)算機(jī)架構(gòu)300。參考圖3,計(jì)算機(jī)架構(gòu)300包括下層組件301、分解器304、分解器314、以及上層組件307。所描繪的組件中的每一個(gè)可通過系統(tǒng)總線和/或諸如例如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)和甚至因特網(wǎng)等網(wǎng)絡(luò)彼此連接。因此,所描繪的組件中的每一個(gè)以及任何其他連接的計(jì)算機(jī)系統(tǒng)及其組件都可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)交換消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議(“IP”)數(shù)據(jù)報(bào)和利用IP數(shù)據(jù)報(bào)的其他更高層協(xié)議,諸如傳輸控制協(xié)議(“TCP”)、超文本傳輸協(xié)議(“HTTP”)、簡單郵件傳輸協(xié)議(“SMTP)等)。”如所描繪的,下層組件301包括通信介質(zhì)302 (例如,下層傳輸組件)和可任選的分解器303。一般地,消息在通信介質(zhì)302上接收。消息可任選地通過下層組件301的其他組件(包括分解器303)來向上傳遞。分解器303可以是被可任選地包括在下層組件301中的一個(gè)或多個(gè)分解器之一。從而,可能的情況是消息從通信介質(zhì)302被直接傳遞至分解器304。另選地,消息可從通信介質(zhì)302通過被包括在下層組件301中的一個(gè)或多個(gè)可任選的分解器來傳遞。最后一個(gè)可任選的分解器隨后將消息(或其部分)傳遞至分解器304。如所描繪的,上層組件307包括應(yīng)用309和可任選的分解器308。一般地,上層組件307從分解器314接收消息。消息可任選地通過上層組件307的其他組件(包括分解器308)來向上傳遞。分解器308可以是被可任選地包括在上層組件307中的一個(gè)或多個(gè)分解器之一。消息(或其至少一部分)被遞送至應(yīng)用309。簡要地回頭參考圖1,諸如例如分解器103和108之類的其他可任選地被包括的分解器可用于訪問隨后被單獨(dú)向上傳遞至上層組件的嵌套消息。由此,多次嵌套的消息可在應(yīng)用處被訪問和處理。計(jì)算機(jī)架構(gòu)300中的分解器可以利用或可以不利用幀調(diào)節(jié)器廠和/或幀調(diào)節(jié)器。圖4示出了用于分層地分解消息的示例方法400的流程圖。方法400將參考計(jì)算機(jī)架構(gòu)300的組件和數(shù)據(jù)來描述。在某些實(shí)施例中,下層組件301中的下層組件(例如,通信介質(zhì)302、分解器303或某一其他分解器)將會(huì)話開始(SoS) 331發(fā)送至分解器304。分解器304可從下層組件接收SoS 331。作為響應(yīng),可在下層組件和分解器304之間建立會(huì)話333。方法400包括,第一分解器組件從組件的分層安排中緊靠著所述第一分解器組件下一層的組件接收消息的動(dòng)作,所述消息包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息(動(dòng)作401)。例如,分解器304可從下層組件301中的下層組件(例如,通信介質(zhì)302、分解器303或某一其他分解器)接收消息321。如所描繪的,消息321包含嵌套消息321A、32IB等。
方法400包括,第一分解器組件向組件的分層安排中緊靠著所述第一分解器組件上一層的組件指示會(huì)話的開始的動(dòng)作,所述會(huì)話位于所述第一分解器組件和緊靠著所述第一分解器組件上一層的組件之間(動(dòng)作402)。方法400包括,第二分解器組件從組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話開始的指示的動(dòng)作,所述第一會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件下一層的組件之間,所述第一會(huì)話響應(yīng)于由所述第一分解器組件指示的會(huì)話(動(dòng)作404)。例如,分解器304可向分解器314指示會(huì)話開始(SoS) 341。分解器314可從分解器304接收SoS 341。作為響應(yīng),可在下層組件和分解器304之間建立會(huì)話343。方法400包括,第一分解器組件將消息內(nèi)的一個(gè)或多個(gè)嵌套消息之一發(fā)送至?xí)挼膭?dòng)作(動(dòng)作403)。例如,分解器304可將消息321A、321B等發(fā)送至?xí)?43。方法400包括,第二分解器組件從組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話上的消息的動(dòng)作,所述消息包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息,所述消息響應(yīng)于由所述第一分解器發(fā)送的嵌套消息(動(dòng)作405)。例如,分解器314可從分解器304接收會(huì)話343上的消息321A、321B等,可接收會(huì)話333上的消息321。如所描繪的,消息321A包含嵌套消息321AU321A2等,而消息32IB包含消息321BU321B2等。方法400包括,第二分解器組件向組件的分層安排中緊靠著所述第二分解器組件上一層的組件指示第二會(huì)話開始的動(dòng)作,所述第二會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件上一層的組件之間(動(dòng)作406)。例如,分解器314可將會(huì)話開始(SoS)361發(fā)送至上層組件307中的組件(例如,分解器308、某一其他分解器、或應(yīng)用309)。上層組件可從分解器314接收SoS 361。作為響應(yīng),可在分解器314和上層組件之間建立會(huì)話363。方法400包括,第二分解器組件在向緊靠著所述第二分解器組件上一層的組件指示所述第二會(huì)話開始之后,向其發(fā)送所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)(包括最后一個(gè)嵌套消息)的動(dòng)作(動(dòng)作407)。例如,分解器314可在會(huì)話363上將消息321A1、3211A2、321B1、321B2等發(fā)送至上層組件。動(dòng)作407可包括,第二分解器組件解析消息以從所述消息中包含的一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套消息的動(dòng)作(動(dòng)作408),以及第二分解器組件將被標(biāo)識的下一嵌套消息發(fā)送至第二會(huì)話的動(dòng)作(動(dòng)作409)。例如,分解器314可解析消息321A以標(biāo)識出消息321A1、321A2等。分解器314隨后可在會(huì)話363上將消息321A1、321A2等發(fā)送至上層組件。接著,分解器304可解析消息321B以標(biāo)識出消息321B1、321B2等。分解器314隨后可在會(huì)話363上將消息321B1、321B2等發(fā)送至上層組件。這可繼續(xù)直到消息321中包含的最后一個(gè)嵌套消息被解析并且任何嵌套消息都被發(fā)送至上層組件。當(dāng)下層組件不再具有供分解器304的消息時(shí),下層組件可指示下層組件和分解器304之間的會(huì)話結(jié)束。例如,下層組件301中的下層組件可將會(huì)話結(jié)束(EoS)332發(fā)送至分解器304。分解器304可接收EoS 332。EoS 332向分解器304指示,下層組件不再具有供分解器304的消息。方法400包括,第二分解器組件從組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話結(jié)束的指示的動(dòng)作(動(dòng)作410)。例如,當(dāng)分解器304不再具有供分解器314的消息時(shí),分解器304可指示會(huì)話343結(jié)束。例如,分解器304可向分解器314發(fā)送會(huì)話結(jié)束(EoS) 342。分解器304可接收EoS 342。EoS 342向分解器314指示,分解 器304不再具有供分解器314的消息。方法400包括,第二分解器組件在將最后一個(gè)嵌套消息發(fā)送至第二會(huì)話之后以及在將接收到第一會(huì)話結(jié)束的指示之后,向緊靠著所述第二分解器組件上一層的組件指示第二會(huì)話結(jié)束的動(dòng)作(動(dòng)作411)。例如,當(dāng)分解器314不再具有供上層組件的消息時(shí),分解器314可指示會(huì)話363結(jié)束。例如,分解器314可向上層組件發(fā)送會(huì)話結(jié)束(EoS) 362。上層組件可接收EoS 362。EoS 362向上層組件指示,分解器314不再具有供上層組件的消息。在某些實(shí)施例中,消息處理組件的分層安排在包括規(guī)范元素列表的規(guī)范中定義。例如,現(xiàn)在參考圖5,規(guī)范501包括幀調(diào)節(jié)器規(guī)范502、分解器規(guī)范503、幀調(diào)節(jié)器規(guī)范504、分解器規(guī)范506以及傳輸規(guī)范507。在運(yùn)行時(shí)期間,消息處理組件的分層安排從規(guī)范中構(gòu)建。例如,分層安排521可從規(guī)范501中構(gòu)建。如所描繪的,分層安排521包括傳輸517、分解器514、分解器512和應(yīng)用511。傳輸517根據(jù)傳輸規(guī)范507來建立。分解器514根據(jù)分解器規(guī)范506來建立。分解器512根據(jù)分解器規(guī)范503來建立。諸如例如消息522之類的消息最初在傳輸517處接收。消息在分層安排521的基礎(chǔ)上向上傳遞至應(yīng)用511。每一個(gè)分解器可處理和移除嵌套消息級別,并且將嵌套消息單獨(dú)地向上傳遞至下一組件。幀調(diào)節(jié)器可被加載(例如在運(yùn)行時(shí))以解析和標(biāo)識嵌套消息。幀調(diào)節(jié)器可根據(jù)幀調(diào)節(jié)器規(guī)范來建立。例如,幀調(diào)節(jié)器516和513可分別根據(jù)幀調(diào)節(jié)器規(guī)范504和502來建立。一般地,分解器是分層結(jié)構(gòu)中執(zhí)行組件的線性集合的一部分。然而,幀調(diào)節(jié)器不一定是執(zhí)行組件的這一線性集合的一部分。在運(yùn)行時(shí),幀調(diào)節(jié)器可以是分解器內(nèi)部的嵌套子組件,并且(例如,如先前所述的)可具有獨(dú)立于其他執(zhí)行組件的對象生存期的對象生存期。通過使幀調(diào)節(jié)器規(guī)范元素將其本身添加到共享上下文而非構(gòu)建流水線組件來實(shí)現(xiàn)適當(dāng)?shù)淖冃汀7纸馄饕?guī)范在運(yùn)行時(shí)構(gòu)建過程中遵循幀調(diào)節(jié)器規(guī)范,并且在共享上下文中尋找?guī){(diào)節(jié)器廠。在找到幀調(diào)節(jié)器廠時(shí),分解器規(guī)范使用幀調(diào)節(jié)器廠來創(chuàng)建作為參數(shù)的分解器監(jiān)聽器對象。一個(gè)分層結(jié)構(gòu)中可出現(xiàn)一個(gè)以上的幀調(diào)節(jié)器和分解器,從而產(chǎn)生了消息分解器的分層系列。由此,本發(fā)明的各實(shí)施例提供了用于分解消息的各種機(jī)制。分解器和幀調(diào)節(jié)器的功能被解耦合,以使得不同類型的消息的幀調(diào)節(jié)器可在分層結(jié)構(gòu)中的同一層處使用,而不必還改變分解器。實(shí)質(zhì)上任何分解層都可能解決任何對應(yīng)的消息嵌套層。分解可在每一消息的基礎(chǔ)上執(zhí)行或在每一會(huì)話的基礎(chǔ)上執(zhí)行。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在 所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.一種在計(jì)算機(jī)系統(tǒng)處的用于分解一個(gè)或多個(gè)消息的方法,所述計(jì)算機(jī)系統(tǒng)包括一個(gè)或多個(gè)處理器、系統(tǒng)存儲(chǔ)器和消息通信棧,所述消息通信棧具有組件的分層安排,所述組件包括下層傳輸組件、一個(gè)或多個(gè)分解器組件以及上層應(yīng)用組件,所述下層傳輸組件在所述組件的分層安排中位于所述一個(gè)或多個(gè)分解器組件和所述上層應(yīng)用組件之下,所述上層應(yīng)用組件在所述組件的分層安排中位于所述下層傳輸組件和所述一個(gè)或多個(gè)分解器組件之上,所述計(jì)算機(jī)系統(tǒng)還包括用于創(chuàng)建可被包含在所述一個(gè)或多個(gè)分解器組件內(nèi)以解析消息的幀調(diào)節(jié)器廠,所述方法包括 從所述一個(gè)或多個(gè)分解器組件中選出的分解器組件從所述組件的分層安排中緊靠著所述分解器組件下一層的組件接收消息的動(dòng)作,所述消息包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息; 所述分解器組件向所述幀調(diào)節(jié)器廠指示所述消息的消息類型的動(dòng)作; 所述幀調(diào)節(jié)器廠向所述分解器組件提供幀調(diào)節(jié)器的動(dòng)作,所述幀調(diào)節(jié)器用于解析所述消息; 所述分解器組件向所述組件的分層安排中緊靠著所述分解器組件上一層的組件指示會(huì)話開始的動(dòng)作,所述會(huì)話位于所述分解器組件和緊靠著所述分解器組件上一層的組件之間; 對于所述消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息,包括最后一個(gè)嵌套消息,以及在指示所述會(huì)話開始之后 所述幀調(diào)節(jié)器解析所述消息以從包含在所述消息中的所述一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套消息的動(dòng)作;以及 所述分解器組件將被標(biāo)識出的下一嵌套消息發(fā)送至所述會(huì)話的動(dòng)作;以及 所述分解器向緊靠著所述分解器組件上一層的組件指示所述會(huì)話結(jié)束的動(dòng)作。
2.如權(quán)利要求I所述的方法,其特征在于,還包括,所述分解器組件在從緊靠著所述分解器組件下一層的組件接收所述消息之前,從緊靠著所述分解器組件下一層的組件接收第二會(huì)話開始的指示的動(dòng)作,所述第二會(huì)話位于所述分解器組件和緊靠著所述分解器組件下一層的組件之間。
3.如權(quán)利要求2所述的方法,其特征在于,還包括 分解器組件接收所述第二會(huì)話上的第二消息的動(dòng)作; 所述分解器組件將所述第二消息發(fā)送給所述幀調(diào)節(jié)器廠的動(dòng)作; 所述幀調(diào)節(jié)器廠向所述分解器提供第二幀調(diào)節(jié)器的動(dòng)作,所述第二幀調(diào)節(jié)器用于解析所述第二消息;以及 對于所述第二消息中的一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息,包括最后一個(gè)嵌套消息 所述第二幀調(diào)節(jié)器解析所述第二消息以從包含在所述第二消息中的所述一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套消息的動(dòng)作;以及 所述分解器組件將被標(biāo)識出的下一嵌套消息發(fā)送至所述會(huì)話的動(dòng)作。
4.如權(quán)利要求3所述的方法,其特征在于,還包括,在所述分解器向緊靠著所述分解器組件上一層的組件指示所述第二會(huì)話結(jié)束之前,從緊靠著所述分解器組件下一層的組件接收所述第二會(huì)話結(jié)束的指示的動(dòng)作。
5.如權(quán)利要求3所述的方法,其特征在于,所述分解器組件接收所述第二會(huì)話上的消息的動(dòng)作包括所述分解器組件使用事務(wù)來接收所述消息的動(dòng)作;以及 其中所述分解器組件接收所述第二會(huì)話上的第二消息的動(dòng)作包括所述分解器組件使用所述事務(wù)來接收所述第二消息的動(dòng)作。
6.如權(quán)利要求I所述的方法,其特征在于,所述分解器組件從所述組件的分層安排中緊靠著所述分解器組件下一層的組件接收消息的動(dòng)作包括,所述分解器組件接收帶有事務(wù)的消息的動(dòng)作;以及 其中對于所述消息中的所述一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息,所述分解器組件將被標(biāo)識出的下一嵌套消息發(fā)送至所述會(huì)話的動(dòng)作包括,所述分解器組件使用所述事務(wù)將被標(biāo)識出的下一嵌套消息發(fā)送至所述會(huì)話的動(dòng)作。
7.一種在計(jì)算機(jī)系統(tǒng)處的用于分解一個(gè)或多個(gè)消息的方法,所述計(jì)算機(jī)系統(tǒng)包括一個(gè)或多個(gè)處理器、系統(tǒng)存儲(chǔ)器和消息通信棧,所述消息通信棧具有組件的分層安排,所述組件包括下層傳輸組件、多個(gè)分層安排的分解器組件、以及上層應(yīng)用組件,所述下層傳輸組件在所述組件的分層安排中位于所述多個(gè)分層安排的分解器組件和所述上層應(yīng)用組件之下,所述上層應(yīng)用組件在所述組件的分層安排中位于所述下層傳輸組件和所述多個(gè)分層安排的分解器組件之上,所述多個(gè)分層安排的分解器組件包括至少第一分解器組件和第二分解器組件,所述第二分解器組件在所述多個(gè)分層安排的分解器組件中位于所述第一分解器組件之上,所述方法包括 所述第一分解器組件從所述組件的分層安排中緊靠著所述第一分解器組件下一層的組件接收消息的動(dòng)作,所述消息包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息; 所述第一分解器組件向所述組件的分層安排中緊靠著所述第一分解器組件上一層的組件指示會(huì)話開始的動(dòng)作,所述會(huì)話位于所述第一分解器組件和緊靠著所述第一分解器組件上一層的組件之間; 所述第一分解器組件將所述消息內(nèi)的所述一個(gè)或多個(gè)嵌套消息之一發(fā)送給所述會(huì)話的動(dòng)作; 所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收第一會(huì)話開始的指示的動(dòng)作,所述第一會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件下一層的組件之間,所述第一會(huì)話響應(yīng)于由所述第一分解器組件指示的會(huì)話; 所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收所述第一會(huì)話上的消息的動(dòng)作,所述消息包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息,所述消息響應(yīng)于由所述第一分解器組件發(fā)送的嵌套消息; 所述第二分解器組件向所述組件的分層安排中緊靠著所述第二分解器組件上一層的組件指示第二會(huì)話開始的動(dòng)作,所述第二會(huì)話位于所述第二分解器組件和緊靠著所述第二分解器組件上一層的組件之間; 所述第二分解器組件在指示所述第二會(huì)話開始之后向緊靠著所述第二分解器組件上一層的組件發(fā)送所述消息中的所述一個(gè)或多個(gè)嵌套消息中的每一個(gè)的動(dòng)作,所述一個(gè)或多個(gè)嵌套消息中的每一個(gè)包括最后一個(gè)嵌套消息,包括 所述第二分解器組件解析所述消息以從包含在所述消息中的所述一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套消息的動(dòng)作;以及 所述第二分解器組件將被標(biāo)識出的下一嵌套消息發(fā)送至所述第二會(huì)話的動(dòng)作; 所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收所述第一會(huì)話結(jié)束的指示的動(dòng)作;以及 所述第二分解器組件在將所述最后一個(gè)嵌套消息發(fā)送至所述第二會(huì)話之后以及在接收到所述第一會(huì)話結(jié)束的指示之后,向緊靠著所述第二分解器組件上一層的組件指示所述第二會(huì)話結(jié)束的動(dòng)作。
8.如權(quán)利要求7所述的方法,其特征在于,在所述組件的分層安排中緊靠著所述第一分解器組件上一層的組件是所述第二分解器組件。
9.如權(quán)利要求7所述的方法,其特征在于,在所述組件的分層安排中緊靠著所述第一分解器組件上一層的組件包括一個(gè)或多個(gè)分層安排的消息通信組件,所述一個(gè)或多個(gè)消息通信組件中的每一個(gè)被配置成 從所述組件的分層安排中緊靠著所述消息通信組件下一層的組件接收第一會(huì)話開始的指示,所述第一會(huì)話位于所述消息通信組件和緊靠著所述消息通信組件下一層的組件之間; 向所述組件的分層安排中緊靠著所述消息通信組件上一層的組件指示第二會(huì)話開始,所述第二會(huì)話位于所述消息通信組件和緊靠著所述消息通信組件上一層的組件之間; 接收所述第一會(huì)話中的一個(gè)或多個(gè)消息中的每一個(gè)消息; 將一個(gè)或多個(gè)消息發(fā)送至所述第二會(huì)話,所發(fā)送的消息響應(yīng)于接收到的消息; 從緊靠著所述消息通信組件下一層的組件接收所述第一會(huì)話結(jié)束的指示;以及在接收到所述第一會(huì)話結(jié)束的指示之后,向緊靠著所述消息通信組件上一層的組件發(fā)送所述第二會(huì)話結(jié)束的指示。
10.如權(quán)利要求7所述的方法,其特征在于,所述第二分解器組件將被標(biāo)識出的下一嵌套消息發(fā)送至所述第二會(huì)話的動(dòng)作包括,所述第二分解器組件發(fā)送包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息的消息的動(dòng)作。
11.如權(quán)利要求10所述的方法,其特征在于,所述多個(gè)分層安排的分解器組件包括在所述第二分解器組件之上的第三分解器組件。
12.如權(quán)利要求7所述的方法,其特征在于,還包括 所述第一分解器組件將所述消息內(nèi)的所述一個(gè)或多個(gè)嵌套消息中的另一消息發(fā)送給所述會(huì)話的動(dòng)作; 所述第二分解器組件從所述組件的分層安排中緊靠著所述第二分解器組件下一層的組件接收所述第一會(huì)話上的第二消息的動(dòng)作,所述第二消息包含所述消息內(nèi)的一個(gè)或多個(gè)嵌套消息,所述第二消息響應(yīng)于由所述第一分解器組件發(fā)送的另一嵌套消息;以及 所述第二分解器組件在指示所述第二會(huì)話開始之后向緊靠著所述第二分解器組件上一層的組件發(fā)送所述第二消息中的所述一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息的動(dòng)作,所述一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息包括最后一個(gè)嵌套消息,包括 所述第二分解器組件解析所述第二消息以從包含在所述第二消息中的所述一個(gè)或多個(gè)嵌套消息中標(biāo)識出下一嵌套消息的動(dòng)作;以及 所述第二分解器組件將被標(biāo)識出的下一嵌套消息發(fā)送至所述第二會(huì)話的動(dòng)作。
13.如權(quán)利要求7所述的方法,其特征在于,所述第一分解器組件從所述組件的分層安排中緊靠著所述第一分解器組件下一層的組件接收消息的動(dòng)作包括,所述第一分解器組件使用事務(wù)來接收所述消息的動(dòng)作;且其中所述第二分解器組件向緊靠著所述第二分解器組件上一層的組件發(fā)送所述消息中的所述一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息的動(dòng)作包括,使用所述事務(wù)來發(fā)送所述消息中的所述一個(gè)或多個(gè)嵌套消息中的每一個(gè)消息的動(dòng)作。
14.一種在計(jì)算機(jī)系統(tǒng)處的用于創(chuàng)建用于分解應(yīng)用的消息的消息通信棧的方法,所述計(jì)算機(jī)系統(tǒng)包括一個(gè)或多個(gè)處理器、系統(tǒng)存儲(chǔ)器和消息通信運(yùn)行時(shí),所述消息通信運(yùn)行時(shí)被配置成從聲明性規(guī)范中構(gòu)建消息通信棧,所述方法包括 接收聲明性規(guī)范的動(dòng)作,所述聲明性規(guī)范指定了要被包括在用于分解所述應(yīng)用的消息的消息通信棧中的組件,所述聲明性規(guī)范包括傳輸組件規(guī)范、分解器組件的一個(gè)或多個(gè)實(shí)例的規(guī)范、以及一個(gè)或多個(gè)幀調(diào)節(jié)器組件規(guī)范; 所述運(yùn)行時(shí)從所述聲明性規(guī)范中創(chuàng)建消息棧的動(dòng)作,包括 形成執(zhí)行組件的分層線性集合的動(dòng)作,所述執(zhí)行組件的分層線性集合包括(a)根據(jù)所述傳輸組件規(guī)范來配置的下層傳輸組件,(b)根據(jù)所述分解器組件規(guī)范來配置的一個(gè)或多個(gè)分解器組件,每一個(gè)分解器組件分別對應(yīng)于所述分解器組件的實(shí)例之一的規(guī)范,以及(c)與所述應(yīng)用相對應(yīng)的上層應(yīng)用組件,所述下層傳輸組件在所述執(zhí)行組件的分層線性集合中位于所述一個(gè)或多個(gè)分解器組件和所述上層應(yīng)用組件之下,所述上層應(yīng)用組件在所述執(zhí)行組件的分層線性集合中位于所述下層傳輸組件和所述一個(gè)或多個(gè)分解器組件之上;以及 當(dāng)組件被添加到所述執(zhí)行組件的分層線性集合時(shí)攜帶共享上下文的動(dòng)作; 對于所述一個(gè)或多個(gè)幀調(diào)節(jié)器組件規(guī)范中的每一個(gè) 將與所述分解器組件之一相對應(yīng)的所述幀調(diào)節(jié)器組件規(guī)范添加到所述共享上下文的一部分的動(dòng)作,所述分解器組件之一是利用根據(jù)所述幀調(diào)節(jié)器組件規(guī)范來配置的幀調(diào)節(jié)器組件來解析消息的分解器組件; 對于每一個(gè)分解器組件 所述運(yùn)行時(shí)在與所述分解器組件相對應(yīng)的共享上下文的一部分中創(chuàng)建幀調(diào)節(jié)器廠的動(dòng)作,所述幀調(diào)節(jié)器廠被配置成從所述分解器組件接收消息并且向所述分解器組件返回所述消息的幀調(diào)節(jié)器組件,所述幀調(diào)節(jié)器組件用于包含在所述分解器組件內(nèi)以解析所述消息從而標(biāo)識出所述消息中包含的嵌套消息,所述幀調(diào)節(jié)器組件根據(jù)被添加到與所述分解器組件相對應(yīng)的共享上下文的一部分的所述幀調(diào)節(jié)器組件規(guī)范來配置;以及 其中每一個(gè)分解器組件被配置成 從所述執(zhí)行組件的分層線性集合中緊靠著所述分解器組件下一層的組件接收消息;以及 對于每一個(gè)接收到的消息 用所述接收到的消息來調(diào)用與所述分解器組件相對應(yīng)的幀調(diào)節(jié)器廠, 從所述幀調(diào)節(jié)器廠獲得幀調(diào)節(jié)器組件以解析所述消息從而標(biāo)識出所述消息內(nèi)包含的嵌套消息;以及 將任何嵌套消息發(fā)送至所述執(zhí)行組件的分層線性集合中緊靠著所述分解器組件上一層的組件。
15.如權(quán)利要求14所述的方法,其特征在于,所述一個(gè)或多個(gè)分解器組件中的至少一個(gè)還被配置成執(zhí)行以下動(dòng)作中的一個(gè)或多個(gè)使用會(huì)話將消息發(fā)送至另一分解器組件,并且使用會(huì)話從另一分解器組件接收消息。
全文摘要
本發(fā)明涉及用于分層地分解消息的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。分解器和幀調(diào)節(jié)器的功能被解耦合,以使得不同類型的消息的幀調(diào)節(jié)器可在分層結(jié)構(gòu)中的同一層處使用,而不必還改變分解器。實(shí)質(zhì)上任何分解層都可能解決任何對應(yīng)的消息嵌套層。分解可在每一消息的基礎(chǔ)上執(zhí)行或在每一會(huì)話的基礎(chǔ)上執(zhí)行。
文檔編號G06F9/44GK102884508SQ201180020852
公開日2013年1月16日 申請日期2011年4月21日 優(yōu)先權(quán)日2010年4月26日
發(fā)明者N·A·艾倫, J·A·泰勒, S·R·巴特雷斯, B·李 申請人:微軟公司