專利名稱:通過(guò)請(qǐng)求-響應(yīng)傳輸?shù)目煽康恼?qǐng)求-響應(yīng)消息通信的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于使用請(qǐng)求-響應(yīng)傳輸來(lái)可靠地傳遞消息的系統(tǒng)、方法和計(jì)算機(jī)程序。
背景技術(shù):
由于計(jì)算機(jī)化的系統(tǒng)越來(lái)越流行,同樣越來(lái)越需要在大型和小型網(wǎng)絡(luò)中分布計(jì)算機(jī)系統(tǒng)的文件和處理資源。一般而言,計(jì)算機(jī)系統(tǒng)和相關(guān)設(shè)備為各種原因而通過(guò)網(wǎng)絡(luò)傳遞信息,例如,為交換個(gè)人電子消息、銷售商品、提供帳戶信息等。然而,可以理解,由于計(jì)算機(jī)系統(tǒng)及其相關(guān)應(yīng)用程序變得越來(lái)越復(fù)雜,也增加了與在網(wǎng)絡(luò)上共享數(shù)據(jù)和資源相關(guān)聯(lián)的挑戰(zhàn)。
一般而言,存在用于在兩臺(tái)或多臺(tái)計(jì)算機(jī)系統(tǒng)之間分布文件和資源的多種不同的機(jī)制和協(xié)議。例如,可以用不必要求其它計(jì)算機(jī)系統(tǒng)響應(yīng)的方式將消息從一個(gè)計(jì)算機(jī)系統(tǒng)發(fā)送給一個(gè)或多個(gè)其它計(jì)算機(jī)系統(tǒng)。對(duì)此的一個(gè)示例可以是無(wú)連接協(xié)議,諸如可用于發(fā)送電子郵件消息,或使用用戶數(shù)據(jù)報(bào)協(xié)議(“UDP”)將某些內(nèi)容流傳送至其它計(jì)算機(jī)。用于共享文件或資源的其它方法可包括,使用面向連接的協(xié)議,諸如使用傳輸控制協(xié)議(“TCP”)的協(xié)議。面向連接的通信一般涉及通過(guò)一連串請(qǐng)求和響應(yīng)以及通過(guò)共享某些連接狀態(tài)信息來(lái)建立連接。從計(jì)算機(jī)發(fā)送或從中接收的數(shù)據(jù)一般含有將發(fā)送的數(shù)據(jù)與連接相關(guān)聯(lián)的某些元素。
對(duì)某些應(yīng)用程序,面向連接的通信相比無(wú)連接通信具有多個(gè)優(yōu)點(diǎn)。例如,使用TCP啟動(dòng)的連接提供用于確保在一端接收到所有的數(shù)據(jù)以及一定量的糾錯(cuò)的多個(gè)功能。例如,發(fā)送計(jì)算機(jī)可以發(fā)送分組,指示該分組為20個(gè)分組中的第一個(gè)。當(dāng)接收計(jì)算機(jī)在該連接會(huì)話中接收所有20個(gè)分組之后,它向發(fā)送計(jì)算機(jī)系統(tǒng)提交確認(rèn)(即“ack”)以指示接收了所有20個(gè)分組。在某些情況中,接收計(jì)算機(jī)系統(tǒng)甚至可以為其所接收的每一分組發(fā)送確認(rèn)。在使用可靠消息消息通信(“RM”)機(jī)制的情況中,如果發(fā)送計(jì)算機(jī)系統(tǒng)沒(méi)有接收到對(duì)每一分組的確認(rèn),或?qū)λ?0個(gè)分組的確認(rèn),那么發(fā)送計(jì)算機(jī)系統(tǒng)可以再次發(fā)送整條消息,或如果有必要,甚至可以重新發(fā)送各個(gè)分組給接收計(jì)算機(jī)。
同樣,諸如超文本傳輸協(xié)議(“HTTP”)和文件傳輸協(xié)議(“FTP”)等多種不同的組幀協(xié)議各自都疊加在面向連接的傳輸協(xié)議之上,以利用前述這些屬性中的一個(gè)或多個(gè)。例如,當(dāng)客戶計(jì)算機(jī)使用HTTP來(lái)檢索信息時(shí),客戶計(jì)算機(jī)建立與web服務(wù)器的TCP連接,并發(fā)送對(duì)諸如HTML文件或圖象等資源的HTTP請(qǐng)求,或請(qǐng)求web服務(wù)器采取某一動(dòng)作,例如,在其中客戶機(jī)可要求web服務(wù)器在線購(gòu)買歌曲并將其發(fā)送給客戶機(jī)的在線商務(wù)的情況中。web服務(wù)器接收該請(qǐng)求,并提供相應(yīng)的響應(yīng),該響應(yīng)可包含所請(qǐng)求文件的內(nèi)容。當(dāng)接收所請(qǐng)求的文件之后,或當(dāng)客戶計(jì)算機(jī)決定與web服務(wù)器的通信已完成時(shí),客戶計(jì)算機(jī)可以關(guān)閉該TCP連接。由此,從服務(wù)的觀點(diǎn)來(lái)看,客戶機(jī)不必是可尋址的。例如,客戶機(jī)可以位于在網(wǎng)絡(luò)地址翻譯(NAT)服務(wù)器之后,或利用HTTP代理服務(wù)器來(lái)跨過(guò)防火墻建立連接。另一個(gè)好處是,請(qǐng)求和響應(yīng)可以容易地相關(guān),每一響應(yīng)與其之前的請(qǐng)求相關(guān)。
盡管請(qǐng)求-響應(yīng)機(jī)制有這些和其它優(yōu)點(diǎn),但是一般不存在請(qǐng)求或響應(yīng)計(jì)算機(jī)了解信息是否被成功傳送的特定方式。例如,請(qǐng)求可能已到達(dá)服務(wù)器,服務(wù)器可能已生成響應(yīng),但由于HTTP代理服務(wù)器出錯(cuò)而丟失該響應(yīng)。從而,在常規(guī)的請(qǐng)求-響應(yīng)機(jī)制中,請(qǐng)求計(jì)算機(jī)系統(tǒng)在從其它計(jì)算機(jī)系統(tǒng)中沒(méi)有接收到響應(yīng)的情況下往往會(huì)重發(fā)該請(qǐng)求。例如,常規(guī)web瀏覽器通常提供可用于在不能下載網(wǎng)頁(yè)時(shí)重試HTTP請(qǐng)求的“刷新”按鈕。在某些情況中,諸如使用對(duì)因特網(wǎng)網(wǎng)頁(yè)的簡(jiǎn)單請(qǐng)求,重復(fù)表面上已失敗的請(qǐng)求正常地不會(huì)有有害的影響。在其它情況中,諸如使用非冪運(yùn)算,重復(fù)表面上已失敗的請(qǐng)求,或重發(fā)看上去沒(méi)有被正確發(fā)送的消息可能會(huì)有累積的影響,這有可能是有害的。例如,客戶計(jì)算機(jī)可由于沒(méi)有從銀行服務(wù)器接收到指示原始的匯款成功的響應(yīng)而向該銀行服務(wù)器重發(fā)匯款請(qǐng)求。響應(yīng)的缺失不必是指示請(qǐng)求沒(méi)有被接收或處理。例如,可能已經(jīng)接收并處理了請(qǐng)求,但由于暫時(shí)的網(wǎng)絡(luò)斷開(kāi)或HTTP代理服務(wù)器故障而丟失了響應(yīng)。該銀行從而可能在重試請(qǐng)求之后將匯款的數(shù)量翻倍,盡管這不是客戶機(jī)的意圖。
諸如此類的困難在其中響應(yīng)計(jì)算機(jī)系統(tǒng)(例如,銀行服務(wù)器)不能與請(qǐng)求計(jì)算機(jī)系統(tǒng)(例如,客戶機(jī)銀行顧客)直接通信以了解請(qǐng)求的狀態(tài)的連接中尤其尖銳。例如,客戶計(jì)算機(jī)系統(tǒng)可在連接中匿名通信,或可以位于在防火墻之后,或可服從網(wǎng)絡(luò)地址翻譯(“NAT”)服務(wù)。在諸如此類的情況中,一般僅有客戶機(jī)(即請(qǐng)求)計(jì)算機(jī)系統(tǒng)才能啟動(dòng)通信。在響應(yīng)計(jì)算機(jī)系統(tǒng)(例如,網(wǎng)絡(luò)服務(wù)器)想要向請(qǐng)求者發(fā)送接收確認(rèn)和響應(yīng)重發(fā)的情況中,可能會(huì)對(duì)響應(yīng)計(jì)算機(jī)系統(tǒng)造成困難。具體地,在常規(guī)的請(qǐng)求-響應(yīng)協(xié)議中,目前沒(méi)有用于確保兩個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)之間的可靠消息傳送的有效機(jī)制,尤其是當(dāng)影響不應(yīng)被累積時(shí)不累積消息的影響且允許消息僅以所期望的特定順序處理的機(jī)制。
從而,確保可靠的請(qǐng)求-響應(yīng)機(jī)制的系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品將成為本領(lǐng)域中的優(yōu)勢(shì)。具體地,可以使用允許在網(wǎng)絡(luò)連接的請(qǐng)求和響應(yīng)計(jì)算機(jī)系統(tǒng)之間的有效請(qǐng)求和響應(yīng)消息以及對(duì)其的相應(yīng)確認(rèn)的請(qǐng)求-響應(yīng)機(jī)制來(lái)實(shí)現(xiàn)該優(yōu)勢(shì)。此外,可以用在無(wú)論請(qǐng)求計(jì)算機(jī)的地址是否可被標(biāo)識(shí),在地址難以確定或無(wú)法確定的連接中,或在從服務(wù)器無(wú)法連接這樣的地址的情況中都可實(shí)現(xiàn)的有效的請(qǐng)求-響應(yīng)機(jī)制來(lái)實(shí)現(xiàn)該優(yōu)勢(shì)。
發(fā)明內(nèi)容
本發(fā)明使用被配置成確保請(qǐng)求-響應(yīng)環(huán)境中的可靠消息通信的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品解決了現(xiàn)有技術(shù)中的一個(gè)或多個(gè)前述問(wèn)題。具體地,本發(fā)明的實(shí)現(xiàn)部分地涉及這樣一種特定請(qǐng)求和響應(yīng)機(jī)制,該機(jī)制在響應(yīng)計(jì)算機(jī)系統(tǒng)上施加約束,用于僅以預(yù)期的方式處理由請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送的消息。
例如,從請(qǐng)求計(jì)算機(jī)系統(tǒng)的觀點(diǎn)來(lái)看的一種方法包括建立與響應(yīng)計(jì)算機(jī)系統(tǒng)的端對(duì)端連接。在一種實(shí)現(xiàn)中,使用指示處理在響應(yīng)計(jì)算機(jī)系統(tǒng)處如何發(fā)生的連接契約來(lái)建立該端對(duì)端連接。該方法也包括向響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送第一消息,其中第一消息包含第一標(biāo)識(shí)符。從請(qǐng)求計(jì)算機(jī)系統(tǒng)的觀點(diǎn)來(lái)看,該方法也包括從響應(yīng)計(jì)算機(jī)系統(tǒng)接收響應(yīng)消息。
另外,當(dāng)適當(dāng)?shù)卮_認(rèn)了所有請(qǐng)求和響應(yīng)消息之后,從請(qǐng)求計(jì)算機(jī)系統(tǒng)的觀點(diǎn)來(lái)看,該方法也包括發(fā)送連接終止消息給響應(yīng)計(jì)算機(jī)系統(tǒng)。在一種實(shí)現(xiàn)中,該終止消息可包含終止消息標(biāo)識(shí)符,以及表示已經(jīng)接收到由響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送的所有響應(yīng)消息的確認(rèn)。之后,當(dāng)請(qǐng)求計(jì)算機(jī)系統(tǒng)接收到關(guān)于該終止消息標(biāo)識(shí)符的終止響應(yīng)消息時(shí),該端對(duì)端連接終止。
與此形成對(duì)比,從響應(yīng)計(jì)算機(jī)系統(tǒng)的觀點(diǎn)來(lái)看的一種方法包括接受與該請(qǐng)求計(jì)算機(jī)系統(tǒng)的端對(duì)端連接。在一種實(shí)現(xiàn)中,這也涉及指導(dǎo)處理所接收到的消息的方式的契約。從響應(yīng)計(jì)算機(jī)系統(tǒng)的觀點(diǎn)來(lái)看,該方法也包括從請(qǐng)求計(jì)算機(jī)系統(tǒng)接收第一消息,其中該第一消息包含第一標(biāo)識(shí)符。該響應(yīng)計(jì)算機(jī)系統(tǒng)然后向請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送響應(yīng)消息。
當(dāng)由請(qǐng)求計(jì)算機(jī)系統(tǒng)接收所有適當(dāng)?shù)捻憫?yīng)消息之后,響應(yīng)計(jì)算機(jī)系統(tǒng)從請(qǐng)求計(jì)算機(jī)系統(tǒng)接收連接終止消息。該終止消息一般包含終止消息標(biāo)識(shí)符,以及表示已經(jīng)接收所有響應(yīng)消息的來(lái)自請(qǐng)求計(jì)算機(jī)系統(tǒng)的確認(rèn)。響應(yīng)計(jì)算機(jī)系統(tǒng)然后發(fā)送關(guān)于該終止消息標(biāo)識(shí)符的終止響應(yīng)消息。從而,請(qǐng)求和響應(yīng)計(jì)算機(jī)系統(tǒng)均在該端對(duì)端連接中確認(rèn)了特定消息的接收。
本發(fā)明的示例性實(shí)現(xiàn)的其它特征和優(yōu)點(diǎn)將在隨后的描述中描繪,且其中部分可通過(guò)閱讀該描述而變得明顯,或者可以通過(guò)實(shí)現(xiàn)本發(fā)明來(lái)領(lǐng)會(huì)。這樣的實(shí)現(xiàn)的特征和優(yōu)點(diǎn)可以通過(guò)所附權(quán)利要求書(shū)中特別指出的裝置及其組合來(lái)實(shí)現(xiàn)和獲取。通過(guò)閱讀以下描述和所附權(quán)利要求書(shū),這些和其它特征將是顯而易見(jiàn)的,或者也可以通過(guò)如之后所述對(duì)本發(fā)明的實(shí)現(xiàn)來(lái)領(lǐng)會(huì)。
為了描述可獲取本發(fā)明的上述及其它優(yōu)點(diǎn)和特征的方式,將通過(guò)參考在附圖中示出的特定實(shí)施例來(lái)呈現(xiàn)對(duì)以上簡(jiǎn)要描述的本發(fā)明的更具體的描述??梢岳斫?,這些附圖僅描述本發(fā)明的典型實(shí)施例,從而不應(yīng)被認(rèn)為是對(duì)本發(fā)明的范圍的限制,本發(fā)明將通過(guò)使用附圖以附加的特性和細(xì)節(jié)來(lái)描述和說(shuō)明,附圖中圖1示出了根據(jù)本發(fā)明的請(qǐng)求-響應(yīng)序列,其中由請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送的消息由響應(yīng)計(jì)算機(jī)系統(tǒng)適當(dāng)?shù)卮_認(rèn);圖2示出了根據(jù)本發(fā)明的請(qǐng)求-響應(yīng)序列,其中來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)的至少一條響應(yīng)消息失敗;圖3示出了根據(jù)本發(fā)明的請(qǐng)求-響應(yīng)序列,其中由請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送的至少一條請(qǐng)求消息失敗;圖4示出了根據(jù)本發(fā)明,從請(qǐng)求計(jì)算機(jī)觀點(diǎn)和從響應(yīng)計(jì)算機(jī)觀點(diǎn)來(lái)看,用于以可靠的請(qǐng)求-響應(yīng)方式傳遞消息和響應(yīng)并交換確認(rèn)的方法;以及圖5示出了用于實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)實(shí)現(xiàn)的合適的計(jì)算環(huán)境。
具體實(shí)施例方式
本發(fā)明提供了被配置成在請(qǐng)求-響應(yīng)環(huán)境中確保可靠消息通信的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。具體地,本發(fā)明的實(shí)現(xiàn)部分地涉及這樣一種特定請(qǐng)求-響應(yīng)機(jī)制,該機(jī)制在響應(yīng)計(jì)算機(jī)系統(tǒng)上施加約束以僅以所預(yù)期的方式處理由請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送的消息。
從本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)中可以理解,本發(fā)明的一方面涉及在請(qǐng)求計(jì)算機(jī)系統(tǒng)和響應(yīng)計(jì)算機(jī)系統(tǒng)之間建立唯一標(biāo)識(shí)來(lái)自兩個(gè)計(jì)算機(jī)系統(tǒng)的消息的端對(duì)端的連接。本發(fā)明的另一方面涉及向響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送請(qǐng)求消息,隨后是來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)的響應(yīng)消息。響應(yīng)計(jì)算機(jī)系統(tǒng)確認(rèn)來(lái)自請(qǐng)求計(jì)算機(jī)系統(tǒng)的請(qǐng)求消息,而請(qǐng)求計(jì)算機(jī)系統(tǒng)確認(rèn)來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)的響應(yīng)消息。本發(fā)明的又一方面涉及以同樣實(shí)現(xiàn)來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)的終止確認(rèn)消息的方式來(lái)終止通信。
例如,圖1示出了根據(jù)本發(fā)明的請(qǐng)求-響應(yīng)序列,其中由請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送的所有消息都被響應(yīng)計(jì)算機(jī)系統(tǒng)105適當(dāng)?shù)卮_認(rèn),反之亦然。一般而言,此處描述的端對(duì)端連接可以疊加在諸如TCP等提供請(qǐng)求-響應(yīng)交互的任何類型的網(wǎng)絡(luò)連接之上,其上是諸如HTTP等分層的請(qǐng)求-響應(yīng)組幀協(xié)議。當(dāng)然,存在根據(jù)本發(fā)明可實(shí)現(xiàn)的其它請(qǐng)求-響應(yīng)傳輸和組幀協(xié)議。
在任何情況中,圖1示出請(qǐng)求計(jì)算機(jī)系統(tǒng)100通過(guò)發(fā)送連接啟動(dòng)請(qǐng)求消息110“創(chuàng)建序列[提供=A]”給響應(yīng)計(jì)算機(jī)系統(tǒng)105來(lái)啟動(dòng)端對(duì)端連接。該端對(duì)端連接可以持久保存在一個(gè)或多個(gè)底層網(wǎng)絡(luò)連接上,使得同一時(shí)間在請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105之間可存在一個(gè)或多個(gè)傳輸連接,它們使用端對(duì)端連接標(biāo)識(shí)符來(lái)區(qū)分。請(qǐng)求消息110包括可由響應(yīng)計(jì)算機(jī)系統(tǒng)105用于該端對(duì)端連接中的所有消息的標(biāo)識(shí)“A”。圖1也示出了響應(yīng)計(jì)算機(jī)系統(tǒng)105對(duì)已建立的連接以響應(yīng)120“創(chuàng)建序列響應(yīng)[B]”來(lái)接受該連接。響應(yīng)消息120包括標(biāo)識(shí)“B”,它可由請(qǐng)求計(jì)算機(jī)系統(tǒng)100用于其在該已建立的端對(duì)端連接中發(fā)送的所有消息。
當(dāng)在請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105之間建立端對(duì)端連接或在此之前,這兩臺(tái)計(jì)算機(jī)也可以設(shè)置連接“契約”。例如,連接請(qǐng)求消息110可包括連接契約的標(biāo)識(shí)(未示出),它是在消息120中的達(dá)成一致的。連接契約可包括可為任何數(shù)量的端點(diǎn)配置的任何數(shù)量的指令。例如,在一個(gè)實(shí)現(xiàn)中,連接契約要求由響應(yīng)計(jì)算機(jī)系統(tǒng)105接收的每一消息被處理“正好一次”、或“至多一次”或“至少一次”。
在另一實(shí)現(xiàn)中,連接契約指示處理以有序的方式,或僅當(dāng)請(qǐng)求計(jì)算機(jī)系統(tǒng)100確認(rèn)對(duì)來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)105的所有響應(yīng)消息的接收之后發(fā)生。例如,可要求響應(yīng)計(jì)算機(jī)系統(tǒng)105高速緩存所有接收到的消息;并當(dāng)(無(wú)論以何種順序)接收到所有消息并由請(qǐng)求計(jì)算機(jī)系統(tǒng)100適當(dāng)?shù)卮_認(rèn)之后,響應(yīng)計(jì)算機(jī)系統(tǒng)105然后才能以特定的順序處理所接收的消息。響應(yīng)計(jì)算機(jī)系統(tǒng)105然后準(zhǔn)備將在稍后由請(qǐng)求計(jì)算機(jī)系統(tǒng)100拉取(pull)的響應(yīng)。
當(dāng)建立了端對(duì)端連接(及相關(guān)契約)之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100向響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送該端對(duì)端連接的第一消息130。第一消息130“序列[B,1]ID[α]”包含標(biāo)識(shí)符“B”,這是由響應(yīng)計(jì)算機(jī)系統(tǒng)105在消息120中提供的。消息130也包括對(duì)第一消息130的序數(shù)“1”(即,“B,1”),以及單獨(dú)的第一標(biāo)識(shí)符“α”。除第一消息130的相對(duì)序數(shù)“1”之外,第一標(biāo)識(shí)符“α”唯一地標(biāo)識(shí)消息130。當(dāng)接收到第一消息130之后,響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送響應(yīng)消息140“序列[A,1],確認(rèn)[B1-1],關(guān)于[α]”,它關(guān)于第一標(biāo)識(shí)符“α”并包含確認(rèn)“確認(rèn)[B1-1]”,它指示哪一條請(qǐng)求消息已被響應(yīng)計(jì)算機(jī)系統(tǒng)105接收。
在一個(gè)實(shí)現(xiàn)中,諸如當(dāng)請(qǐng)求和響應(yīng)在通信棧的傳輸層上相關(guān)時(shí),響應(yīng)消息140僅可在用于傳遞第一消息130的傳輸連接的回復(fù)支路上發(fā)送給請(qǐng)求計(jì)算機(jī)系統(tǒng)100。在另一實(shí)現(xiàn)中,諸如當(dāng)請(qǐng)求和響應(yīng)在通信棧的消息層上相關(guān)時(shí),響應(yīng)消息140僅可在由請(qǐng)求計(jì)算機(jī)系統(tǒng)100建立的任何傳輸連接的回復(fù)支路上返回給請(qǐng)求計(jì)算機(jī)系統(tǒng)100。這在一種實(shí)現(xiàn)中是可能的,因?yàn)樵谙⑼ㄐ艑酉嚓P(guān)的消息可包含請(qǐng)求計(jì)算機(jī)系統(tǒng)100的某些相關(guān)信息,這允許請(qǐng)求計(jì)算機(jī)系統(tǒng)100將響應(yīng)消息與它之前發(fā)送的請(qǐng)求消息進(jìn)行匹配。例如,來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)105的回復(fù)消息可能失敗,且附加在之后的回復(fù)上的后繼確認(rèn)可指示實(shí)際接收了之前的請(qǐng)求。同樣,請(qǐng)求計(jì)算機(jī)系統(tǒng)100可以為最后的回復(fù)發(fā)送確認(rèn),指示之前的回復(fù)丟失。響應(yīng)計(jì)算機(jī)系統(tǒng)105可以使用從請(qǐng)求計(jì)算機(jī)系統(tǒng)100接收到的確認(rèn)消息的回復(fù)支路來(lái)重發(fā)回復(fù)消息,并在消息中提供相關(guān)信息(例如,“關(guān)于[α]”)。
在任何情況中,圖1示出了響應(yīng)消息140包含標(biāo)識(shí)“A,1”,指示消息140是由響應(yīng)計(jì)算機(jī)系統(tǒng)105為已建立的端對(duì)端連接(“A”)發(fā)送的第一條消息(“1”)。響應(yīng)消息140也包含確認(rèn)“確認(rèn)[B1-1]”,它確認(rèn)響應(yīng)計(jì)算機(jī)系統(tǒng)105含有在由請(qǐng)求計(jì)算機(jī)系統(tǒng)100使用的端對(duì)端連接標(biāo)識(shí)符“B”上發(fā)送的消息1至1。響應(yīng)消息140也指示消息140關(guān)于(即,“關(guān)于”)第一標(biāo)識(shí)符“α”,它向請(qǐng)求計(jì)算機(jī)系統(tǒng)100指示,消息140是對(duì)第一請(qǐng)求消息(即“ID[α]”)的響應(yīng)。
請(qǐng)求計(jì)算機(jī)系統(tǒng)100也發(fā)送第二消息150“序列[B,2,最后],確認(rèn)[A1-1]ID[β]”。第二消息150包含標(biāo)識(shí)“B,2”,它指示消息150是由計(jì)算機(jī)系統(tǒng)100在其已建立的端對(duì)端連接的標(biāo)識(shí)符(即,“B”)上發(fā)送的第二條消息。第二消息150也包含標(biāo)識(shí)符“最后”,指示消息150是由計(jì)算機(jī)系統(tǒng)100在其已建立的端對(duì)端的標(biāo)識(shí)符“B”上發(fā)送的應(yīng)用程序消息中的最后一條。第二消息150還包含確認(rèn)“確認(rèn)[A,1-1]”,它向響應(yīng)計(jì)算機(jī)系統(tǒng)105確認(rèn),請(qǐng)求計(jì)算機(jī)系統(tǒng)100已接收到回復(fù)消息140。另外,第二消息150包含特別標(biāo)識(shí)消息150的第二標(biāo)識(shí)符“β”,而無(wú)論該消息在發(fā)送該消息的序列中的序數(shù)是什么(即,“B,1”、“B,2”等)。
同樣,圖1示出了響應(yīng)計(jì)算機(jī)系統(tǒng)105接收消息150,并以響應(yīng)消息160“序列[A,2,最后],確認(rèn)[B,1-2],關(guān)于[β]”回復(fù)。響應(yīng)消息160包含標(biāo)識(shí)“A,2,最后”,指示消息160是由響應(yīng)計(jì)算機(jī)系統(tǒng)105以其已建立端對(duì)端連接的標(biāo)識(shí)符“A”發(fā)送的第二條確認(rèn)消息;且消息160是在接收計(jì)算機(jī)系統(tǒng)的已建立端對(duì)端連接的標(biāo)識(shí)符(“A”)上發(fā)送的“最后”一條消息。響應(yīng)消息160還包含確認(rèn)“確認(rèn)[B,1-2]”,標(biāo)識(shí)響應(yīng)計(jì)算機(jī)系統(tǒng)105已在由請(qǐng)求計(jì)算機(jī)系統(tǒng)100使用的端對(duì)端連接標(biāo)識(shí)符(“B”)上接收順序編號(hào)的消息1至2。另外,響應(yīng)消息160包括第二標(biāo)識(shí)符“β”,它向請(qǐng)求計(jì)算機(jī)系統(tǒng)100指示,這是對(duì)之前發(fā)送的第二請(qǐng)求消息150(即,“ID[β]”)的響應(yīng)。
當(dāng)接收到響應(yīng)消息160之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100確定成功地結(jié)束了消息交換,并啟動(dòng)終止該已建立的端對(duì)端連接的步驟。具體地,圖1示出請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送連接終止消息170“終止[B],確認(rèn)[A,1-2]ID[γ]”。連接終止消息170包括標(biāo)識(shí)終止的端對(duì)端連接的標(biāo)識(shí)符“B”,也包含確認(rèn)“確認(rèn)[A,1-2]”。確認(rèn)“確認(rèn)[A,1-1]”指示請(qǐng)求計(jì)算機(jī)系統(tǒng)100已經(jīng)從響應(yīng)計(jì)算機(jī)系統(tǒng)105接收到了第一和第二響應(yīng)消息(即,140、160)。連接終止消息170也包含終止消息標(biāo)識(shí)符“γ”,它唯一標(biāo)識(shí)了消息170。
響應(yīng)計(jì)算機(jī)系統(tǒng)105以終止響應(yīng)消息180“終止[A],關(guān)于[γ]”回復(fù)。響應(yīng)確認(rèn)180包括指示終止哪個(gè)端對(duì)端連接的標(biāo)識(shí)符“A”。響應(yīng)確認(rèn)180也包含指示該確認(rèn)“關(guān)于”終止消息標(biāo)識(shí)符“γ”的指示。這可用于向請(qǐng)求計(jì)算機(jī)系統(tǒng)100證實(shí)響應(yīng)計(jì)算機(jī)系統(tǒng)105的確接收到特定的連接終止消息180。因此,圖1示出了請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105不僅僅提供對(duì)所接收到的一個(gè)或一組消息的普通確認(rèn)。具體地,建立的端對(duì)端連接中的請(qǐng)求和響應(yīng)計(jì)算機(jī)系統(tǒng)可以提供豐富的消息信息以及處理的某種順序,這些消息信息可用于將特定消息與這些消息的特定確認(rèn)相關(guān)。
圖2示出了類似于圖1的請(qǐng)求-響應(yīng)情形,不同之處在于來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)105的響應(yīng)消息之一失敗。具體地,圖2示出了請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105使用實(shí)際上類似于圖1的消息110和120的消息200和210建立端對(duì)端連接。在建立了端對(duì)端連接之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送第一請(qǐng)求消息220“序列[B,1],ID[α]”,它實(shí)際上類似于圖1的消息130,且包含第一標(biāo)識(shí)符“α”。圖2也示出響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送響應(yīng)消息240“序列[A,1],確認(rèn)[B,1-1]關(guān)于[α]”,盡管圖2示出消息240沒(méi)有到達(dá)請(qǐng)求計(jì)算機(jī)系統(tǒng)100。
在接收任何其它響應(yīng)消息之前,請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送第二請(qǐng)求消息230“序列[B,2,最后],ID[β]”,除了消息230不包含任何確認(rèn)(例如,“確認(rèn)[##]”)之外,它實(shí)際上與圖1的消息150類似。具體地,消息230向響應(yīng)計(jì)算機(jī)系統(tǒng)105指示,請(qǐng)求計(jì)算機(jī)系統(tǒng)100沒(méi)有接收到響應(yīng)消息(即,消息240a沒(méi)有被接收),即使響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送了該響應(yīng)消息。盡管如此,響應(yīng)計(jì)算機(jī)系統(tǒng)105以響應(yīng)消息250“序列[A,2],確認(rèn)[B,1-2]關(guān)于[β]”來(lái)響應(yīng)于消息230。消息250指示它是來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)105的第二條消息(即,“A,2”),且響應(yīng)計(jì)算機(jī)系統(tǒng)105已經(jīng)接收到從請(qǐng)求計(jì)算機(jī)系統(tǒng)100順序發(fā)送的兩條消息(即,“B1-2”)。消息250包含第二標(biāo)識(shí)符“β”,它向請(qǐng)求計(jì)算機(jī)系統(tǒng)100指示消息250是對(duì)第二請(qǐng)求消息230(即,“ID[β]”)的響應(yīng)。
接收到消息250之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100認(rèn)識(shí)到響應(yīng)計(jì)算機(jī)系統(tǒng)105相信它已經(jīng)回復(fù)了消息220和230兩者,因?yàn)橄?50被標(biāo)識(shí)為序列中的第二消息(即,“序列[A,2]”)。然而,因?yàn)檎?qǐng)求計(jì)算機(jī)系統(tǒng)100從未接收來(lái)自響應(yīng)計(jì)算機(jī)系統(tǒng)105的關(guān)于第一標(biāo)識(shí)符“α”的特定響應(yīng)消息(即,沒(méi)有接收消息240),所以請(qǐng)求計(jì)算機(jī)系統(tǒng)100重新發(fā)送消息260“序列[B,1],確認(rèn)[A,2],ID[α]”。在某些方面,消息260僅是消息220的副本,因?yàn)樗甘具@是由請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送的序列中的第一消息的標(biāo)識(shí)符“B,1”,且因?yàn)橄?60包含第一標(biāo)識(shí)符“α”。盡管如此,消息260在其它方面是獨(dú)特的,因?yàn)樗_認(rèn)“確認(rèn)[A,2]”(而不是“A,1-2”),這告知響應(yīng)計(jì)算機(jī)系統(tǒng)105僅接收到響應(yīng)消息250“A,2”(而不是消息240“A,1”和250“A,2”兩者)。
當(dāng)接收消息260時(shí),響應(yīng)計(jì)算機(jī)系統(tǒng)105不必重新處理標(biāo)識(shí)為“α”的消息,相反,作為連接契約的一部分丟棄消息260。例如,如果連接契約要求“正好一次”或“至多一次”處理,那么響應(yīng)計(jì)算機(jī)系統(tǒng)105可丟棄消息260。在該情形中,響應(yīng)消息將被高速緩存直到被確認(rèn),然后可在對(duì)重發(fā)的響應(yīng)中被重新發(fā)送給請(qǐng)求計(jì)算機(jī)系統(tǒng)100。或者,如果連接契約規(guī)定“至少一次”處理,則響應(yīng)計(jì)算機(jī)系統(tǒng)105可處理消息220和260兩者。例如,消息260可以是消息220的更新的版本,盡管消息220和260在大多數(shù)其它方面是完全相同的。
在任何情況中,圖2示出了響應(yīng)計(jì)算機(jī)系統(tǒng)105以響應(yīng)消息270“序列[A,1],確認(rèn)[B,1-2]關(guān)于[α]”回復(fù)。響應(yīng)消息270標(biāo)識(shí)了(即“A,1”)它本質(zhì)上是第一響應(yīng)消息240的副本。然而,消息270也包含確認(rèn)“確認(rèn)[B,1-2]”,指示它已經(jīng)接收到由請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送的消息220和230兩者。另外,“關(guān)于”字段中的唯一第一標(biāo)識(shí)符“α”向請(qǐng)求計(jì)算機(jī)系統(tǒng)指示,響應(yīng)消息270是對(duì)第一請(qǐng)求消息(“ID[α]”)的響應(yīng)。
假定請(qǐng)求計(jì)算機(jī)系統(tǒng)100這次接收到消息270,那么請(qǐng)求計(jì)算機(jī)系統(tǒng)100啟動(dòng)終止該端對(duì)端連接的步驟。然而可以理解,請(qǐng)求消息220和260的反復(fù)以及響應(yīng)消息240和270的反復(fù)可以不斷地被重新發(fā)送,直到兩個(gè)計(jì)算機(jī)系統(tǒng)都充分地確認(rèn)了彼此的消息。例如,在一個(gè)實(shí)現(xiàn)中,請(qǐng)求計(jì)算機(jī)系統(tǒng)100可被配置成在重新發(fā)送之前發(fā)送的請(qǐng)求消息之前為每一響應(yīng)消息等待預(yù)定的時(shí)間(一秒、幾秒、幾分鐘等)?;蛘撸?qǐng)求計(jì)算機(jī)系統(tǒng)100可被配置成每當(dāng)從中介節(jié)點(diǎn)(例如,HTTP代理服務(wù)器)接收到傳輸錯(cuò)誤就重新發(fā)送之前發(fā)送的請(qǐng)求消息。
無(wú)論請(qǐng)求計(jì)算機(jī)系統(tǒng)100是被配置成檢查還是重新發(fā)送消息,響應(yīng)計(jì)算機(jī)系統(tǒng)105都被限于根據(jù)連接契約處理任何或所有接收到的消息。在任何情況中,為了關(guān)閉已建立的端對(duì)端連接,請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送連接終止消息280“終止[B]確認(rèn)[A,1-2],ID[γ]”,且響應(yīng)計(jì)算機(jī)系統(tǒng)以終止響應(yīng)消息290“終止[A],關(guān)于[γ]”回復(fù),該消息關(guān)于終止消息標(biāo)識(shí)符“γ”。從而,消息280和290實(shí)質(zhì)上提供了如對(duì)圖1的消息170和180分別描述的相同功能。
圖3示出了類似于之前附圖的請(qǐng)求-響應(yīng)情形,不同之處在于示出了其中由請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送的至少一條消息失敗的情形。例如,圖3示出請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105使用各自的請(qǐng)求和響應(yīng)消息300“創(chuàng)建序列[提供=A]”和310“創(chuàng)建序列響應(yīng)[B]”建立了端對(duì)端連接。在建立端對(duì)端連接之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送含有第一標(biāo)識(shí)符“α”的第一消息320“序列[B,1],ID[α]”,也發(fā)送含有第二標(biāo)識(shí)符“β”的第二消息330a“序列[B,2],ID[β]”。當(dāng)接收到第一消息320之后,在請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送消息330a稍前或稍后,響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送響應(yīng)消息350“序列[A,1],確認(rèn)[B,1-1]關(guān)于[α]”。
在接收消息350之前,請(qǐng)求計(jì)算機(jī)系統(tǒng)100也發(fā)送含有第三標(biāo)識(shí)符“γ”的第三消息340“序列[B,3,最后],ID[γ]”。消息320、330a或340都不包含諸如圖1和2中的對(duì)響應(yīng)消息的任何確認(rèn)指示符,因?yàn)檎?qǐng)求計(jì)算機(jī)系統(tǒng)100還沒(méi)有從響應(yīng)計(jì)算機(jī)系統(tǒng)105接收到任何響應(yīng)消息。最后,當(dāng)請(qǐng)求計(jì)算機(jī)系統(tǒng)100接收到響應(yīng)消息350時(shí),請(qǐng)求計(jì)算機(jī)系統(tǒng)100緊接著接收消息320之后立即標(biāo)識(shí)響應(yīng)消息350是響應(yīng)于由“ID[α]”標(biāo)識(shí)的第一消息320而發(fā)送的。該標(biāo)識(shí)是可能的,因?yàn)檎?qǐng)求計(jì)算機(jī)系統(tǒng)100指定“關(guān)于[α]”,這指示消息350是對(duì)第一請(qǐng)求消息320的響應(yīng)消息。
圖3也示出響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送響應(yīng)消息“序列[A,2],確認(rèn)[B,1,3]關(guān)于[γ]”,它僅是由響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送的第二響應(yīng)(即,“A,2”)。在該情形中,連接契約不施加任何排序要求,這允許在接收第二消息330a(沒(méi)有到達(dá))之前發(fā)送第三要求340以由響應(yīng)系統(tǒng)105處理。消息360也使用標(biāo)識(shí)符“確認(rèn)[B,1,3]”指示響應(yīng)計(jì)算機(jī)系統(tǒng)105已經(jīng)接收到消息320和340。另外,因?yàn)橄?60也包含第三標(biāo)識(shí)符“γ”,消息360向請(qǐng)求計(jì)算機(jī)100指示,該回復(fù)是響應(yīng)于帶有該相同標(biāo)識(shí)符“γ”的消息340。
因?yàn)檎?qǐng)求計(jì)算機(jī)100含有僅對(duì)接收消息320和340的證實(shí),請(qǐng)求計(jì)算機(jī)系統(tǒng)100重新發(fā)送第二消息330a。具體地,圖1示出了請(qǐng)求計(jì)算機(jī)系統(tǒng)100將消息330a作為消息330b“序列[B,2],確認(rèn)[A,1-2],ID[β]”重新發(fā)送。消息330b指示它是發(fā)送的第二消息“B,2”,也指示(“確認(rèn)[A,1-2]”)已經(jīng)接收第一和第二響應(yīng)消息350和360。消息330b也包含標(biāo)識(shí)符“β”,該標(biāo)識(shí)符也包含在消息330a內(nèi)。在接收消息330b之后,響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送響應(yīng)消息370“序列[A,3],確認(rèn)[B,1-3]關(guān)于[β]”。消息370指示它是第三響應(yīng)消息(即,“[A,3]”),也指示響應(yīng)計(jì)算機(jī)系統(tǒng)105現(xiàn)在已經(jīng)接收到請(qǐng)求計(jì)算機(jī)系統(tǒng)100已發(fā)送的三條消息中的每一條(即,“確認(rèn)[B,1-3]”)。另外,消息370的“關(guān)于”字段中的第二標(biāo)識(shí)符“β”向請(qǐng)求計(jì)算機(jī)系統(tǒng)100指示,該消息是響應(yīng)于重試的請(qǐng)求消息330b。
因?yàn)橐呀?jīng)在請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105之間適當(dāng)?shù)亟邮蘸痛_認(rèn)了所有消息,所以請(qǐng)求計(jì)算機(jī)系統(tǒng)100終止該端對(duì)端連接。具體地,請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送連接終止消息380“終止[B]確認(rèn)[A,1-3],ID[δ]”,它使用標(biāo)識(shí)符“確認(rèn)[A,1-3]”來(lái)確認(rèn)每一響應(yīng)消息350、360和370,且包含終止消息標(biāo)識(shí)符“δ”。響應(yīng)計(jì)算機(jī)系統(tǒng)105然后以關(guān)于該終止消息標(biāo)識(shí)符“δ”的響應(yīng)消息390“終止[A],關(guān)于[δ]”來(lái)響應(yīng)。
從而,此處描述的模式適應(yīng)各種各樣的消息傳輸失敗,并確保消息是按照請(qǐng)求計(jì)算機(jī)系統(tǒng)期望的方式來(lái)處理的。具體地,此處描述的模式示出了消息如何能夠按照請(qǐng)求計(jì)算機(jī)系統(tǒng)預(yù)期的方式在響應(yīng)計(jì)算機(jī)系統(tǒng)處以指定的順序處理,而不論消息在響應(yīng)計(jì)算機(jī)系統(tǒng)處接收的順序。本發(fā)明也可以按照完成本發(fā)明的方面的動(dòng)作來(lái)描述。具體地,圖4以流程圖的形式,從請(qǐng)求計(jì)算機(jī)系統(tǒng)100的觀點(diǎn)和響應(yīng)計(jì)算機(jī)系統(tǒng)105的觀點(diǎn)示出了的以請(qǐng)求-響應(yīng)方式可靠地發(fā)送和接收消息的方法。
例如,圖4示出,從請(qǐng)求計(jì)算機(jī)系統(tǒng)100的觀點(diǎn)來(lái)看的一種方法包括建立端對(duì)端連接的動(dòng)作400。動(dòng)作400也包括建立與響應(yīng)計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)連接。例如,請(qǐng)求計(jì)算機(jī)系統(tǒng)400發(fā)送消息110“創(chuàng)建序列[提供=A]”,它可包括連接契約(未示出),該契約描述消息如何在連接中由響應(yīng)計(jì)算機(jī)系統(tǒng)105處理。類似地,從響應(yīng)計(jì)算機(jī)系統(tǒng)105的觀點(diǎn)來(lái)看,該方法包括接受端對(duì)端連接的動(dòng)作410。動(dòng)作410包括接受與請(qǐng)求計(jì)算機(jī)系統(tǒng)的端對(duì)端連接。例如,響應(yīng)計(jì)算機(jī)系統(tǒng)105通過(guò)發(fā)送消息120“創(chuàng)建序列響應(yīng)[B]”來(lái)接受該端對(duì)端連接,它在連接契約的條款下接受該端對(duì)端連接。
另外,圖4示出,從請(qǐng)求計(jì)算機(jī)系統(tǒng)100的觀點(diǎn)來(lái)看的一種方法包含發(fā)送第一消息的動(dòng)作420。動(dòng)作420包括向響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送第一消息,該第一消息包含第一標(biāo)識(shí)符。例如,請(qǐng)求計(jì)算機(jī)系統(tǒng)100通過(guò)發(fā)送第一消息130“序列[B,1]ID[α]”來(lái)啟動(dòng)請(qǐng)求-回復(fù)序列,該消息包含唯一地標(biāo)識(shí)消息130的第一標(biāo)識(shí)符“α”。從而,從響應(yīng)計(jì)算機(jī)系統(tǒng)105的觀點(diǎn)來(lái)看,相應(yīng)方法包含接收第一消息的動(dòng)作430。動(dòng)作430包括從請(qǐng)求計(jì)算機(jī)系統(tǒng)接收第一消息,該第一消息包含第一標(biāo)識(shí)符。例如,響應(yīng)計(jì)算機(jī)系統(tǒng)105接收消息130“序列[B,1]ID[α]”,并標(biāo)識(shí)第一標(biāo)識(shí)符“α”。取決于定義該建立的端對(duì)端連接的契約,響應(yīng)計(jì)算機(jī)系統(tǒng)105也可以處理消息130,或在進(jìn)一步的通知之前高速緩存消息130的內(nèi)容。
從響應(yīng)計(jì)算機(jī)系統(tǒng)105的觀點(diǎn)來(lái)看,該方法也包含發(fā)送響應(yīng)消息的動(dòng)作450。動(dòng)作450包括向請(qǐng)求計(jì)算機(jī)發(fā)送響應(yīng)消息。例如,當(dāng)接收消息130之后,響應(yīng)計(jì)算機(jī)系統(tǒng)105處理消息130,并準(zhǔn)備和發(fā)送響應(yīng)消息140“序列[A,1],確認(rèn)[B1-1],關(guān)于[α]”,它包含指示消息140關(guān)于(即“關(guān)于”)第一標(biāo)識(shí)符“α”的指示符。從而,圖4示出,從請(qǐng)求計(jì)算系統(tǒng)100的觀點(diǎn)來(lái)看,該方法也包含接收響應(yīng)消息的動(dòng)作440。動(dòng)作440包括從響應(yīng)計(jì)算機(jī)系統(tǒng)接收響應(yīng)消息。例如,當(dāng)請(qǐng)求計(jì)算機(jī)系統(tǒng)100接收響應(yīng)消息140“序列[A,1],確認(rèn)[B1-1],關(guān)于[α]”時(shí),該請(qǐng)求一回復(fù)序列完成。消息140包含確認(rèn)指示符“確認(rèn)[B,1-1]”以及“關(guān)于”字段,它證實(shí)接收第一消息130,并指示消息140是對(duì)消息130的響應(yīng)。然而,也可在確定例如當(dāng)一定次數(shù)的重試之后或等待響應(yīng)的一段時(shí)間的延遲之后第一消息失敗時(shí)完成該請(qǐng)求-回復(fù)序列。
圖4也示出,從請(qǐng)求計(jì)算機(jī)系統(tǒng)100觀點(diǎn)來(lái)看,該方法包含發(fā)送連接終止消息的動(dòng)作460。動(dòng)作460包括向響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送連接終止消息,該連接終止消息包含終止消息標(biāo)識(shí)符以及對(duì)已經(jīng)接收響應(yīng)消息的確認(rèn)。例如,請(qǐng)求計(jì)算機(jī)系統(tǒng)最后從響應(yīng)計(jì)算機(jī)系統(tǒng)105接收到帶有關(guān)于由請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送的所有消息已被接收的確認(rèn)和證實(shí)的響應(yīng)消息,并還標(biāo)識(shí)由響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送的所有響應(yīng)消息已被接收。之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100發(fā)送連接終止消息170“終止[B],確認(rèn)[A,1-2]ID[γ]”。連接終止消息170也確認(rèn)接收到該響應(yīng)消息“確認(rèn)[A,1-2]”,且包含特定的終止消息標(biāo)識(shí)符“γ”。
而且,圖4示出,從響應(yīng)計(jì)算機(jī)系統(tǒng)105的觀點(diǎn)來(lái)看,該方法包含接收連接終止消息的動(dòng)作470。動(dòng)作470包括從請(qǐng)求計(jì)算機(jī)系統(tǒng)接收連接終止消息,該終止消息包含終止消息標(biāo)識(shí)符和對(duì)接收到響應(yīng)消息的確認(rèn)。例如,響應(yīng)計(jì)算機(jī)系統(tǒng)105接收消息170“終止[B],確認(rèn)[A,1-2]ID[γ]”,它確認(rèn)接收了響應(yīng)消息140和160(即,通過(guò)“確認(rèn)[A,1-2]”),且包含終止標(biāo)識(shí)符“γ”,該標(biāo)識(shí)符唯一地標(biāo)識(shí)消息170。
作為響應(yīng),圖4示出了從響應(yīng)計(jì)算機(jī)系統(tǒng)105的觀點(diǎn)來(lái)看,該方法包含發(fā)送響應(yīng)消息以完成該端對(duì)端連接終止進(jìn)程的動(dòng)作490。動(dòng)作490包括發(fā)送關(guān)于該終止消息標(biāo)識(shí)符的響應(yīng)終止消息。例如,響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送終止響應(yīng)消息180“終止[A],關(guān)于[γ]”,它“關(guān)于”端對(duì)端連接終止消息170中的終止標(biāo)識(shí)符“γ”。從而,圖4示出從請(qǐng)求計(jì)算機(jī)系統(tǒng)100的觀點(diǎn)來(lái)看,該方法包含接收終止響應(yīng)消息的動(dòng)作480。動(dòng)作480包括接收關(guān)于該終止消息標(biāo)識(shí)符的終止響應(yīng)消息。例如,請(qǐng)求計(jì)算機(jī)系統(tǒng)100接收消息180,消息180證實(shí)終止該端對(duì)端連接的請(qǐng)求,從而允許請(qǐng)求計(jì)算機(jī)系統(tǒng)100關(guān)閉該端對(duì)端連接。
此處描述或示出的實(shí)現(xiàn)也可以按照使得請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105適當(dāng)?shù)乇慌渲贸捎糜诮粨Q消息、響應(yīng)和/或確認(rèn)的系統(tǒng)來(lái)描述。以下系統(tǒng)示例也將按照前述的示意圖來(lái)描述。即,在其中請(qǐng)求計(jì)算機(jī)系統(tǒng)向響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送請(qǐng)求消息,而響應(yīng)計(jì)算機(jī)系統(tǒng)以響應(yīng)消息響應(yīng)每一請(qǐng)求消息的計(jì)算機(jī)化的環(huán)境系統(tǒng)中,一種使用請(qǐng)求-回復(fù)傳輸用于可靠地發(fā)送和接收請(qǐng)求消息以及用于可靠地發(fā)送和接收響應(yīng)消息的方法包含依照以下描述的動(dòng)作。
在一個(gè)實(shí)例中,請(qǐng)求計(jì)算機(jī)系統(tǒng)100通過(guò)在請(qǐng)求-回復(fù)傳輸連接的請(qǐng)求支路上向響應(yīng)計(jì)算機(jī)系統(tǒng)105發(fā)送連接請(qǐng)求消息(例如,110)來(lái)建立與響應(yīng)計(jì)算機(jī)系統(tǒng)105的端對(duì)端連接。作為回應(yīng),響應(yīng)計(jì)算機(jī)系統(tǒng)105接受該連接請(qǐng)求,并在請(qǐng)求-回復(fù)傳輸連接的回復(fù)支路上向請(qǐng)求計(jì)算機(jī)系統(tǒng)提供這樣的指示。即,響應(yīng)計(jì)算機(jī)系統(tǒng)105在請(qǐng)求-回復(fù)傳輸連接的回復(fù)支路上發(fā)送連接接受消息(例如,120)。當(dāng)該消息交換完成之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105建立了端對(duì)端連接。請(qǐng)求計(jì)算機(jī)系統(tǒng)100然后啟動(dòng)請(qǐng)求-回復(fù)序列,并使用它所建立的請(qǐng)求-回復(fù)傳輸連接的請(qǐng)求支路來(lái)發(fā)送請(qǐng)求消息(例如,130)。請(qǐng)求計(jì)算機(jī)系統(tǒng)100也高速緩存該請(qǐng)求消息(例如,130),直到由響應(yīng)計(jì)算機(jī)系統(tǒng)105確認(rèn)該請(qǐng)求消息。
當(dāng)來(lái)自請(qǐng)求計(jì)算機(jī)系統(tǒng)100的請(qǐng)求消息(例如,110)到達(dá)響應(yīng)計(jì)算機(jī)系統(tǒng)105時(shí),響應(yīng)計(jì)算機(jī)系統(tǒng)105處理該請(qǐng)求消息(例如,110),并創(chuàng)建相應(yīng)的響應(yīng)消息(例如,140)。響應(yīng)消息(例如,140)包括指示已接收請(qǐng)求計(jì)算機(jī)系統(tǒng)100的請(qǐng)求消息110的確認(rèn)(例如,“確認(rèn)[B,1-1]”)。類似于請(qǐng)求計(jì)算機(jī)系統(tǒng)100與請(qǐng)求消息(例如,130),響應(yīng)計(jì)算機(jī)系統(tǒng)105也高速緩存該響應(yīng)消息(例如,140),直到由請(qǐng)求計(jì)算機(jī)系統(tǒng)100適當(dāng)?shù)卮_認(rèn)該響應(yīng)消息(例如,140)。響應(yīng)計(jì)算機(jī)系統(tǒng)105然后僅使用由請(qǐng)求計(jì)算機(jī)系統(tǒng)建立的請(qǐng)求-回復(fù)傳輸連接的回復(fù)支路將響應(yīng)消息(例如,140)發(fā)送給請(qǐng)求計(jì)算機(jī)系統(tǒng)100。
當(dāng)請(qǐng)求計(jì)算機(jī)系統(tǒng)100接收到包含對(duì)其發(fā)送的請(qǐng)求消息的確認(rèn)(例如,“確認(rèn)[B,1-1]”)的響應(yīng)消息(例如140)時(shí),該發(fā)送的消息的請(qǐng)求-回復(fù)序列完成。(或者,在其它情況中,請(qǐng)求-回復(fù)序列可以在判斷請(qǐng)求消息由于任何數(shù)量的原因而失敗之后完成。)請(qǐng)求計(jì)算機(jī)系統(tǒng)100然后刪除該請(qǐng)求消息的高速緩存的副本,請(qǐng)求計(jì)算機(jī)系統(tǒng)100也對(duì)它發(fā)送給響應(yīng)計(jì)算機(jī)系統(tǒng)105的下一消息(例如,150)附加對(duì)所接收到的響應(yīng)消息(例如,140)的確認(rèn)(例如,“確認(rèn)[A,1-1]”)。
請(qǐng)求計(jì)算機(jī)系統(tǒng)100和響應(yīng)計(jì)算機(jī)系統(tǒng)105可以按上述方式繼續(xù)交換其它消息。例如,請(qǐng)求計(jì)算機(jī)系統(tǒng)100可繼續(xù)發(fā)送請(qǐng)求消息并向響應(yīng)計(jì)算機(jī)系統(tǒng)105提供用于發(fā)送相應(yīng)的響應(yīng)消息的請(qǐng)求-回復(fù)連接的回復(fù)支路。另外,請(qǐng)求和響應(yīng)計(jì)算機(jī)系統(tǒng)均可繼續(xù)高速緩存消息,直到另一計(jì)算機(jī)系統(tǒng)確認(rèn)這些消息(無(wú)論是原始發(fā)送的消息還是重試)的接收。而且,請(qǐng)求和響應(yīng)計(jì)算機(jī)系統(tǒng)均也對(duì)它們發(fā)送的消息附加相應(yīng)的確認(rèn),使得發(fā)送的消息將對(duì)另一計(jì)算機(jī)系統(tǒng)指示該系統(tǒng)發(fā)送的消息的成功接收。而且,由于適當(dāng)?shù)卮_認(rèn)了消息,這兩個(gè)計(jì)算機(jī)系統(tǒng)均刪除這些消息的高速緩存的版本。
當(dāng)適當(dāng)?shù)匕l(fā)送和確認(rèn)所有請(qǐng)求消息,接收所有回復(fù)消息,并使得完成了任何或所有請(qǐng)求-回復(fù)序列之后,請(qǐng)求計(jì)算機(jī)系統(tǒng)100在已建立的請(qǐng)求-回復(fù)傳輸連接的請(qǐng)求支路上發(fā)送連接終止消息(例如,170),其中該連接終止消息(例如,170)包含對(duì)包括最后接收的消息(例如,160)的所有響應(yīng)計(jì)算機(jī)系統(tǒng)的響應(yīng)消息的確認(rèn)(例如,“確認(rèn)[A,1-2]”)。響應(yīng)計(jì)算機(jī)系統(tǒng)105然后接收該連接終止消息(例如,170)及附加的確認(rèn)(例如,“確認(rèn)[A,1-2]”),并刪除已被確認(rèn)的響應(yīng)消息的高速緩存的副本。
從而,此處描述的模式和方法提供了關(guān)于使用請(qǐng)求-響應(yīng)傳輸?shù)目煽肯⑼ㄐ诺亩鄠€(gè)好處。例如,本發(fā)明的實(shí)現(xiàn)可適應(yīng)各種各樣的消息通信失敗,無(wú)論是在已建立的端對(duì)端連接中的請(qǐng)求或響應(yīng)計(jì)算機(jī)系統(tǒng)處,還是該連接中的一個(gè)或多個(gè)中介節(jié)點(diǎn)處,諸如傳輸中介(例如,HTTP代理服務(wù)器)或消息通信中介(諸如SOAP路由器)。
另外,本發(fā)明的一個(gè)或多個(gè)實(shí)現(xiàn)包括確保未被適當(dāng)確認(rèn)的消息可以被重新發(fā)送,但仍然以符合連接契約的方式來(lái)處理。在一個(gè)方面,這可確??稍谄谕麜r(shí)避免重復(fù)的處理,或可確保可在期望時(shí)完成有序的處理。而且,本發(fā)明的實(shí)現(xiàn)允許回復(fù)消息在底層請(qǐng)求-回復(fù)傳輸?shù)倪m當(dāng)?shù)捻憫?yīng)支路上發(fā)送,取決于是在通信棧的傳輸還是消息層上相關(guān)這些消息。而且,本發(fā)明的一個(gè)或多個(gè)實(shí)現(xiàn)可允許以肯定的形式(即,指定接收到的消息)、否定的形式(即,指定丟失的消息)或其任何組合來(lái)表達(dá)確認(rèn)。
圖5及以下描述旨在提供可在其中實(shí)現(xiàn)本發(fā)明的合適的計(jì)算環(huán)境的簡(jiǎn)要概括描述。盡管不是必需的,但本發(fā)明將在諸如程序模塊等由網(wǎng)絡(luò)環(huán)境中的計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的通用語(yǔ)境中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。計(jì)算機(jī)可執(zhí)行指令、相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)和程序模塊表示用于執(zhí)行此處所揭示的方法的步驟的程序代碼裝置的示例。這樣的可執(zhí)行指令或相關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)的特定序列表示用于實(shí)現(xiàn)在這些步驟中所述的功能的相應(yīng)動(dòng)作的示例。
本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以使用多種類型的計(jì)算機(jī)系統(tǒng)配置,包括個(gè)人計(jì)算機(jī)、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型計(jì)算機(jī)等,在網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)現(xiàn)。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中本地和遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)并通過(guò)通信網(wǎng)絡(luò)連接(或者通過(guò)硬連線、無(wú)線鏈路或通過(guò)硬連線或無(wú)線鏈路的組合)。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。
參考圖5,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括常規(guī)計(jì)算機(jī)520形式的通用計(jì)算設(shè)備,后者包含處理單元521、系統(tǒng)存儲(chǔ)器522和將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合至處理單元521的系統(tǒng)總線523。系統(tǒng)總線523可以是若干類型的總線結(jié)構(gòu)中的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線和使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)524和隨機(jī)存取存儲(chǔ)器(RAM)525。基本輸入/輸出系統(tǒng)(BIOS)526包含有助于諸如啟動(dòng)時(shí)在計(jì)算機(jī)520中元件之間傳遞信息的基本例程,它可被存儲(chǔ)在ROM 524中。
計(jì)算機(jī)520還可以包括用于從磁硬盤539中讀取或向其寫(xiě)入的磁硬盤驅(qū)動(dòng)器527,用于從可移動(dòng)磁盤529中讀取或向其寫(xiě)入的磁盤驅(qū)動(dòng)器528,以及用于從諸如CD ROM或其它光學(xué)介質(zhì)等可移動(dòng)光盤531中讀取或向其寫(xiě)入的光盤驅(qū)動(dòng)器530。磁硬盤驅(qū)動(dòng)器527、磁盤驅(qū)動(dòng)器528和光盤驅(qū)動(dòng)器530分別由硬盤驅(qū)動(dòng)器接口532、磁盤驅(qū)動(dòng)器接口533和光盤驅(qū)動(dòng)器接口534連接至系統(tǒng)總線523。驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)520提供了對(duì)計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲(chǔ)。盡管此處所示的示例性環(huán)境使用磁硬盤539、可移動(dòng)磁盤529和可移動(dòng)光盤531,也可以使用用于存儲(chǔ)數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀介質(zhì),包括盒式磁帶、閃存卡、數(shù)字多功能盤、貝努利盒式磁盤、RAM、ROM等。
可以在硬盤539、磁盤529、光盤531、ROM 524或RAM 525上存儲(chǔ)包括操作系統(tǒng)535、一個(gè)或多個(gè)應(yīng)用程序模塊536、其它程序模塊537和程序數(shù)據(jù)538等一個(gè)或多個(gè)程序模塊的程序代碼裝置。用戶可以通過(guò)諸如鍵盤540和定點(diǎn)設(shè)備542,或諸如麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等其它輸入設(shè)備(未示出)向計(jì)算機(jī)520輸入命令和信息。這些和其它輸入設(shè)備通常由耦合至系統(tǒng)總線523的串行端口接口546連接至處理單元521。或者,輸入設(shè)備可以由諸如并行端口、游戲端口或通用串行總線(USB)等其它接口連接。監(jiān)視器547或另一顯示設(shè)備也經(jīng)由諸如視頻適配器548等接口連接至系統(tǒng)總線523。除監(jiān)視器之外,個(gè)人計(jì)算機(jī)一般包括其它外圍輸出設(shè)備(未示出),諸如揚(yáng)聲器和打印機(jī)。
計(jì)算機(jī)520可使用至一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)549a和549b的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)549a和549b各自可以是另一臺(tái)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見(jiàn)網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上文相對(duì)于計(jì)算機(jī)520描述的許多或所有元件,盡管在圖5中只示出存儲(chǔ)器存儲(chǔ)設(shè)備550a和550b以及其相關(guān)聯(lián)的應(yīng)用程序536a和536b。圖5中所示邏輯連接包括此處作為示例而非限制示出的局域網(wǎng)(LAN)551和廣域網(wǎng)(WAN)552。這樣的網(wǎng)絡(luò)環(huán)境在辦公室范圍或企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見(jiàn)的。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)520通過(guò)網(wǎng)絡(luò)接口或適配器553連接至局域網(wǎng)551。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)520通常包括調(diào)制解調(diào)器554、無(wú)線鏈路或用于通過(guò)諸如因特網(wǎng)等廣域網(wǎng)552建立通信的其它裝置。調(diào)制解調(diào)器554可以是內(nèi)置或外置的,它通過(guò)串行端口接口546連接至系統(tǒng)總線523。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)520所描述的程序模塊或其部分可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。可以理解,所示的網(wǎng)絡(luò)連接是示例性的,且可以使用通過(guò)廣域網(wǎng)552建立通信的其它手段。
本發(fā)明可以用其它具體形式來(lái)實(shí)施,而不背離其精神或基本特征。所述的實(shí)施例在所有方面都被認(rèn)為僅是說(shuō)明性的而非限制性的。從而,本發(fā)明的范圍由所附權(quán)利要求書(shū)而非前述描述來(lái)指示。落入本發(fā)明權(quán)利要求的等效技術(shù)方案的意義和范圍內(nèi)的所有變化都包含在權(quán)利要求書(shū)的范圍內(nèi)。
權(quán)利要求
1.在請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送請(qǐng)求消息給響應(yīng)計(jì)算機(jī)系統(tǒng)、響應(yīng)計(jì)算機(jī)系統(tǒng)以響應(yīng)消息響應(yīng)每一請(qǐng)求消息的計(jì)算機(jī)化的環(huán)境中的請(qǐng)求計(jì)算機(jī)系統(tǒng)處,一種使用請(qǐng)求-回復(fù)傳輸使得響應(yīng)計(jì)算機(jī)系統(tǒng)僅按預(yù)期的方式處理所發(fā)送的消息來(lái)可靠地發(fā)送請(qǐng)求消息并可靠地接收響應(yīng)消息的方法,包括以下動(dòng)作通過(guò)使用由所述請(qǐng)求計(jì)算機(jī)系統(tǒng)建立的請(qǐng)求-回復(fù)傳輸連接的請(qǐng)求支路向響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送初始請(qǐng)求消息,來(lái)啟動(dòng)請(qǐng)求-回復(fù)序列;通過(guò)指示所述初始請(qǐng)求消息失敗的所述請(qǐng)求-回復(fù)傳輸?shù)氖≈甘緳C(jī)制接收失敗指示;以及繼續(xù)發(fā)送所述初始請(qǐng)求消息的高速緩存的副本給所述響應(yīng)計(jì)算機(jī)系統(tǒng),直到所述消息通信序列完成,其中,所述發(fā)送初始請(qǐng)求消息的高速緩存的副本的動(dòng)作向所述響應(yīng)計(jì)算機(jī)系統(tǒng)提供用于發(fā)送響應(yīng)消息的所述請(qǐng)求-回復(fù)傳輸連接的回復(fù)支路。
2.如權(quán)利要求1所述的方法,其特征在于,所述消息通信序列的完成包括從所述響應(yīng)計(jì)算機(jī)系統(tǒng)接收確認(rèn)所述初始請(qǐng)求消息的接收的消息。
3.如權(quán)利要求1所述的方法,其特征在于,所述消息通信序列的完成包括確定在標(biāo)識(shí)-個(gè)或多個(gè)閾值的失敗重試之后不應(yīng)再重試所述初始請(qǐng)求消息,或確定在指定的時(shí)間之后沒(méi)有接收到任何響應(yīng)。
4.如權(quán)利要求1所述的方法,其特征在于,所述失敗指示是由對(duì)所述初始請(qǐng)求消息的響應(yīng)消息由于所述請(qǐng)求-回復(fù)傳輸中的失敗而未能到達(dá)所述請(qǐng)求計(jì)算機(jī)系統(tǒng)所觸發(fā)的。
5.如權(quán)利要求4所述的方法,其特征在于,還包括從所述響應(yīng)計(jì)算機(jī)系統(tǒng)接收確認(rèn)所述初始請(qǐng)求消息的接收的不同的響應(yīng)消息以及不同的請(qǐng)求消息,其中所述不同的響應(yīng)消息是通過(guò)成功結(jié)束的不同的請(qǐng)求-回復(fù)消息交換接收的;以及向所述響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送確認(rèn)所述不同的響應(yīng)消息的接收的初始請(qǐng)求消息的高速緩存的副本;其中,所述發(fā)送初始請(qǐng)求消息的高速緩存的副本的動(dòng)作向所述響應(yīng)計(jì)算機(jī)系統(tǒng)提供可在其上發(fā)送所述初始響應(yīng)消息的高速緩存的版本的請(qǐng)求-回復(fù)傳輸連接的回復(fù)支路。
6.如權(quán)利要求1所述的方法,其特征在于,還包括以下動(dòng)作標(biāo)識(shí)所述初始請(qǐng)求消息被成功發(fā)送且沒(méi)有接收到響應(yīng)消息;在指定的延遲間隔之后反復(fù)發(fā)送所述初始請(qǐng)求消息的高速緩存的副本,其中所述發(fā)送初始請(qǐng)求消息的每一高速緩存的副本的動(dòng)作向所述響應(yīng)計(jì)算機(jī)系統(tǒng)提供可在其上發(fā)送初始響應(yīng)消息的所述已建立請(qǐng)求-回復(fù)傳輸連接的回復(fù)支路。
7.如權(quán)利要求1所述的方法,其特征在于,還包括以下動(dòng)作接收對(duì)所述初始請(qǐng)求消息的初始響應(yīng)消息;標(biāo)識(shí)沒(méi)有需要被發(fā)送的其它請(qǐng)求消息,使得經(jīng)過(guò)了指定的時(shí)間間隔而沒(méi)有在其上發(fā)送對(duì)所述初始響應(yīng)消息的確認(rèn)的另外的請(qǐng)求消息;以及向所述響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送確認(rèn)消息,其中所述確認(rèn)消息不包含任何請(qǐng)求。
8.如權(quán)利要求1所述的方法,其特征在于,還包括以下動(dòng)作在所述消息通信序列完成之后,通過(guò)向所述響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送連接終止消息來(lái)啟動(dòng)終止消息通信序列;通過(guò)所述請(qǐng)求-回復(fù)傳輸?shù)氖≈甘緳C(jī)制標(biāo)識(shí)所述連接終止消息失敗;以及重新發(fā)送所述連接終止消息,直到完成所述終止消息通信序列。
9.如權(quán)利要求8所述的方法,其特征在于,所述標(biāo)識(shí)終止消息通信序列的完成包括在由所述請(qǐng)求計(jì)算機(jī)系統(tǒng)建立的傳輸連接的回復(fù)支路上從所述響應(yīng)計(jì)算機(jī)系統(tǒng)接收連接終止響應(yīng)。
10.如權(quán)利要求8所述的方法,其特征在于,所述標(biāo)識(shí)終止消息通信序列的完成包括確定所述連接終止序列的失敗。
11.如權(quán)利要求10所述的方法,其特征在于,所述終止消息通信序列的完成包括確定在標(biāo)識(shí)了一個(gè)或多個(gè)閾值的失敗重試之后不應(yīng)再重試所述初始請(qǐng)求消息,或者確定在指定的時(shí)間之后不再接收到任何響應(yīng)。
12.在請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送請(qǐng)求消息給響應(yīng)計(jì)算機(jī)系統(tǒng)、響應(yīng)計(jì)算機(jī)系統(tǒng)以響應(yīng)消息響應(yīng)每一請(qǐng)求消息的計(jì)算機(jī)化的環(huán)境中的響應(yīng)計(jì)算機(jī)系統(tǒng)處,一種使用請(qǐng)求-回復(fù)傳輸使得響應(yīng)計(jì)算機(jī)系統(tǒng)僅按預(yù)期的方式處理所發(fā)送的消息,來(lái)可靠地接收請(qǐng)求消息并可靠地發(fā)送響應(yīng)消息的方法,包括以下動(dòng)作通過(guò)請(qǐng)求-回復(fù)傳輸在一個(gè)或多個(gè)請(qǐng)求-回復(fù)連接中的任何之一上接收來(lái)自請(qǐng)求計(jì)算機(jī)系統(tǒng)的消息;以及僅在所述一個(gè)或多個(gè)請(qǐng)求-回復(fù)連接中的任何之一的回復(fù)支路上向所述請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送消息。
13.如權(quán)利要求12所述的方法,其特征在于,還包括通過(guò)由所述請(qǐng)求計(jì)算機(jī)系統(tǒng)建立的一個(gè)或多個(gè)請(qǐng)求-回復(fù)傳輸連接之一從所述請(qǐng)求計(jì)算機(jī)系統(tǒng)接收確認(rèn)消息,所述確認(rèn)消息不包含任何其它請(qǐng)求消息,且所述確認(rèn)消息關(guān)于在所述響應(yīng)計(jì)算機(jī)系統(tǒng)處高速緩存的一條或多條之前發(fā)送的響應(yīng)消息;從所接收到的確認(rèn)消息中標(biāo)識(shí)所述請(qǐng)求計(jì)算機(jī)系統(tǒng)沒(méi)有提供請(qǐng)求;刪除所述被確認(rèn)的一個(gè)或多個(gè)響應(yīng)消息的高速緩存的副本;以及使用所提供的一個(gè)或多個(gè)請(qǐng)求-回復(fù)傳輸連接之一的回復(fù)支路向所述請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送返回確認(rèn)消息,其中所述返回確認(rèn)消息不包含任何回復(fù)消息,且所述返回確認(rèn)消息確認(rèn)對(duì)所有之前接收到的請(qǐng)求消息的接收。
14.如權(quán)利要求12所述的方法,其特征在于,由所述請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送新的請(qǐng)求消息,且所述響應(yīng)計(jì)算機(jī)系統(tǒng)至少暫時(shí)無(wú)法接受或處理所述新的請(qǐng)求消息,使得由所述響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送的一條或多條消息之一僅確認(rèn)任何其它之前接收到的、由所述請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送的請(qǐng)求消息,而不是所述新的請(qǐng)求消息。
15.如權(quán)利要求12所述的方法,其特征在于,接收和處理初始請(qǐng)求消息和后繼請(qǐng)求消息,且向所述請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送相應(yīng)的初始響應(yīng)和后繼響應(yīng)消息,所述方法還包括從所述請(qǐng)求計(jì)算機(jī)系統(tǒng)接收確認(rèn)僅對(duì)所述后繼響應(yīng)消息的接收的新消息;以及在由所述最近接收到的新消息提供的回復(fù)支路上向所述請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送所述初始響應(yīng)消息的高速緩存的副本。
16.如權(quán)利要求15所述的方法,其特征在于,所述初始請(qǐng)求消息不同于由所述請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送的或在所述響應(yīng)計(jì)算機(jī)系統(tǒng)接收的第一請(qǐng)求消息。
17.在請(qǐng)求計(jì)算機(jī)系統(tǒng)發(fā)送請(qǐng)求消息給響應(yīng)計(jì)算機(jī)系統(tǒng)、響應(yīng)計(jì)算機(jī)系統(tǒng)以響應(yīng)消息響應(yīng)每一請(qǐng)求消息的計(jì)算機(jī)化的環(huán)境中的請(qǐng)求計(jì)算機(jī)系統(tǒng)處,一種存儲(chǔ)著計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)程序產(chǎn)品,當(dāng)所述計(jì)算機(jī)可執(zhí)行指令被執(zhí)行時(shí),使得所述請(qǐng)求計(jì)算機(jī)系統(tǒng)處的一個(gè)或多個(gè)處理器執(zhí)行一種使用請(qǐng)求-回復(fù)傳輸使得響應(yīng)計(jì)算機(jī)系統(tǒng)僅按預(yù)期的方式處理所發(fā)送的消息,來(lái)可靠地發(fā)送請(qǐng)求消息并可靠地接收響應(yīng)消息的方法,所述方法包括以下動(dòng)作通過(guò)使用由所述請(qǐng)求計(jì)算機(jī)系統(tǒng)建立的請(qǐng)求-回復(fù)傳輸連接的請(qǐng)求支路向響應(yīng)計(jì)算機(jī)系統(tǒng)發(fā)送初始請(qǐng)求消息,來(lái)啟動(dòng)請(qǐng)求-回復(fù)序列;通過(guò)指示所述初始請(qǐng)求消息失敗的所述請(qǐng)求-回復(fù)傳輸?shù)氖≈甘緳C(jī)制接收失敗指示;以及繼續(xù)發(fā)送所述初始請(qǐng)求消息的高速緩存的副本給所述響應(yīng)計(jì)算機(jī)系統(tǒng),直到所述消息通信序列完成,其中所述發(fā)送初始請(qǐng)求消息的高速緩存的副本的動(dòng)作向所述響應(yīng)計(jì)算機(jī)系統(tǒng)提供用于發(fā)送響應(yīng)消息的所述請(qǐng)求-回復(fù)傳輸連接的回復(fù)支路。
全文摘要
一種可靠的請(qǐng)求-響應(yīng)機(jī)制允許請(qǐng)求計(jì)算機(jī)系統(tǒng)和響應(yīng)計(jì)算機(jī)系統(tǒng)在建立的端對(duì)端連接中以響應(yīng)計(jì)算機(jī)系統(tǒng)以由請(qǐng)求計(jì)算機(jī)系統(tǒng)預(yù)期的方式處理請(qǐng)求的方式來(lái)發(fā)送和接收消息,使得所有的消息通信由請(qǐng)求計(jì)算機(jī)系統(tǒng)啟動(dòng)。請(qǐng)求計(jì)算機(jī)系統(tǒng)和響應(yīng)計(jì)算機(jī)系統(tǒng)可通過(guò)重新發(fā)送之前發(fā)送的消息的高速緩存的版本,并通過(guò)確認(rèn)所接收到的每一消息的接收來(lái)適應(yīng)各種各樣的消息通信失敗,諸如間歇的網(wǎng)絡(luò)連接或SOAP中介的傳輸失敗。任一計(jì)算機(jī)系統(tǒng)上的高速緩存的消息在被適當(dāng)?shù)卮_認(rèn)之后被刪除。當(dāng)由響應(yīng)計(jì)算機(jī)系統(tǒng)確認(rèn)所有發(fā)送的消息,且請(qǐng)求計(jì)算機(jī)系統(tǒng)從響應(yīng)計(jì)算機(jī)接收到所有響應(yīng)消息之后,使用連接終止消息的交換來(lái)終止該端對(duì)端連接。
文檔編號(hào)H04L1/16GK1832475SQ20061000376
公開(kāi)日2006年9月13日 申請(qǐng)日期2006年2月8日 優(yōu)先權(quán)日2005年3月8日
發(fā)明者K·賈弗瑞萊伍克, O·赫瑞彼賽克, R·希爾, S·科恩, S·R·巴特雷斯 申請(qǐng)人:微軟公司