(57)【要約】【課題】確立されたエンドツーエンド接続における要求側システムおよび応答側システムが、要求側システムによって意図されたように応答側システムが要求を処理する方法で、メッセージの送受信を可能にし、全てのメッセージ通信が要求側システムによって開始されるようにする、信頼性のある要求応答メカニズムを提供すること。【解決手段】要求側および応答側システムは、キャッシュされた送信メッセージを再送信し、および、各メッセージの受信を確認することにより、断続的なネットワーク接続またはＳＯＡＰ中間物のトランスポート障害など、幅広い範囲のメッセージング障害に対処できる。どのコンピュータシステムにおいてキャッシュされたメッセージも、適切な受信確認後に削除される。全ての送信されたメッセージが応答側システムによって受信され、要求側コンピュータが全ての応答メッセージを応答側コンピュータから受信した後、エンドツーエンド接続は、接続終了メッセージの交換により終了する。【選択図】図２
2006252555.tif 000002
【特許請求の範囲】
【請求項１】
要求側コンピュータシステムが要求メッセージを応答側コンピュータシステムに送信し、応答側コンピュータシステムが各要求メッセージに、応答メッセージにより応答する、コンピュータ化環境内の要求側コンピュータシステムにおいて、要求メッセージを確実に送信し、要求返信トランスポートを使用して、応答メッセージを確実に受信して、前記応答側コンピュータシステムが前記送信されたメッセージを意図されたようにのみ処理する方法であって、
前記要求側コンピュータシステムによって確立された要求返信トランスポート接続の要求レグを使用して、初期要求メッセージを応答側コンピュータシステムに送信することによって、要求返信シーケンスを開始する動作と、
前記要求返信トランスポートの障害指示メカニズムを通じて、前記初期要求メッセージで障害が起こっているという障害指示を受信する動作と、
メッセージングシーケンスが完了されるまで、前記初期要求メッセージのキャッシュされたコピーを前記応答側コンピュータシステムに継続的に送信する動作であって、前記初期要求メッセージの前記キャッシュされたコピーを送信する前記動作は、前記応答側コンピュータシステムに、応答メッセージを送信するための前記要求返信トランスポート接続の返信レグを提供する動作と
を備えたことを特徴とする方法。
【請求項２】
前記メッセージングシーケンスの完了は、前記応答側コンピュータシステムから、前記初期要求メッセージの受信を確認するメッセージを受信する動作を備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記メッセージングシーケンスの完了は、障害が起こった再試行の１つまたは複数のしきい値を識別した上で、前記初期要求メッセージが再試行されるべきでないこと、または、指定された時間の後で応答が受信されていないことを決定する動作を備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記障害指示は、前記初期要求メッセージへの応答メッセージが前記要求返信トランスポートにおける障害により前記要求側コンピュータシステムに到達することができないことによって、引き起こされることを特徴とする請求項１に記載の方法。
【請求項５】
前記初期要求メッセージの受信を確認する異なる応答メッセージ、および異なる要求メッセージを前記応答側コンピュータシステムから受信する動作であって、前記異なる応答メッセージは、うまく完了した異なる要求返信メッセージ交換を通じて受信された動作と、
前記応答側コンピュータシステムに、前記異なる応答メッセージの受信を確認する前記初期要求メッセージのキャッシュされたコピーを送信する動作とをさらに備え、
前記初期要求メッセージの前記キャッシュされたコピーを送信する前記動作は、前記応答側コンピュータシステムに、それにおいて初期応答メッセージのキャッシュされたバージョンを送信するべき、要求返信トランスポート接続の返信レグを提供することを特徴とする請求項４に記載の方法。
【請求項６】
前記初期要求メッセージがうまく送信されたこと、および、応答メッセージが受信されていないことを識別する動作と、
前記初期要求メッセージの前記キャッシュされたコピーを、指定された遅延間隔の後に繰り返して送信する動作であって、前記初期要求メッセージの各キャッシュされたコピーを送信する前記動作は、前記応答側コンピュータシステムに、それにおいて初期応答メッセージを送信するべき、前記確立された要求返信トランスポート接続の返信レグを提供する動作と
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項７】
前記初期要求メッセージへの初期応答メッセージを受信する動作と、
指定された時間間隔が、それにおいて前記初期応答メッセージの受信確認を送信するべき追加の要求メッセージなしで経過したように、他の要求メッセージが送信される必要がないことを識別する動作と、
受信確認メッセージを前記応答側コンピュータシステムに送信する動作であって、前記受信確認メッセージはいかなる要求をも含まない動作と
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項８】
前記メッセージングシーケンスの完了の上で、接続終了メッセージを前記応答側コンピュータシステムに送信することによって、終了メッセージングシーケンスを開始する動作と、
前記要求返信トランスポートの前記障害指示メカニズムを通じて、前記接続終了メッセージで障害が起こっていることを識別する動作と、
前記終了メッセージングシーケンスが完了するまで、前記接続終了メッセージを再送信する動作と
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項９】
前記終了メッセージングシーケンスの完了を識別する動作は、接続終了応答を前記応答側コンピュータシステムから、前記要求側コンピュータシステムによって確立された前記トランスポート接続の前記返信レグ上で受信する動作を備えることを特徴とする請求項８に記載の方法。
【請求項１０】
前記終了メッセージングシーケンスの完了を識別する動作は、前記接続終了メッセージの障害を決定する動作を備えることを特徴とする請求項８に記載の方法。
【請求項１１】
前記終了メッセージングシーケンスの前記完了は、障害が起こった再試行の１つまたは複数のしきい値を識別した上で、前記初期要求メッセージが再試行されるべきでないこと、または、指定された時間の後で応答が受信されていないことを決定する動作を備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
要求側コンピュータシステムが要求メッセージを応答側コンピュータシステムに送信し、応答側コンピュータシステムが各要求メッセージに、応答メッセージにより応答する、コンピュータ化環境内の応答側コンピュータシステムにおいて、要求メッセージを確実に受信し、要求返信トランスポートを使用して、応答メッセージを確実に送信して、前記応答側コンピュータシステムが前記送信されたメッセージを意図されたようにのみ処理する方法であって、
メッセージを、１つまたは複数の要求返信接続のいずれかにおいて、要求側コンピュータシステムから要求返信トランスポートを通じて受信する動作と、
メッセージを前記要求側コンピュータシステムへ、前記１つまたは複数の要求返信接続のいずれかの返信レグ上でのみ送信する動作と
をさらに備えたことを特徴とする方法。
【請求項１３】
受信確認メッセージを前記要求側コンピュータシステムから、前記要求側コンピュータシステムによって確立された１つまたは複数の要求返信トランスポート接続のうち１つを通じて受信する動作であって、前記受信確認メッセージは追加の要求メッセージを含まず、前記受信確認メッセージは、前記応答側コンピュータシステムでキャッシュされた、１つまたは複数の以前に送信された応答メッセージを参照する動作と、
前記受信された受信確認メッセージから、前記要求側コンピュータシステムが要求を提供しなかったことを識別する動作と、
受信確認された、前記１つまたは複数の応答メッセージのキャッシュされたコピーを削除する動作と、
受信確認のリターンメッセージを前記要求側コンピュータシステムへ、前記１つまたは複数の要求返信トランスポート接続のうち前記１つの提供された返信レグを使用して送信する動作であって、前記リターンメッセージは返信メッセージを含まず、前記受信確認のリターンメッセージは、すべての以前に受信された要求メッセージの受信を確認する動作と
をさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１４】
新しい要求メッセージが前記要求側コンピュータシステムによって送信されており、前記応答側コンピュータシステムは、少なくとも一時的に前期新しい要求メッセージの受け入れまたは処理ができず、前記応答側コンピュータシステムによって送信された１つまたは複数のメッセージのうち１つが、前記新しい要求メッセージではなく、前記要求側コンピュータシステムによって送信されたいずれかの他の以前に受信された要求メッセージのみを受信確認することを特徴とする請求項１２に記載の方法。
【請求項１５】
初期要求メッセージおよび後続の要求メッセージが受信および処理されており、対応する初期応答および後続の応答メッセージが前記要求側コンピュータシステムに送信する方法であって、
前記要求側コンピュータシステムから、前記後続の応答メッセージのみの受信を確認する新しいメッセージを受信する動作と、
前記要求側コンピュータシステムへ、前記初期応答メッセージのキャッシュされたコピーを、最新に受信された新しいメッセージによって提供された前記返信レグ上で送信する動作と
をさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記初期要求メッセージは、前記要求側コンピュータシステムによって送信される、または、前記応答側コンピュータシステムで受信される、第１の要求メッセージとは異なることを特徴とする請求項１５に記載の方法。
【請求項１７】
要求側コンピュータシステムが要求メッセージを応答側コンピュータシステムに送信し、応答側コンピュータシステムが各要求メッセージに、応答メッセージにより応答する、コンピュータ化環境内の要求側コンピュータシステムにおいて、実行されるとき、要求側コンピュータシステムの１つまたは複数のプロセッサに方法を実行させるコンピュータ実行可能命令をその上に格納しているコンピュータプログラム記録媒体であって、前記方法は、要求メッセージを確実に送信し、要求返信トランスポートを使用して、応答メッセージを確実に受信して、前記応答側コンピュータシステムが前記送信されたメッセージを意図されたようにのみ処理する方法であって、前記方法は、
前記要求側コンピュータシステムによって確立された要求返信トランスポート接続の要求レグを使用して、初期要求メッセージを応答側コンピュータシステムに送信することによって、要求返信シーケンスを開始する動作と、
前記要求返信トランスポートの障害指示メカニズムを通じて、前記初期要求メッセージで障害が起こっているという障害指示を受信する動作と、
メッセージングシーケンスが完了されるまで、前記初期要求メッセージのキャッシュされたコピーを前記応答側コンピュータシステムに継続的に送信する動作であって、前記初期要求メッセージの前記キャッシュされたコピーを送信する前記動作は、前記応答側コンピュータシステムに、応答メッセージを送信するための前記要求返信トランスポート接続の返信レグを提供する動作と
を備えたことを特徴とするコンピュータプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は要求応答トランスポートを使用して、確実にメッセージを通信するためのシステム、方法およびコンピュータプログラム製品に関する。
【背景技術】
【０００２】
コンピュータ化システムの人気が増しており、大規模および小規模ネットワーク内でコンピュータシステムのファイルおよび処理リソースを分散させる必要性も増した。一般に、コンピュータシステムおよび関係するデバイスは、ネットワークを介して、様々な理由のために、例えば、個人的な電子メッセージの交換、商品の販売、口座情報の提供などのために情報を通信する。しかし、コンピュータシステムおよびそれらの関係するアプリケーションはますます高機能になってきているので、ネットワーク上のデータおよびリソースの共有に関連付けられた課題もまた増していることは理解されよう。
【０００３】
一般に、ファイルおよびリソースを２つ以上のコンピュータシステムの間で配信させるための、いくつかの異なるメカニズムおよびプロトコルがある。例えば、メッセージをあるコンピュータシステムから１つまたは複数の他のコンピュータシステムへ、他のコンピュータシステムが応答することを必ずしも必要とするとは限らない方法で送信することができる。この一例は、例えば、電子メールメッセージの送信、または、あるコンテンツを他のコンピュータへ、ＵＤＰ（User Datagram Protocol）を使用してストリーミングすることにより使用されるといった、コネクションレスプロトコルであろう。ファイルまたはリソースを共有するための他の方法には、伝送制御プロトコル（「ＴＣＰ」）を使用するものなど、コネクション指向プロトコルの使用が含まれるだろう。コネクション指向通信は通常、一連の要求および応答を通じて、および、ある接続状態の情報を共有することによって、接続を確立することを含む。コンピュータに送信され、コンピュータから受信されたデータは通常、伝送されたデータをその接続に関連付ける、ある要素を有する。
【０００４】
コネクション指向通信は、それをあるアプリケーションのためのコネクションレス通信と区別する多くの利点を有する。例えば、ＴＣＰを使用して開始された接続は、すべてのデータが一端で受信されていることを保証するための多くの機能、ならびに、ある量のエラー訂正を提供する。例えば、送信側コンピュータは、それが２０パケットのうち最初のパケットであることを指し示すパケットを送信することができる。受信側コンピュータは、すべての２０パケットを接続セッションにおいて受信した後、受信確認（すなわち「ａｃｋ」）を送信側コンピュータシステムに提示して、すべての２０パケットが受信されたことを指し示す。ある場合には、受信側コンピュータシステムは、自らが受信しているパケット毎にａｃｋを送信する場合もある。信頼性のあるメッセージング（「ＲＭ」）メカニズムを使用する場合では、送信側コンピュータシステムがパケット毎にａｃｋを、またはすべての２０パケットにつきａｃｋを受信しない場合、送信側コンピュータシステムはメッセージ全体を再度送信する場合があり、または、個々のパケットを受信側コンピュータに必要に応じて再送信する場合もある。
【０００５】
したがって、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）およびファイル転送プロトコル（「ＦＴＰ」）など、多くの異なるフレーミングプロトコルがそれぞれコネクション指向トランスポートプロトコルの上に階層化されて、これらの前述の特性の１つまたは複数が利用される。例えば、クライアントコンピュータがＨＴＴＰを使用して情報を検索するとき、クライアントがウェブサーバに、歌をオンラインで購入してクライアントに送信するように依頼することができる、オンライン商取引の場合、クライアントコンピュータはウェブサーバとのＴＣＰ接続を確立し、ＨＴＭＬファイルまたはイメージなど、リソースのためのＨＴＴＰ要求、または、ウェブサーバがあるアクションを取るという要求を送信する。ウェブサーバはこの要求を受信し、対応する応答を提供し、この応答は、要求されたファイルのコンテンツを含むことができる。要求されたファイルを受信した後、または、クライアントコンピュータが、ウェブサーバとの通信が完了されると判断するとき、クライアントコンピュータはＴＣＰ接続をシャットダウンする。したがって、クライアントは、サービスの観点からアドレス可能である必要はない。例えば、クライアントはネットワークアドレス変換（ＮＡＴ）サーバの背後にあることができ、または、ＨＴＴＰプロキシを利用して、ファイアウォールを介して接続を橋渡しすることができる。もう１つの利点は、要求および応答が容易に相互に関連づけられ、各応答はそれに先行した要求に相互に関連づけられることである。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
要求応答メカニズムのこれらおよび他の利点にもかかわらず、一般に、要求側または応答側コンピュータシステムが、その情報がうまく転送されたことを知るための特定の方法はない。例えば、要求はサーバに到達し、サーバは応答を作成したかもしれないが、この応答はＨＴＴＰプロキシエラーにより失われていた。したがって、従来の要求応答メカニズムでは、応答が他のコンピュータシステムから受信されていない場合、要求側コンピュータシステムが要求を再送信することは一般的である。例えば、従来のウェブブラウザはしばしば「リフレッシュ」ボタンを提供し、ウェブページがロードできないとき、このボタンを使用してＨＴＴＰ要求を再試行することができる。例えば、インターネットのウェブページを単に要求するなど、いくつかの場合には、外見的に障害が起こった要求を繰り返すことは通常、有害な影響を有するようにはならない。例えば、冪等でないオペレーションによるなど、他の場合では、外見的に障害が起こった要求を繰り返すこと、または、適切に送信されていないように見えるメッセージを再送信することは、集約された影響を有する可能性があり、これは有害である場合がある。例えば、クライアントコンピュータは、銀行サーバから、最初の送金が成功したことを指し示す応答がないために、送金要求を銀行サーバに再送信するかもしれない。応答がないことは必ずしも、その要求が受信または処理されなかったことを指し示すとは限らない。例えば、要求は受信および処理されている可能性があるが、その応答は一時的なネットワーク切断またはＨＴＴＰプロキシ障害のために失われたということがある。したがって、銀行は、要求を再試行する上で送金の額を倍にする可能性があるが、これはクライアントによって意図されたものではなかった。
【０００７】
これらの難点は、応答側コンピュータシステム（例えば、銀行サーバ）が要求側コンピュータシステム（例えば、銀行顧客のクライアントＰＣ）と直接通信して、要求の状況を知らせることができない接続において、特に深刻である可能性がある。例えば、クライアントコンピュータシステムは接続において匿名的に通信中である可能性があり、または、ファイアウォールの後ろ側にある可能性があり、または、ネットワークアドレス変換（「ＮＡＴ」）サービスを受ける可能性がある。これらなどの場合、通常はクライアント、または要求側のコンピュータシステムのみが、通信を開始することができる。これは、受信確認および応答再送信を要求側に送信することが望ましい可能性がある場合、応答側コンピュータシステム（例えば、ネットワークサーバ）にとっての難点を生じる可能性がある。具体的には、現在、従来の要求応答プロトコルにおいて、特に、このような影響が集約されるべきでない場合にメッセージの影響を集約しないように、および、メッセージが望まれるような特定の順序でのみ処理されることを可能にするように、２つ以上のコンピュータシステムの間で信頼性のあるメッセージ転送を保証するための効率的なメカニズムはない。
【０００８】
したがって、信頼性のある要求応答メカニズムを保証するシステム、方法およびコンピュータプログラム製品は、当技術分野において利点となるであろう。具体的には、効率的な要求および応答メッセージならびにその対応する同一の受信確認を、ネットワーク接続の要求側および応答側コンピュータシステムの間で可能にする要求応答メカニズムにより、利点を実現することができる。さらに、要求側コンピュータのアドレスを識別することができるかどうかにかかわらず、アドレスを決定することが困難または不可能である接続において、または、このようなアドレスにサーバから接続することが不可能である場合に実施することができる、効率的な要求応答メカニズムにより、利点を実現することができる。
【課題を解決するための手段】
【０００９】
本発明は従来技術における前述の問題の１つまたは複数を、信頼性のあるメッセージングを要求応答環境内で保証するように構成されたシステム、方法およびコンピュータプログラム製品により解決する。具体的には、本発明の実施態様は部分的には、要求側コンピュータシステムによって送信されたメッセージを意図される方法でのみ処理するために、応答側コンピュータシステムに制約を課す、特定の要求および応答メカニズムに関する。
【００１０】
例えば、要求側コンピュータシステムの観点からの１つの方法は、応答側コンピュータシステムとのエンドツーエンド接続を確立することを含む。一実施態様では、エンドツーエンド接続は、処理が応答側コンピュータシステムでどのように発生するべきであるかを指し示す、接続コントラクトにより確立される。この方法はまた、第１のメッセージを応答側コンピュータシステムに送信することも含み、そして、第１のメッセージは第１の識別子を含む。要求側コンピュータシステムからの方法はまた、応答メッセージを応答側コンピュータシステムから受信することも含む。
【００１１】
加えて、すべての要求および応答メッセージが適切に受信確認されているとき、要求側コンピュータシステムの観点からの方法はまた、接続終了メッセージを応答側コンピュータシステムに送信することも含む。一実施態様では、終了メッセージは、終了メッセージ識別子、および、応答側コンピュータシステムによって送信されたすべての応答メッセージが受信されているという受信確認を含むことができる。その後、エンドツーエンド接続は、終了メッセージ識別子に関係する終了応答メッセージを要求側コンピュータシステムが受信するとき、終了される。
【００１２】
対照的に、応答側コンピュータシステムの観点からの方法は、要求側コンピュータシステムとのエンドツーエンド接続を受け入れることを含む。一実施態様では、これもまた、受信されたメッセージが処理されるようになる方法を命令する契約を含む。応答側コンピュータシステムの観点からの方法はまた、第１のメッセージを要求側コンピュータシステムから受信することも含み、そして、第１のメッセージは第１の識別子を含む。応答側コンピュータシステムは次いで、要求側コンピュータに応答メッセージを送信する。
【００１３】
すべての適切な応答メッセージが要求側コンピュータシステムによって受信された後、応答側コンピュータシステムは接続終了メッセージを要求側コンピュータシステムから受信する。終了メッセージは通常、終了メッセージ識別子、および、すべての応答メッセージが受信されたという要求側コンピュータシステムからの受信確認を含むようになる。応答側コンピュータシステムは次いで、終了メッセージ識別子に関係する終了応答メッセージ送信する。したがって、要求側および応答側コンピュータシステムは、エンドツーエンド接続において特定のメッセージの受信を確認する。
【００１４】
本発明の代表的な実施態様の追加の特徴および利点は以下の説明において示され、部分的にはその説明から明らかとなり、または、このような代表的な実施態様の実施によって知られるであろう。このような実施態様の特徴および利点は、特に付属の特許請求の範囲で指摘された手段および組み合わせによって実現され、得られるであろう。これらおよび他の特徴は、以下の説明および付属の特許請求の範囲からより十分に明らかとなり、または、以下に示されるこのような代表的な実施態様の実施によって知られるであろう。
【発明を実施するための最良の形態】
【００１５】
本発明は、信頼性のあるメッセージングを要求応答環境内で保証するように構成されたシステム、方法およびコンピュータプログラム製品に及ぶ。具体的には、本発明の実施態様は部分的には、要求側コンピュータシステムによって送信されたメッセージを意図される方法でのみ処理するために、応答側コンピュータシステムに制約を課す、特定の要求および応答メカニズムに関する。
【００１６】
本明細書および特許請求の範囲から理解されるように、本発明の一態様は、要求側コンピュータシステムと応答側コンピュータシステムの間の、両方のコンピュータシステムからのメッセージを一意に識別するエンドツーエンド接続を確立することに関する。本発明のもう１つの態様は、要求メッセージを応答側コンピュータシステムへ送信し、そのメッセージの後に応答側コンピュータシステムからの応答メッセージが続くことに関する。応答側コンピュータシステムは、要求側コンピュータシステムからの要求メッセージを受信確認し、要求側コンピュータシステムは、応答側コンピュータシステムからの応答メッセージを受信確認する。本発明のさらなる態様は、応答側コンピュータシステムからの終了確認メッセージをも実施する方法で、通信を終了することに関する。
【００１７】
例えば、図１は、要求側コンピュータシステム１００によって送信されたすべてのメッセージが応答側コンピュータシステム１０５によって適切に受信確認され、逆もまた同様である、本発明による一連の要求応答を例示する。一般に、本明細書で説明するエンドツーエンド接続を、ＴＣＰなど、要求応答対話に備えるいずれかのタイプのネットワーク接続の上に階層化することができ、その上に、ＨＴＴＰなど、階層化要求応答フレーミングプロトコルが階層化される。言うまでもなく、本発明により実施することができる、他の要求応答トランスポートおよびフレーミングプロトコルがある。
【００１８】
いずれにしても、図１は、要求側コンピュータシステム１００が接続開始要求メッセージ１１０「Ｃｒｅａｔｅ  Ｓｅｑｕｅｎｃｅ［Ｏｆｆｅｒ＝Ａ］」を応答側コンピュータシステム１０５に送信することによって、エンドツーエンド接続を開始することを示す。このエンドツーエンド接続は、１つまたは複数の基礎となるネットワーク接続を介して持続することができ、１つまたは複数のトランスポート接続が要求側コンピュータシステム１００と応答側コンピュータシステム１０５の間で同時に存在できるようにし、これらの接続がエンドツーエンド接続識別子を使用して区別されるようにする。要求メッセージ１１０は識別子「Ａ」を含み、この識別子は応答側コンピュータシステム１０５によってエンドツーエンド接続内のすべてのメッセージに対して使用されるようになる。図１はまた、応答側コンピュータシステム１０５が、確立された接続に対して応答１２０「Ｃｒｅａｔｅ  ＳｅｑｕｅｎｃｅＲｅｓｐｏｎｓｅ［Ｂ］」によりその接続を受け入れることも示す。応答メッセージ１２０は識別子「Ｂ」を含み、この識別子は要求側コンピュータシステム１００によって、確立されたエンドツーエンド接続内でそれが送信するすべてのメッセージに対して使用されるようになる。
【００１９】
要求側コンピュータシステム１００と応答側コンピュータシステム１０５の間のエンドツーエンド接続を確立するとき、またはその前に、２つのコンピュータはまた接続「コントラクト」を設定することもできる。例えば、接続要求メッセージ１１０は接続コントラクト（図示せず）の識別子を含むことができ、この接続コントラクトはメッセージ１２０内で同意される。接続コントラクトは、かなり多数のエンドに対しても構成することができるいくつもの命令をも含むことができる。例えば、一つの実施態様では、接続コントラクトは、応答側コンピュータシステム１０５によって受信された各メッセージが「正確に１回」または「多くて１回」または「少なくとも１回」処理されることを必要とする。
【００２０】
もう１つの実施態様では、接続コントラクトは、処理が順序付きの方法で、または、要求側コンピュータシステム１００が応答側コンピュータシステム１０５からのすべての応答メッセージの受信を確認した後でのみ、行われることを指し示す。例えば、応答側コンピュータシステム１０５はすべての受信されたメッセージをキャッシュすることを必要とされる場合があり、すべてのメッセージが受信された後（どのような順序であれ）、および、要求側コンピュータシステム１００によって適切に受信確認された後、応答側コンピュータシステム１０５は次いで、受信されたメッセージを特定の順序で処理することができる。応答側コンピュータシステム１０５は次いで、要求側コンピュータシステム１００によって後に引っ張られるであろう応答を準備するようになる。
【００２１】
エンドツーエンド接続（および関係するコントラクト）が確立された後、要求側コンピュータシステム１００は応答側コンピュータシステム１０５に、エンドツーエンド接続の第１のメッセージ１３０を送信する。第１のメッセージ１３０「Ｓｅｑｕｅｎｃｅ［Ｂ，１］ＩＤ［α］」は識別子「Ｂ」を含み、この識別子は、応答側コンピュータシステム１０５によってメッセージ１２０内で提供されたものである。メッセージ１３０はまた、第１のメッセージ１３０のための連続番号「１」（すなわち、「Ｂ，１」）、および、別の第１の識別子「α」をも含む。第１の識別子「α」はメッセージ１３０を、第１のメッセージ１３０の相対的連続番号「１」とは別に一意に識別する。第１のメッセージ１３０を受信すると、応答側コンピュータシステムは応答メッセージ１４０「Ｓｅｑｕｅｎｃｅ［Ａ，１］，Ａｃｋ［Ｂ，１−１］，ＲｅｌａｔｅｓＴｏ［α］」を送信し、このメッセージは第１の識別子「α」に関係し、受信確認Ａｃｋ［Ｂ，１−１］を含み、これは、どの要求メッセージが応答側コンピュータシステム１０５によって受信されているかを指し示す。
【００２２】
一つの実施態様では、要求および応答が通信スタックのトランスポートレベルで相関されるときなど、応答メッセージ１４０を要求側コンピュータシステム１００に、第１のメッセージ１３０を配信するために使用されたトランスポート接続の返信レグ上でのみ送信することができる。もう１つの実施態様では、要求および応答が通信スタックのメッセージレベルで相関されるときなど、応答メッセージ１４０を要求側コンピュータシステム１００に、要求側コンピュータシステム１００によって確立されたいかなるトランスポート接続のいかなる返信レグ上でも戻すことができる。これは一つの実施態様において可能であり、これは、メッセージング層で相関されたメッセージが、要求側コンピュータシステム１００のためのある相関情報を含むことができ、それにより要求側コンピュータシステム１００は応答メッセージを、以前に送信した要求メッセージと突き合わせることが可能となるからである。例えば、応答側コンピュータシステム１０５からの返信メッセージで障害が起こっている可能性があり、後の返信に付属する後続の受信確認は、以前の要求が実際には受信されたことを指し示すようになる。したがって、要求側コンピュータシステム１００は、前の返信が失われたことを指し示す、最後の返信についての受信確認メッセージを送信することができる。応答側コンピュータシステム１０５は、要求側コンピュータシステム１００から受信された受信確認メッセージの返信レグを使用して、返信メッセージを再送信し、相関情報をメッセージ内で提供する（例えば、「ＲｅｌａｔｅｓＴｏ［α］」）ことができる。
【００２３】
いずれにしても、図１は、応答メッセージ１４０が識別子「Ａ，１」を含むことを示し、この識別子は、メッセージ１４０が、確立されたエンドツーエンド接続（「Ａ」）に対して応答側コンピュータシステム１０５によって送信された第１のメッセージ（「１」）であることを指し示す。応答メッセージ１４０はまた受信確認「Ａｃｋ［Ｂ，１−１］」をも含み、この受信確認は、応答側コンピュータシステム１０５が、要求側コンピュータシステム１００によって使用されたエンドツーエンド接続識別子「Ｂ」において送信されたメッセージ１ないし１を有することを受信確認する。応答メッセージ１４０はまた、メッセージ１４０が第１の識別子「α」に関係する（すなわち、「ＲｅｌａｔｅｓＴｏ」）ことも指し示し、この識別子は、要求側コンピュータシステム１００に、メッセージ１４０が第１の要求メッセージへの応答（すなわち、「ＩＤ［α］」）であることを指し示す。
【００２４】
要求側コンピュータシステム１００はまた、第２のメッセージ１５０「Ｓｅｑｕｅｎｃｅ［Ｂ，２，ＬＡＳＴ］，Ａｃｋ［Ａ，１−１］ＩＤ［β］」をも送信する。第２のメッセージ１５０は識別子「Ｂ，２」を含み、この識別子は、メッセージ１５０が、コンピュータシステム１００によって、確立されたエンドツーエンド接続についてのその識別子（すなわち、「Ｂ」）において送信された第２のメッセージであることを指し示す。第２のメッセージ１５０はまた識別子「ＬＡＳＴ」をも含み、この識別子は、メッセージ１５０が、コンピュータシステム１００によって、確立されたエンドツーエンドについてのその識別子「Ｂ」において送信されるべきアプリケーションメッセージの最後であることを指し示す。第２のメッセージ１５０はさらに受信確認「Ａｃｋ［Ａ，１−１］」をも含み、この受信確認は、応答側コンピュータシステム１０５に、要求側コンピュータシステム１００が返信メッセージ１４０を受信していることを確認する。加えて、第２のメッセージ１５０は、それが送信された順序におけるその序数（すなわち、「Ｂ，１」、「Ｂ，２」など）には関係なく、特にメッセージ１５０を識別する第２の識別子「β」を含む。
【００２５】
したがって、図１は、応答側コンピュータシステム１０５がメッセージ１５０を受信し、応答メッセージ１６０「Ｓｅｑｕｅｎｃｅ［Ａ，２，ＬＡＳＴ］，Ａｃｋ［Ｂ，１−２］，ＲｅｌａｔｅｓＴｏ［β］」により返信することを示す。応答メッセージ１６０は識別子［Ａ，２，ＬＡＳＴ］を含み、この識別子は、メッセージ１６０が、応答側コンピュータシステム１０５によって、確立されたエンドツーエンド接続についてのその識別子「Ａ」と共に送信された第２の受信確認メッセージであること、および、メッセージ１６０が、確立されたエンドツーエンド接続についての受信側コンピュータシステムの識別子（「Ａ」）において送信された「最後の」メッセージであることを指し示す。応答メッセージ１６０はさらに受信確認「Ａｃｋ［Ｂ，１−２］」を含み、この受信確認は、応答側コンピュータシステム１０５が、要求側コンピュータシステム１００によって使用されたエンドツーエンド接続識別子（「Ｂ」）において連続番号が付けられたメッセージ１ないし２を受信していることを識別する。加えて、応答メッセージ１６０は第２の識別子「β」を含み、この識別子は、要求側コンピュータシステム１００に、これが以前に送信された第２の要求メッセージ１５０（すなわち、「ＩＤ［β］」）への応答であることを指し示す。
【００２６】
応答メッセージ１６０を受信すると、要求側コンピュータシステム１００は、メッセージ交換がうまく完了したと判断し、確立されたエンドツーエンド接続を終了させるためのステップを開始する。具体的には、図１は、要求側コンピュータシステム１００が接続終了メッセージ１７０「Ｔｅｒｍｉｎａｔｅ［Ｂ］，Ａｃｋ［Ａ，１−２］ＩＤ［γ］」を送信することを示す。接続終了メッセージ１７０は、終了中であるエンドツーエンド接続を識別するための識別子「Ｂ」を含み、また、受信確認「Ａｃｋ［Ａ，１−２］」をも含む。受信確認「Ａｃｋ［Ａ，１−２］」は、要求側コンピュータシステム１００が第１および第２の応答メッセージ（すなわち、１４０、１６０）の両方を応答側コンピュータシステム１０５から受信していることを指し示す。接続終了メッセージ１７０はまた終了メッセージ識別子「γ」をも含み、この識別子はメッセージ１７０を一意に識別する。
【００２７】
応答側コンピュータシステム１０５は、終了応答メッセージ１８０「Ｔｅｒｍｉｎａｔｅ［Ａ］，ＲｅｌａｔｅｓＴｏ［γ］」により返信する。応答受信確認１８０は識別子「Ａ」を含み、この識別子は、どのエンドツーエンド接続が終了中であるかを指し示す。応答受信確認１８０はまた、それが終了メッセージ識別子「γ」に「ＲｅｌａｔｅｓＴｏ」するという指示をも含む。これを使用して、要求側コンピュータシステム１００に対し、応答側コンピュータシステム１０５が実際に特定の接続終了メッセージ１８０を受信したことを確認することができる。したがって、図１は、要求側コンピュータシステム１００および応答側コンピュータシステム１０５が、単に受信されたメッセージまたはメッセージのセットの一般的な受信確認を提供する以上のことを行うことを示す。具体的には、確立されたエンドツーエンド接続における要求側および応答側コンピュータシステムは豊富なメッセージ情報を提供することができ、この情報を使用して、特定のメッセージをこれらのメッセージの特定の受信確認、および処理のある順序と相関させることができる。
【００２８】
図２は、図１に類似の要求応答シナリオを例示するが、ただし、応答側コンピュータシステム１０５からの応答メッセージのうち１つで障害が起こっている。具体的には、図２は、要求側コンピュータシステム１００および応答側コンピュータシステム１０５がエンドツーエンド接続をメッセージ２００および２１０により確立することを示し、これらのメッセージは実質的に図１のメッセージ１１０および１２０に類似している。エンドツーエンド接続を確立すると、要求側コンピュータシステム１００は第１の要求メッセージ２２０「Ｓｅｑｕｅｎｃｅ［Ｂ，１］，ＩＤ［α］」を送信し、このメッセージは実質的に図１のメッセージ１３０に類似しており、第１の識別子「α」を含む。図２はまた、応答側コンピュータシステム１０５が応答メッセージ２４０「Ｓｅｑｕｅｎｃｅ［Ａ，１］，Ａｃｋ［Ｂ，１−１］ＲｅｌａｔｅｓＴｏ［α］」を送信することも示すが、図２は、メッセージ２４０が要求側コンピュータシステム１００に到達することができないことを示す。
【００２９】
いかなる他の応答メッセージを受信する前にも、要求側コンピュータシステム１００は第２の要求メッセージ２３０「Ｓｅｑｕｅｎｃｅ［Ｂ，２，ＬＡＳＴ］，ＩＤ［β］」を送信し、このメッセージは実質的に図１のメッセージ１５０に類似しているが、ただし、メッセージ２３０は受信確認（例えば、「Ａｃｋ［＃＃］」）を含まない。具体的には、メッセージ２３０は応答側コンピュータシステム１０５に対し、応答側コンピュータシステム１０５が応答メッセージを送信しているにもかかわらず、要求側コンピュータシステム１００が応答メッセージを受信していない（すなわち、メッセージ２４０が受信されなかった）ことを指し示す。それにもかかわらず、応答側コンピュータシステム１０５はメッセージ２３０に、応答メッセージ２５０「Ｓｅｑｕｅｎｃｅ［Ａ，２］，Ａｃｋ［Ｂ，１−２］ＲｅｌａｔｅｓＴｏ［β］」により応答する。メッセージ２５０は、それが応答側コンピュータシステム１０５からの第２のメッセージ（すなわち、「Ａ，２」）であること、および、応答側コンピュータシステム１０５が要求側コンピュータシステム１００から順次に送信された両方のメッセージ（すなわち、「Ｂ，１−２」）を受信していることを指し示す。メッセージ２５０は第２の識別子「β」を含み、この識別子は要求側コンピュータシステム１００に、メッセージ２５０が第２の要求メッセージ２３０（すなわち、「ＩＤ［β］」）への応答であることを指し示す。
【００３０】
メッセージ２５０を受信すると、要求側コンピュータシステム１００は、メッセージ２５０がそのシーケンスにおける第２のメッセージ（すなわち、「Ｓｅｑｕｅｎｃｅ［Ａ，２］」）として識別されるので、応答側コンピュータシステム１０５がメッセージ２２０および２３０の両方に返信していると信じることを、認識する。しかし、要求側コンピュータシステム１００は決して、第１の識別子「α」に関係する特定の応答メッセージを応答側コンピュータシステム１０５から受信しなかった（すなわち、メッセージ２４０を受信しなかった）ので、要求側コンピュータシステム１００はメッセージ２６０「Ｓｅｑｕｅｎｃｅ［Ｂ，１］，Ａｃｋ［Ａ，２］，ＩＤ［α］」を再送信する。いくつかの点では、メッセージ２６０は単にメッセージ２２０の複製であるのは、メッセージ２６０が識別子「Ｂ，１」を含み、この識別子は、これが要求側コンピュータシステム１００によって送信されたシーケンスにおける第１のメッセージであることを示し、かつ、メッセージ２６０が第１の識別子「α」を含むためだからである。それにもかかわらず、メッセージ２６０が他の点で異なるのは、メッセージ２６０が受信確認「Ａｃｋ［Ａ，２］」（「Ａ，１−２」ではない）を含むためだからであり、この受信確認は応答側コンピュータシステム１０５に、応答メッセージ２５０「Ａ，２」のみ（両方のメッセージ２４０「Ａ，１」および２５０「Ａ，２」ではない）が受信されていることを伝えている。
【００３１】
メッセージ２６０を受信するとき、応答側コンピュータシステム１０５は必ずしも「α」として識別されたメッセージを再処理するとは限らないが、むしろ、メッセージ２６０を、接続コントラクトの一部として廃棄する。例えば、応答側コンピュータシステム１０５は、接続コントラクトが「正確に１回」または「多くても１回」の処理を必要とする場合、メッセージ２６０を廃棄する場合がある。この場合、応答メッセージは、受信確認されるまでキャッシュされるようになり、次いで、再伝送に応答して要求側コンピュータシステム１００へ再送信されるようになる。あるいは、応答側コンピュータシステム１０５は、接続コントラクトが「少なくとも１回」の処理を指示する場合、両方のメッセージ２２０および２６０を処理する場合がある。例えば、メッセージ２６０を、メッセージ２２０のアップデートされたバージョンにすることができるのは、メッセージ２２０および２６０は他の大部分の点で等しいからである。
【００３２】
いずれにしても、図２は、応答側コンピュータシステム１０５が応答メッセージ２７０「Ｓｅｑｕｅｎｃｅ［Ａ，１］，Ａｃｋ［Ｂ，１−２］ＲｅｌａｔｅｓＴｏ［α］」により返信することを示す。応答メッセージ２７０は、それが本質的に第１の応答メッセージ２４０のコピーであること（すなわち、「Ａ，１」）を識別する。しかし、メッセージ２７０はまた受信確認「Ａｃｋ［Ｂ，１−２］」をも含み、この受信確認は、それが要求側コンピュータシステム１００によって送信されたメッセージ２２０および２３０の両方を受信していることを指し示す。加えて、「ＲｅｌａｔｅｓＴｏ」フィールド内の一意の第１の識別子「α」は要求側コンピュータシステム１００に、応答メッセージ２７０が第１の要求メッセージ（「ＩＤ［α］」）への応答であることを指し示す。
【００３３】
要求側コンピュータシステム１００が今回はメッセージ２７０を受信すると仮定すると、要求側コンピュータシステム１００は、エンドツーエンド接続を終了させるためのステップを開始する。しかし、要求メッセージ２２０および２６０の繰り返し、ならびに、応答メッセージ２４０および２７０の繰り返しを、両方のコンピュータシステムが互いのメッセージを十分に受信確認するまで、継続的に再送信されうることは理解されよう。一つの実施態様では、例えば、要求側コンピュータシステム１００を、以前に送信された要求メッセージを再送信する前に、各応答メッセージを所定の時間（ほんの一瞬、数秒、数分など）で待機するように構成することができる。あるいは、要求側コンピュータシステム１００を、送信エラーを中間ノード（例えば、ＨＴＴＰプロキシサーバ）から受信するときは常に、以前に送信された要求メッセージを再送信するように構成することができる。
【００３４】
しかし、要求側コンピュータシステム１００は、メッセージをチェック、および、または、再送信するように構成され、応答側コンピュータシステム１０５は、受信されたメッセージのいずれかまたはすべてを接続コントラクトに従って処理することに制限される。いずれにしても、確立されたエンドツーエンド接続を閉じるために、要求側コンピュータシステム１００は接続終了メッセージ２８０「Ｔｅｒｍｉｎａｔｅ［Ｂ］Ａｃｋ［Ａ，１−２］，ＩＤ［γ］」を送信し、応答側コンピュータシステムは終了応答メッセージ２９０「Ｔｅｒｍｉｎａｔｅ［Ａ］，ＲｅｌａｔｅｓＴｏ［γ］」により返信し、このメッセージは終了メッセージ識別子「γ」に関係する。したがって、メッセージ２８０および２９０は実質的には、図１のメッセージ１７０および１８０についてそれぞれ説明したものと同じ機能を果たす。
【００３５】
図３は、要求側コンピュータシステム１００によって送信された少なくとも１つのメッセージで障害が起こるというシナリオ以外は、以前の図に類似した要求応答シナリオを例示する。例えば、図３は、要求側コンピュータシステム１００および応答側コンピュータシステム１０５がエンドツーエンド接続を、各々、要求メッセージ３００「ＣｒｅａｔｅＳｅｑｕｅｎｃｅ［Ｏｆｆｅｒ＝Ａ］」および応答メッセージ３１０「ＣｒｅａｔｅＳｅｑｕｅｎｃｅＲｅｓｐｏｎｓｅ［Ｂ］」により確立することを示す。エンドツーエンド接続を確立すると、要求側コンピュータシステム１００は、第１の識別子「α」を有する第１のメッセージ３２０「Ｓｅｑｕｅｎｃｅ［Ｂ，１］，ＩＤ［α］」を送信し、かつ、また、第２の識別子「β」を有する第２のメッセージ３３０ａ「Ｓｅｑｕｅｎｃｅ［Ｂ，２］，ＩＤ［β］」を送信する。第１のメッセージ３２０を受信した後、および、要求側コンピュータシステム１００がメッセージ３３０ａを送信したすぐ後またはその前に、応答側コンピュータシステム１０５は応答メッセージ３５０「Ｓｅｑｕｅｎｃｅ［Ａ，１］，Ａｃｋ［Ｂ，１−１］ＲｅｌａｔｅｓＴｏ［α］」を送信する。
【００３６】
メッセージ３５０を受信するのに先立って、要求側コンピュータシステム１００はまた、第３の識別子「γ」を有する第３のメッセージ３４０「Ｓｅｑｕｅｎｃｅ［Ｂ，３，ＬＡＳＴ］，ＩＤ［γ］」をも送信する。メッセージ３２０、３３０ａまたは３４０のいずれも、図１および２におけるように、応答メッセージのためのいかなる受信確認のインジケータをも含まず、これは、要求側コンピュータシステム１００がまだいかなる応答メッセージをも応答側コンピュータシステム１０５から受信していないからである。最終的に、要求側コンピュータシステム１００が応答メッセージ３５０を受信するとき、要求側コンピュータシステム１００は即時に、メッセージ３２０を受信した直後に応答メッセージ３５０が、「ＩＤ［α］」によって識別された第１のメッセージ３２０に応答して送信されたことを、識別する。要求側コンピュータシステム１００が「ＲｅｌａｔｅｓＴｏ［α］」を特定したので、この識別は可能であり、この「ＲｅｌａｔｅｓＴｏ［α］」は、メッセージ３５０が第１の要求メッセージ３２０に対する応答メッセージであることを指し示す。
【００３７】
図３はまた、応答側コンピュータシステム１０５が応答メッセージ３６０「Ｓｅｑｕｅｎｃｅ［Ａ，２］，Ａｃｋ［Ｂ，１，３］ＲｅｌａｔｅｓＴｏ［γ］」を送信することも示すが、このメッセージは、応答側コンピュータシステム１０５によって送信された第２の応答（すなわち、「Ａ，２」）でしかない。この場合、順序付け要件は接続コントラクトによって課せられておらず、それにより、送信された第３のメッセージ３４０が、応答側コンピュータシステム１０５によって第２のメッセージ３３０ａ（到着できなかった）を受信する前に処理されることが可能となった。メッセージ３６０はまた、応答側コンピュータシステム１０５がメッセージ３２０および３４０を、識別子「Ａｃｋ［Ｂ，１，３］」を使用して受信していることも指し示す。加えて、メッセージ３６０はまた第３の識別子「γ」をも含むので、メッセージ３６０は要求側コンピュータ１００に、この返信が、この同じ識別子「γ」を伝えたメッセージ３４０に応答するものであることを指し示す。
【００３８】
要求側コンピュータ１００はメッセージ３２０および３４０の受信のみの確認を有するので、要求側コンピュータシステム１００は第２のメッセージ３３０ａを再送信する。具体的には、図３は、要求側コンピュータシステム１００がメッセージ３３０ａをメッセージ３３０ｂ「Ｓｅｑｕｅｎｃｅ［Ｂ，２］，Ａｃｋ［Ａ，１−２］，ＩＤ［β］」として再送信することを示す。メッセージ３３０ｂは、それが送信された第２のメッセージ「Ｂ，２」であることを指し示し、また、第１および第２の応答メッセージ３５０および３６０が受信されているという「Ａｃｋ［Ａ，１−２］」をも指し示す。メッセージ３３０ｂはまた、メッセージ３３０ａに含まれた識別子「β」をも含む。メッセージ３３０ｂを受信すると、応答側コンピュータシステム１０５は応答メッセージ３７０「Ｓｅｑｕｅｎｃｅ［Ａ，３］，Ａｃｋ［Ｂ，１−３］ＲｅｌａｔｅｓＴｏ［β］」を送信する。メッセージ３７０は、それが第３の応答メッセージ（すなわち、「Ａ，３」）であることを指し示し、また、応答側コンピュータシステム１０５がこのとき、要求側コンピュータシステム１００が送信している３つのメッセージのうち各々（すなわち、「Ａｃｋ［Ｂ，１−３］」）を受信していることをも指し示す。加えて、メッセージ３７０の「ＲｅｌａｔｅｓＴｏ」フィールド内の第２の識別子「β」は要求側コンピュータシステム１００に、このメッセージが、再試行された要求メッセージ３３０ｂに応答するものであることを指し示す。
【００３９】
すべてのメッセージがこのとき、要求側コンピュータシステム１００と応答側コンピュータシステム１０５の間で適切に受信および確認されているので、要求側コンピュータシステム１００はエンドツーエンド接続を終了させる。具体的には、要求側コンピュータシステム１００は接続終了メッセージ３８０「Ｔｅｒｍｉｎａｔｅ［Ｂ］Ａｃｋ［Ａ，１−３］，ＩＤ［δ］」を送信し、このメッセージ３８０は応答メッセージ３５０、３６０および３７０の各々を識別子「Ａｃｋ［Ａ，１−３］」により受信確認し、終了メッセージ識別子「δ」を含む。応答側コンピュータシステム１０５は次いで、終了メッセージ識別子「δ」に関係する応答メッセージ３９０「Ｔｅｒｍｉｎａｔｅ［Ａ］，ＲｅｌａｔｅｓＴｏ「δ」」により応答する。
【００４０】
したがって、本明細書で説明したスキーマは幅広い範囲のメッセージ伝送障害に対処し、メッセージが意図されたように要求側コンピュータシステムによって処理されることを保証する。具体的には、本明細書で説明したスキーマは、メッセージが応答側コンピュータシステムで受信される順序にかかわらず、要求側コンピュータシステムによって意図されたように、それらのメッセージを指定された順序で応答側コンピュータシステムでどのように処理することができるかを例示する。本発明をまた、本発明の方法を実施するための動作に関して説明することもできる。具体的には、図４は、要求側コンピュータシステム１００の観点および応答側コンピュータシステム１０５の観点から、要求応答方法においてメッセージを確実に送信および受信する方法を流れ図において例示する。
【００４１】
例えば、図４は、要求側コンピュータシステム１００の観点からの方法が、エンドツーエンド接続を確立する動作４００を備えることを示す。動作４００はまた、応答側コンピュータシステムとのネットワーク接続を確立することも含む。例えば、要求側コンピュータシステムは４００で、メッセージ１１０「Ｃｒｅａｔｅ  Ｓｅｑｕｅｎｃｅ［Ｏｆｆｅｒ＝Ａ］」を送信し、このメッセージは接続コントラクト（図示せず）を含むことができ、接続コントラクトは、どのようにメッセージが応答側コンピュータシステム１０５によって接続内で処理されるべきであるかを表すことができる。同様に、応答側コンピュータシステム１０５の観点からの方法は、エンドツーエンド接続を受け入れる動作４１０を備える。動作４１０は、要求側コンピュータシステムとのエンドツーエンド接続を受け入れることを含む。例えば、応答側コンピュータシステム１０５は、メッセージ１２０「Ｃｒｅａｔｅ  ＳｅｑｕｅｎｃｅＲｅｓｐｏｎｓｅ［Ｂ］」を送信することによってエンドツーエンド接続を受け入れ、接続コントラクトの条件により（指定された場合）エンドツーエンド接続を受け入れる。
【００４２】
加えて、図４は、要求側コンピュータシステム１００の観点からの方法が、第１のメッセージを送信する動作４２０を備えることを示す。動作４２０は、第１のメッセージを応答側コンピュータシステムに送信することを含み、第１のメッセージは第１の識別子を含む。例えば、要求側コンピュータシステム１００は、第１のメッセージ１３０「Ｓｅｑｕｅｎｃｅ［Ｂ，１］ＩＤ［α］」を送信することによって、要求返信シーケンスを開始し、このメッセージは、メッセージ１３０を一意に識別する第１の識別子「α」を含む。応答側コンピュータシステム１０５からの対応する方法は、したがって、第１のメッセージを受信する動作４３０を備える。動作４３０は、第１のメッセージを要求側コンピュータシステムから受信することを含み、第１のメッセージは第１の識別子を含む。例えば、応答側コンピュータシステム１０５はメッセージ１３０「Ｓｅｑｕｅｎｃｅ［Ｂ，１］ＩＤ［α］」を受信し、第１の識別子「α」を識別する。確立されたエンドツーエンド接続を定義するコントラクトに応じて、応答側コンピュータシステム１０５はまたメッセージ１３０を処理し、または、さらなる通知までメッセージ１３０のコンテンツをキャッシュすることができる。
【００４３】
応答側コンピュータシステム１０５からの方法はまた、応答メッセージを送信する動作４５０をも備える。動作４５０は、要求側コンピュータに応答メッセージを送信することを含む。例えば、メッセージ１３０を受信した後、応答側コンピュータシステム１０５はメッセージ１３０を処理し、応答メッセージ１４０「Ｓｅｑｕｅｎｃｅ［Ａ，１］，Ａｃｋ［Ｂ，１−１］，ＲｅｌａｔｅｓＴｏ［α］」を準備および送信し、このメッセージは、メッセージ１４０が第１の識別子「α」に関係（すなわち、「ＲｅｌａｔｅｓＴｏ」）するという標識を含む。したがって、図４は、要求側コンピュータシステム１００の観点からの方法がまた、応答メッセージを受信する動作４４０をも備えることを示す。動作４４０は、応答メッセージを応答側コンピュータシステムから受信することを含む。例えば、要求返信シーケンスは、要求側コンピュータシステム１００が応答メッセージ１４０「Ｓｅｑｕｅｎｃｅ［Ａ，１］，Ａｃｋ［Ｂ，１−１］，ＲｅｌａｔｅｓＴｏ［α］」を受信するとき、完了される。メッセージ１４０は受信確認の標識「Ａｃｋ［Ｂ，１−１］」および「関係する」（すなわち［ＲｅｌａｔｅｓＴｏ］）フィールドを含み、これらは第１のメッセージ１３０の受信を確認し、メッセージ１４０がメッセージ１３０に応答するものであることを指し示す。しかし、要求返信シーケンスはまた、第１のメッセージで障害が起こったと決定するとき、例えば、ある数の再試行の後、または、応答の待機におけるある量の遅延の後、終了される場合もある。
【００４４】
図４はまた、要求側コンピュータシステム１００の観点からの方法が、接続終了メッセージを送信する動作４６０を備えることも示す。動作４６０は接続終了メッセージを応答側コンピュータシステムに送信することを含み、終了メッセージは、終了メッセージ識別子、および、応答メッセージが受信されているという受信確認を含む。例えば、要求側コンピュータシステムは最終的に、応答側コンピュータシステム１０５から、要求側コンピュータシステム１００によって送信されたすべてのメッセージが受信されているという認識および確認を伝える応答メッセージを受信し、また、応答側コンピュータシステム１０５から送信されたすべての応答メッセージが受信されていることも識別する。その後、要求側コンピュータシステム１００は接続終了メッセージ１７０「Ｔｅｒｍｉｎａｔｅ［Ｂ］，Ａｃｋ［Ａ，１−２］ＩＤ［γ］」を送信する。接続終了メッセージ１７０はまた、受信された応答メッセージ「Ａｃｋ［Ａ，１−２］」を受信確認し、特定の終了メッセージ識別子「γ」を含む。
【００４５】
さらに、図４は、応答側コンピュータシステム１０５の観点からの方法が、接続終了メッセージを受信する動作４７０を備えることを示す。動作４７０は、接続終了メッセージを要求側コンピュータシステムから受信することを含み、終了メッセージは、終了メッセージ識別子、および、応答メッセージが受信されたという受信確認を含む。例えば、応答側コンピュータシステム１０５は、メッセージ１７０「Ｔｅｒｍｉｎａｔｅ［Ｂ］，Ａｃｋ［Ａ，１−２］ＩＤ［γ］」を受信し、このメッセージは、応答メッセージ１４０および１６０の受信を確認し（すなわち、「Ａｃｋ［Ａ，１−２］」を介して）、メッセージ１７０を一意に識別する終了識別子「γ」を含む。
【００４６】
応答において、図４は、応答側コンピュータシステム１０５の観点からの方法が、応答メッセージを送信してエンドツーエンド接続終了プロセスを完了させる動作４９０を備えることを示す。動作４９０は、終了メッセージ識別子に関係する応答終了メッセージを送信することを含む。例えば、応答側コンピュータシステム１０５は終了応答メッセージ１８０「Ｔｅｒｍｉｎａｔｅ［Ａ］，ＲｅｌａｔｅｓＴｏ［γ］」を送信し、このメッセージはエンドツーエンド接続終了メッセージ１７０内の終了識別子「γ」を「ＲｅｌａｔｅｓＴｏ」に有する。したがって、図４は、要求側コンピュータシステム１００の観点からの方法が、終了応答メッセージを受信する動作４８０を備えることを示す。動作４８０は、終了メッセージ識別子に関係する終了応答メッセージを受信することを含む。例えば、要求側コンピュータシステム１００はメッセージ１８０を受信し、このメッセージは、エンドツーエンド接続を終了させるための要求を確認し、したがって要求側コンピュータシステム１００がエンドツーエンド接続を閉じることを可能にする。
【００４７】
本明細書で説明または例示した実施態様をまた、メッセージ、応答および／または受信確認を適切なときに交換するために構成された、要求側コンピュータシステム１００および応答側コンピュータシステム１０５を有するシステムに関して説明することもできる。以下のシステムの実施例もまた、前の概略図に関して説明する。すなわち、要求側コンピュータシステムが要求メッセージを応答側コンピュータシステムに送信し、応答側コンピュータシステムが各要求メッセージに、応答メッセージにより応答する、コンピュータ化環境システムにおいて、要求メッセージを確実に送信および受信し、要求返信トランスポートを使用して応答メッセージを確実に送信および受信するための方法は、下記による動作を含む。
【００４８】
ある場合においては、要求側コンピュータシステム１００は、接続要求メッセージ（例えば、１１０）を応答側コンピュータシステムへ要求返信トランスポート接続の要求レグ上で送信することによって、応答側コンピュータシステム１０５とのエンドツーエンド接続を確立する。応答時には、応答側コンピュータシステム１０５は接続要求を受け入れ、そのような受け入れ指示を要求側コンピュータシステムへ要求返信トランスポート接続の返信レグ上で提供する。すなわち、応答側コンピュータシステム１０５は、接続受け入れメッセージ（例えば、１２０）を要求返信トランスポート接続の返信レグ上で送信する。このメッセージ交換の完了の後、要求側コンピュータシステム１００および応答側コンピュータシステム１０５はエンドツーエンド接続を確立する。要求側コンピュータシステム１００は次いで要求返信シーケンスを開始し、それが確立した要求返信トランスポート接続の要求レグを使用して、要求メッセージ（例えば、１３０）を送信する。要求側コンピュータシステム１００はまた、要求メッセージが応答側コンピュータシステム１０５によって受信確認されるまで、要求メッセージ（例えば、１３０）をキャッシュする。
【００４９】
要求側コンピュータシステム１００からの要求メッセージ（例えば、１１０）が応答側コンピュータシステム１０５に到達するとき、応答側コンピュータシステム１０５は要求メッセージ（例えば、１１０）を処理し、対応する応答メッセージ（例えば、１４０）を作成する。応答メッセージ（例えば、１４０）は、要求側コンピュータシステム１００の要求メッセージ１１０が受信されたことを指し示す受信確認（例えば、「Ａｃｋ［Ｂ，１−１］」）を含む。要求メッセージ（例えば、１３０）を有する要求側コンピュータシステム１００に似て、応答側コンピュータシステム１０５もまた、応答メッセージ（例えば、１４０）が要求側コンピュータシステム１００によって適切に受信確認されるまで、応答メッセージ（例えば、１４０）をキャッシュする。応答側コンピュータシステム１０５は次いで応答メッセージ（例えば、１４０）を要求側コンピュータシステム１００へ、要求側コンピュータシステムによって確立された要求返信トランスポート接続の返信レグのみを使用して送信する。
【００５０】
送信されたメッセージのための要求返信シーケンスは、要求側コンピュータシステム１００が応答メッセージ（例えば、１４０）を受信するときに終了され、このメッセージは、要求側コンピュータシステム１００が送信した要求メッセージについての受信確認（例えば、「Ａｃｋ［Ｂ，１−１］」）を含む。（あるいは、他の場合では、要求メッセージでいくつかの理由のために障害が起こっているという判定の後、要求返信シーケンスが終了される場合がある。）要求側コンピュータシステム１００は次いで、要求メッセージのキャッシュコピーを削除する。要求側コンピュータシステム１００はまた、受信された応答メッセージ（例えば、１４０）についての受信確認（例えば、「Ａｃｋ［Ａ，１−１］」）を、応答側コンピュータシステム１０５へ送信する次のメッセージ（例えば、１５０）に付加する。
【００５１】
要求側コンピュータシステム１００および応答側コンピュータシステム１０５は、上述の方法でさらなるメッセージを交換し続けることができる。例えば、要求側コンピュータシステム１００は要求メッセージを送信し続け、応答側コンピュータシステム１０５に、対応する応答メッセージを送信するための要求返信接続の返信レグを提供することができる。加えて、要求側および応答側コンピュータシステムは、他方のコンピュータシステムがこれらのメッセージの受信を（最初に送信されたメッセージであるか、再試行であるかにかかわらず）認識するまで、メッセージをキャッシュし続ける。さらに、要求側および応答側コンピュータシステムはまた、対応する受信確認を、送信するメッセージに付加し、送信されたメッセージが他方のコンピュータシステムに、他方のコンピュータシステムが送信したメッセージの受信が成功したことを示すようにする。さらに、メッセージが適切に受信確認されるとき、両方のコンピュータシステムは、これらのメッセージのキャッシュされたバージョンを削除する。
【００５２】
すべての要求メッセージが適切に送信および受信確認されており、すべての返信メッセージが受信されており、要求返信シーケンスのいずれかまたはすべてが完了しているようになった後、要求側コンピュータシステム１００は接続終了メッセージ（例えば、１７０）を、確立された要求返信トランスポート接続の要求レグ上で送信し、接続終了メッセージ（例えば、１７０）は、最後に受信されたもの（例えば、１６０）を含む、すべての応答側コンピュータシステムの応答メッセージの受信確認（例えば、「Ａｃｋ［Ａ，１−２］」）を含む。応答側コンピュータシステム１０５は次いで、接続終了メッセージ（例えば、１７０）および添付の受信確認（例えば、「Ａｃｋ［Ａ，１−２］」）を受信し、確認されている応答メッセージのキャッシュコピーを削除する。
【００５３】
したがって、本明細書で説明したスキーマおよび方法は、要求応答トランスポートを使用した信頼性のあるメッセージングに関係した多くの利点を提供する。例えば、本発明の実施態様は、確立されたエンドツーエンド接続内の要求側または応答側コンピュータシステムのところであるか、トランスポート中間物（例えば、ＨＴＴＰプロキシサーバ）またはメッセージング中間物（ＳＯＡＰルータなど）など、接続における１つまたは複数の中間ノードのところであるかにかかわらず、幅広い範囲のメッセージング障害に対処することができる。
【００５４】
加えて、本発明の１つまたは複数の実施態様は、適切に受信確認されないメッセージを再送信することができるが、それにもかかわらず、接続コントラクトと一致する場合のみ処理することができることを、保証することを含む。一態様では、これは、望まれる場合に重複処理を避けうることを保証することができ、または、望まれる場合に順序付き処理を実施しうることを保証することができる。さらに、本発明の実施態様は、通信スタックのトランスポートまたはメッセージ層がメッセージを相関させているかどうかに応じて、返信メッセージが、基礎となる要求返信トランスポートの適切な応答レグ上で送信されることを可能にする。さらに、本発明の１つまたは複数の実施態様は、受信確認が肯定的な形態で（すなわち、受信されたメッセージを指定する）、否定的な形態で（すなわち、未着メッセージを指定する）、またはそれらの組み合わせにおいても表現されることを可能にすることができる。
【００５５】
図５および以下の考察は、本発明を実施することができる適切なコンピューティング環境の簡単な全体的説明を提供するように意図される。必要とはされないが、ネットワーク環境内でコンピュータによって実行される、プログラムモジュールなど、コンピュータ実行可能命令の一般的な状況において本発明を説明する。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、または特定の抽象データ型を実行する。コンピュータ実行可能命令、関連付けられたデータ構造、およびプログラムモジュールは、本明細書で開示された方法のステップを実行するためのプログラムコード手段の例を表す。このような実行可能命令または関連付けられたデータ構造の特定のシーケンスは、このようなステップで説明された機能を実施するための対応する動作の例を表す。
【００５６】
本発明を、多数の型、種類のコンピュータシステム構成を有するネットワークコンピューティング環境内で実施することができ、これらのコンピュータシステム構成には、パーソナルコンピュータ、ハンドへルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどが含まれることは、当業者には理解されよう。本発明はまた分散コンピューティング環境内で実施することもでき、この環境ではローカルおよびリモート処理デバイスがタスクを実行し、通信ネットワークを通じてリンクされる（有線リンク、無線リンクによる、または、有線もしくは無線リンクの組み合わせによる）。分散コンピューティング環境では、プログラムモジュールはローカルおよびリモートのメモリストレージデバイス内に位置づけられる。
【００５７】
図５を参照すると、本発明を実施するための例示的システムは、従来のコンピュータ５２０の形態における汎用コンピューティングデバイスを含み、このデバイスには、処理装置５２１、システムメモリ５２２、および、システムメモリ５２２を含む様々なシステムコンポーネントを処理装置５２１に結合するシステムバス５２３が含まれる。システムバス５２３をいくつかのタイプのバス構造のいずれにすることもでき、これらのバス構造には、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスが含まれる。システムメモリには、読み取り専用メモリ（ＲＯＭ）５２４およびランダムアクセスメモリ（ＲＡＭ）５２５が含まれる。基本入出力システム（ＢＩＯＳ）５２６は、起動中など、コンピュータ５２０内の複数の要素の間で情報を転送する助けとなる基本ルーチンを含み、ＲＯＭ５２４に格納されよう。
【００５８】
コンピュータ５２０はまた、磁気ハードディスク５３９に対する読み書きを行うための磁気ハードディスクドライブ５２７、リムーバブル磁気ディスク５２９に対する読み書きを行うための磁気ディスクドライブ５２８、および、ＣＤ  ＲＯＭまたは他の光メディアなど、リムーバブル光ディスク５３１に対する読み書きを行うための光ディスクドライブ５３０を含むこともできる。磁気ハードディスクドライブ５２７、磁気ディスクドライブ５２８、および、光ディスクドライブ５３０はそれぞれ、ハードディスクドライブインターフェイス５３２、磁気ディスクドライブインターフェイス５３３、および、光ドライブインターフェイス５３４によって、システムバス５２３に接続される。これらのドライブおよびそれらの関連付けられたコンピュータ可読メディアは、コンピュータ５２０用のコンピュータ実行可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。本明細書で説明する例示的環境は、磁気ハードディスク５３９、リムーバブル磁気ディスク５２９、および、リムーバブル光ディスク５３１を使用するが、データを格納するための他のタイプのコンピュータ可読メディアを使用することができ、これらのメディアには、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどが含まれる。
【００５９】
１つまたは複数のプログラムモジュールを備えるプログラムコード手段を、ハードディスク５３９、磁気ディスク５２９、光ディスク５３１、ＲＯＭ５２４またはＲＡＭ５２５上に格納することができ、ＲＡＭ５２５には、オペレーティングシステム５３５、１つまたは複数のアプリケーションプログラム５３６、他のプログラムモジュール５３７、およびプログラムデータ５３８が含まれる。ユーザーはコマンドおよび情報をコンピュータ５２０へ、キーボード５４０、ポインティングデバイス５４２、または、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなど、他の入力デバイス（図示せず）を通じて入力することができる。これらおよび他の入力デバイスはしばしば処理装置５２１へ、システムバス５２３に結合されたシリアルポートインターフェイス５４６を通じて接続される。また、これらの入力デバイスを、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェイスによって接続することができる。モニタ５４７または別の表示デバイスもまたシステムバス５２３へ、ビデオアダプタ５４８などのインターフェイスを介して接続される。モニタに加えて、パーソナルコンピュータには通常、スピーカおよびプリンタなど、他の周辺出力デバイス（図示せず）が含まれる。
【００６０】
コンピュータ５２０はネットワーク環境において、リモートコンピュータ５４９ａおよび５４９ｂなど、１つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ５４９ａおよび５４９ｂはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードにすることができ、通常は、コンピュータ５２０に関連して上述した要素の多数またはすべてを含むが、メモリストレージデバイス５５０ａおよび５５０ｂおよびそれらの関連付けられたアプリケーションプログラム５３６ａおよび５３６ｂのみが図５において例示されている。図５に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）５５１およびワイドエリアネットワーク（ＷＡＮ）５５２が含まれ、これらのネットワークは本明細書で限定ではなく例として提示される。このようなネットワーキング環境は、オフィス全体または企業全体のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００６１】
ＬＡＮネットワーキング環境において使用されるとき、コンピュータ５２０はローカルネットワーク５５１へ、ネットワークインターフェイスまたはアダプタ５５３を通じて接続される。ＷＡＮネットワーキング環境において使用されるとき、コンピュータ５２０は、モデム５５４、無線リンク、または、インターネットなどのワイドエリアネットワーク５５２を介して通信を確立するための他の手段を含むことができる。モデム５５４は内部であっても外部であってもよく、システムバス５２３へ、シリアルポートインターフェイス５４６を介して接続される。ネットワーク環境では、コンピュータ５２０に関連して示したプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに格納することができる。図示のネットワーク接続は例示的であり、ワイドエリアネットワーク５５２を介して通信を確立する他の手段を使用することができることは理解されよう。
【００６２】
本発明を、その精神または本質的特性から逸脱することなく、他の特定の形態において実施することができる。説明した実施形態はあらゆる点で例示的でしかなく、限定的ではないと見なされるべきである。本発明の範囲は、したがって、前述の説明によってではなく、付属の特許請求の範囲によって示される。特許請求の範囲の等価物の意味および範囲内に入るすべての変更は、それらの範囲内に包含されるべきである。
【図面の簡単な説明】
【００６３】
【図１】要求側コンピュータシステムによって送信されたメッセージが応答側コンピュータシステムによって適切に受信確認される、本発明による一連の要求応答を例示する図である。
【図２】応答側コンピュータシステムからの少なくとも１つの応答メッセージで障害が起こる、本発明による一連の要求応答を例示する図である。
【図３】要求側コンピュータシステムによって送信された少なくとも１つの要求メッセージで障害が起こる、本発明による一連の要求応答を例示する図である。
【図４】要求側コンピュータの観点からおよび応答側コンピュータの観点から、本発明による、信頼性のある要求応答方法においてメッセージおよび応答を通信するため、ならびに受信確認を交換するための方法を例示する図である。
【図５】本発明の１つまたは複数の実施態様を実施するための適切なコンピューティング環境を例示する図である。
【符号の説明】
【００６４】
５２７  磁気ハードディスクドライブ
５２８  磁気ディスクドライブ
５２９  リムーバブル磁気ディスク
５３０  光ディスクドライブ
５３１  リムーバブル光ディスク
５３９  磁気ハードディスク
５４２  ポインティングデバイス
５５０ａ  メモリストレージデバイス
５５０ｂ  メモリストレージデバイス
【図１】
2006252555.tif 000003
【図２】
2006252555.tif 000004
【図３】
2006252555.tif 000005
【図４】
2006252555.tif 000006
【図５】
2006252555.tif 000007