(57)【要約】【課題】分散されたアクティビティを達成する際に使用するための、トランスポートに比較的依存しない通信プロトコルを交渉するためのメカニズムを提供すること。【解決手段】交渉される可能性があるプロトコルは、例えば、Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｃｏｏｒｄｉｎａｔｉｏｎの拡張である。その場合、イニシエータは、トランザクションを作成するとき、そのトランザクションマネージャによって、所望されるプロトコルの交渉も行う。すると、トランザクションマネージャと通信するとき、トランザクションマネージャ、およびトランザクションにおける他の任意の参加者は、交渉されたプロトコルに従うことになる。プロトコルは、パフォーマンスを改善するために選択することができ、現存する必要性および機能に応じて調整することができる。【選択図】図３Ａ
2006166456.tif 000002
【特許請求の範囲】
【請求項１】
拡張可能なメッセージ交換プロトコルを用いて互いに通信することができる第１のコンピューティングエンティティと第２のコンピューティングエンティティを含む環境において、前記第１のコンピューティングエンティティは、前記第２のコンピューティングエンティティとのメッセージ交換を用いて通信する際に使用される、前記メッセージ交換プロトコルに対する１つまたは複数の拡張を交渉するための方法であって、
前記第１のコンピューティングエンティティが、メッセージ交換パターンで前記第２のコンピューティングエンティティと通信するとき、前記第１のコンピューティングエンティティが実装することができる、第１の１つまたは複数の拡張のセットを識別する、第１の１つまたは複数の拡張識別データ構造を構成する動作と、
前記第１のコンピューティングエンティティが、第１のメッセージを構成する動作であって、前記第１のメッセージは、前記第１の１つまたは複数の拡張識別データ構造を含む動作と、
前記第１のコンピューティングエンティティが、前記第１のメッセージを前記第２のコンピューティングエンティティに提供する動作と、
前記第１のコンピューティングエンティティが、第２のメッセージを前記第２のコンピューティングエンティティから受け取る動作と、
前記メッセージ交換パターンで前記第１のコンピューティングエンティティと通信するときに、前記第２のコンピューティングエンティティが実装することができる、第２の１つまたは複数の拡張のセットを識別する、前記第２のメッセージ内に含まれる第２の１つまたは複数の拡張識別データ構造があるかどうか、あるいは、前記第２の１つまたは複数の拡張識別データ構造のセットの欠如があるかどうかを決定する動作と、
前記第１のコンピューティングエンティティが、前記第２の１つまたは複数の拡張識別データ構造のセットの前記欠如がある場合に、拡張なしの前記メッセージ交換パターンが前記メッセージ交換プロトコルにおいて使用されることを識別する、あるいは、前記第２の１つまたは複数の拡張識別データ構造のセットが前記第２のメッセージ内に存在する場合、前記メッセージ交換において実際に使用される第３の１つまたは複数の拡張が、前記第１の１つまたは複数の拡張と前記第２の１つまたは複数の拡張に基づくことを識別する動作とを備えることを特徴とする方法。
【請求項２】
前記第１のメッセージはまた、分散されたアクティビティを開始するための要求を含み、前記第２のメッセージはまた、前記分散されたアクティビティを開始するための前記要求に対する応答を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記要求は、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されるＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求であり、前記応答は、前記ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されるＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅメッセージであることを特徴とする請求項２に記載の方法。
【請求項４】
前記メッセージ交換プロトコルは、情報をエンドポイント参照に含めることを可能にし、エンドポイント参照は、前記情報と前記分散アクティビティを管理するトランザクションの間の相関、または前記トランザクションにおける特定のエンリストメント（ｅｎｌｉｓｔｍｅｎｔ）を可能にすることを特徴とする請求項３に記載の方法。
【請求項５】
前記メッセージ交換プロトコルは、１つまたは複数の当座保留中のトランザクションを識別する情報をエンドポイント参照に含めることを可能にすることを特徴とする請求項３に記載の方法。
【請求項６】
前記メッセージ交換プロトコルは、追加の情報が前記ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求に含まれることを可能にすることを特徴とする請求項３に記載の方法。
【請求項７】
前記追加の情報は、前記分散されたアクティビティに適用される分離パラメータを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記メッセージ交換プロトコルは、追加の情報が、前記ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅメッセージ内に提供されるＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔメッセージ内に含まれることを可能にすることを特徴とする請求項３に記載の方法。
【請求項９】
前記追加の情報は、ＷＳ−ＡＴ以外のトランザクションプロトコルに対するバインディングを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ＷＳ−ＡＴ以外のトランザクションプロトコルは、ＯｌｅＴｘであることを特徴とする請求項９に記載の方法。
【請求項１１】
前記ＷＳ−ＡＴ以外のトランザクションプロトコルは、ＴＩＰであることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記要求はさらに、前記ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルよって定義されるＲｅｇｉｓｔｅｒ要求内に通常含まれる登録情報を含み、前記応答は、前記ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルよって定義されるＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅメッセージ内に含まれる登録応答情報を含むことを特徴とする請求項３に記載の方法。
【請求項１３】
前記メッセージ交換プロトコルは、２相準備／コミットトランザクションを可能にする、または、前記トランザクションをコミットするための決定の委任を可能にすることを特徴とする請求項２に記載の方法。
【請求項１４】
前記メッセージ交換プロトコルは、前記第１のトランザクションマネージャが、前記第２のトランザクションマネージャに、前記トランザクションを準備し次いで前記トランザクションをコミットするように命令することに応答して、前記第２のトランザクションマネージャが、前記トランザクションのステータスに関して前記第２のトランザクションマネージャが未確定であることを、前記第１のトランザクションマネージャに示すことを可能にすることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記メッセージ交換プロトコルは、前記第２のトランザクションマネージャからの単一のリプレイメッセージが、リプレイが望まれる複数のトランザクションを識別することを可能にすることを特徴とする請求項２に記載の方法。
【請求項１６】
前記要求は、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されるＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅメッセージであることを特徴とする請求項２に記載の方法。
【請求項１７】
前記要求は、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されるＲｅｇｉｓｔｅｒ要求であることを特徴とする請求項２に記載の方法。
【請求項１８】
前記メッセージ交換プロトコルは、ＷＳ−ＡＴ以外のトランザクションプロトコルを実装する既存のトランザクションに基づく、ＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔオブジェクトの生成を可能にすることを特徴とする請求項１に記載の方法。
【請求項１９】
拡張可能なメッセージ交換プロトコルを用いて互いに通信することができる第１のコンピューティングエンティティと第２のコンピューティングエンティティを含む環境において、前記第２のコンピューティングエンティティは、前記第１のコンピューティングエンティティとのメッセージ交換を用いて通信する際に使用される、メッセージ交換プロトコルに対する１つまたは複数の拡張を交渉するための方法であって、
前記第２のコンピューティングエンティティが、前記第１のコンピューティングエンティティから第１のメッセージを受け取る動作であって、前記第１のメッセージは、メッセージ交換パターンで前記第１のコンピューティングエンティティと通信するとき、前記第２のコンピューティングエンティティが実装することができる、第１の１つまたは複数の拡張のセットを識別する、情報を含む第１の１つまたは複数の拡張識別データ構造を含む動作と、
前記第１のトランザクションマネージャが、前記メッセージ交換パターンで前記第１のコンピューティングエンティティと通信するとき、前記第２のコンピューティングエンティティが実装することができる、第２の１つまたは複数の拡張を識別する、第２の１つまたは複数の拡張識別データ構造を構成する動作と、
前記第２のコンピューティングエンティティが、前記第２の１つまたは複数の拡張識別データ構造を含む第２のメッセージを構成する動作と、
前記第２のコンピューティングエンティティが、前記第２メッセージを前記第１のコンピューティングエンティティに提供する動作と、
前記第２のコンピューティングエンティティが、前記第１のメッセージから、前記第１の１つまたは複数の拡張識別データ構造を読み取る動作と、
前記第２のコンピューティングエンティティが、前記第１の１つまたは複数の拡張と前記第２の１つまたは複数の拡張に基づいて、前記メッセージ交換中に実際に使用される１つまたは複数の拡張を識別する動作とを備えることを特徴とする方法。
【請求項２０】
拡張可能なメッセージ交換プロトコルを用いて互いに通信することができる第１のコンピューティングエンティティと第２のコンピューティングエンティティを含む環境において使用するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、コンピュータ実行可能命令をその上に有する１つまたは複数のコンピュータ可読媒体を含み、前記コンピュータ実行可能命令は、１つまたは複数のプロセッサによって実行されたとき、前記第１のコンピューティングエンティティは、前記第２のコンピューティングエンティティとのメッセージ交換を用いて通信する際に使用される、前記メッセージ交換プロトコルに対する１つまたは複数の拡張を交渉するための方法を、前記第１のコンピューティングエンティティに実行させ、前記方法は、
前記第１のコンピューティングエンティティが、メッセージ交換パターンで前記第２のコンピューティングエンティティと通信するとき、前記第１のコンピューティングエンティティが実装することができる、第１の１つまたは複数の拡張のセットを識別する、第１の１つまたは複数の拡張識別データ構造を構成する動作と、
前記第１のコンピューティングエンティティが、第１のメッセージを構成する動作であって、前記第１のメッセージは、前記第１の１つまたは複数の拡張識別データ構造を含む動作と、
前記第１のコンピューティングエンティティが、前記第１のメッセージを前記第２のコンピューティングエンティティに提供する動作と、
前記第１のコンピューティングエンティティが、第２のメッセージを前記第２のコンピューティングエンティティから受け取る動作と、
前記メッセージ交換パターンで前記第１のコンピューティングエンティティと通信するときに、前記第２のコンピューティングエンティティが実装することができる、第２の１つまたは複数の拡張のセットを識別する、前記第２のメッセージ内に含まれる第２の１つまたは複数の拡張識別データ構造があるかどうか、あるいは、前記第２の１つまたは複数の拡張識別データ構造のセットの欠如があるかどうかを決定する動作と、
前記第１のコンピューティングエンティティが、前記第２の１つまたは複数の拡張識別データ構造のセットの前記欠如がある場合に、拡張なしの前記メッセージ交換パターンが前記メッセージ交換プロトコルにおいて使用されることを識別する、あるいは、前記第２の１つまたは複数の拡張識別データ構造のセットが前記第２のメッセージ内に存在する場合、前記メッセージ交換において実際に使用される第３の１つまたは複数の拡張が、前記第１の１つまたは複数の拡張と前記第２の１つまたは複数の拡張に基づくことを識別する動作とを備えることを特徴とするコンピュータプログラム製品。
【請求項２１】
拡張可能なメッセージ交換プロトコルを用いて互いに通信することができる第１のコンピューティングエンティティと第２のコンピューティングエンティティを含む環境において使用するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、コンピュータ実行可能命令をその上に有する１つまたは複数のコンピュータ可読媒体を備え、前記コンピュータ実行可能命令は、１つまたは複数のプロセッサによって実行されたとき、前記第２のコンピューティングエンティティは、前記第１のコンピューティングエンティティとのメッセージ交換を用いて通信する際に使用される、前記メッセージ交換プロトコルに対する１つまたは複数の拡張を交渉するための方法を、前記第２のコンピューティングエンティティに実行させ、前記方法は、
前記第２のコンピューティングエンティティが、第１のメッセージを前記第１のコンピューティングエンティティから受け取る動作であって、前記第１のメッセージは、前記メッセージ交換パターンで前記第１のコンピューティングエンティティと通信するとき、前記第２のコンピューティングエンティティが実装することができる、第１の１つまたは複数の拡張のセットを識別する情報を含む、第１の１つまたは複数の拡張識別データ構造を含む動作と、
前記第１のトランザクションマネージャが、前記メッセージ交換パターンで前記第１のコンピューティングエンティティと通信するとき、前記第２のコンピューティングエンティティが実装することができる、第２の１つまたは複数の拡張のセットを識別する、第２の１つまたは複数の拡張識別データ構造を構成する動作と、
第２のコンピューティングエンティティが、前記第２の１つまたは複数の拡張識別データ構造を含む第２のメッセージを構成する動作と、
前記第２のコンピューティングエンティティが、前記第２メッセージを前記第１のコンピューティングエンティティに提供する動作と、
前記第２のコンピューティングエンティティが、前記第１の１つまたは複数の拡張識別データ構造を、前記第１のメッセージから読み取る動作と、
前記第２のコンピューティングエンティティが、前記第１の１つまたは複数の拡張と前記第２の１つまたは複数の拡張に基づいて、前記メッセージ交換中に実際に使用される１つまたは複数の拡張を識別する動作とを備えることを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク技術に関し、より詳細には、メッセージ交換プロトコルの拡張を交渉するためのメカニズムに関する。
【背景技術】
【０００２】
コンピューティング技術は、私達の働き方や遊び方に変化をもたらしている。コンピューティングシステムは、現在では、デスクトップコンピュータ、ラップトップコンピュータ、タブレットＰＣ、携帯情報端末（ＰＤＡ）、および家庭用機器などを含めた様々な形態を取っている。その最も基本的な形態では、コンピューティングシステムは、システムメモリと、１つまたは複数のプロセッサを含む。システムメモリ内のソフトウェアを、コンピューティングシステムの他のハードウェアが望まれる機能を実施するよう指示するために、プロセッサによって実行することができる。
【０００３】
ネットワーキング技術は、コンピューティングシステムが長大な距離を介した通信を行うことを可能にし、それによって、コンピュータの機能が拡張される。例えば、ネットワーキング技術は、電子メール、ウェブ閲覧、ファイル転送、インスタントメッセージ（ｉｎｓｔａｎｔ  ｍｅｓｓａｇｉｎｇ）、電子ホワイトボード、およびネットワークコラボレーション（ｃｏｌｌａｂｏｒａｔｉｏｎ）などのアプリケーションを可能にする。したがって、コンピュータネットワークは、広い範囲に及ぶ通信および情報アクセスを可能にする。
【０００４】
ネットワーク通信プロトコルは、しばしば、特定のアクティビティを達成するために使用することができるメッセージ交換のパターンを定義している。このメッセージパターンは、単一のメッセージの一方向の送信のように単純なことも、多数のメッセージおよび多数の通信ノードに関わる大変複雑なものとなることもある。本明細書では、このようなネットワーク通信プロトコルは、複雑さに関わりなく、「メッセージ交換プロトコル」と呼ばれる。
【０００５】
メッセージ交換プロトコルは、メッセージが交換されるタイプおよび形式、交換中のメッセージの順序付け、および、特定のメッセージタイプを送信または受信する際の特定の通信ノードの役割などに関する規則を明示的に定義するこのような規則にかかわらず、メッセージ交換プロトコルでは、しばしば、基本的な基本メッセージ交換プロトコルと整合性があるが基本的プロトコルによって明示的に定義されていない追加の規則を定義することが可能である。これらの追加の規則を、本明細書では、基本的メッセージ交換プロトコルに対する「拡張」と呼ぶことがある。
【０００６】
より複雑なメッセージ交換プロトコルの例として、Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｃｏｏｒｄｉｎａｔｉｏｎ（ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎ）、およびＷｅｂ  Ｓｅｒｖｉｃｅｓ  Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎｓ（ＷＳ−ＡＴ）があり、これらは、「ＳＯＡＰトンネリング（ＳＯＡＰ−ｔｕｎｎｅｌｉｎｇ）」としばしば呼ばれるものを使用して、トランスポートレベルのバリアさえ超えて潜在的にメッセージを交換することができるように、ＳＯＡＰ（シンプルオブジェクトアクセスプロトコル（Ｓｉｍｐｌｅ  ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ））＿エンベロープ（ｅｎｖｅｌｏｐｅ）を使用する。例えば、ＨＴＴＰ（ハイパーテキスト転送プロトコル（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ））コンピューティングシステムは、他のＨＴＴＰコンピューティングシステムへＨＴＴＰメッセージ内でＳＯＡＰエンベロープを送信することができる。ただし、ＳＯＡＰエンベロープを、例えば、メッセージキュー（Ｍｅｓｓａｇｅ  Ｑｕｅｕｅｓ）（ＭＱ）、ＳＭＴＰ（簡易メール転送プロトコル（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ））、またはＣＯＲＢＡ／ＩＩＯＰなどのような様々なトランスポートプロトコルに従う他のメッセージ内に配置することもできる。したがって、ＳＯＡＰメッセージは、トランスポートに比較的依存しないと見なされる。
【０００７】
ＷＳ−Ｃｏｏｄｉｎａｔｉｏｎは、分散されたアプリケーションの動作を調整するプロトコルを提供するための拡張可能なフレームワークを記述している。このような調整プロトコルは、分散されたアクティビティの結果について一貫性のある合意に達する必要があるアプリケーションを含めて多数のアプリケーションをサポートするために使用される。ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎは、アプリケーションサービスが、他のサービスにアクティビティを伝搬するために必要なコンテキストを作成し、調整プロトコルに登録することを可能にする。このフレームワークは、調整のための既存のトランザクション処理、ワークフロー、および他のシステムが、それらの独自のプロトコルを隠蔽し、異種混合の環境で稼動することを可能にする。
【０００８】
図４Ａは、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎを利用することができるネットワーク環境４００を示す。４つのコンピューティングエンティティ、すなわち、イニシエータ（ｉｎｉｔｉａｔｏｒ）４０１、イニシエータ４０１に関連付けられたトランザクションマネージャ（ｔｒａｎｓａｃｔｉｏｎ  ｍａｎａｇｅｒ）４０２（ＴＭ１とも呼ばれる）、リモートアプリケーション４１１、および、リモートアプリケーション４１１に関連付けられたトランザクションマネージャ４１２（ＴＭ２とも呼ばれる）が図示されている。図４Ｂは、典型的なＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎのメッセージ交換パターンによるメッセージ交換を示す時間線図４２０を示す。
【０００９】
イニシエータ４０１は、イニシエータ４０１、リモートアプリケーション４１１、および、それぞれのトランザクションマネージャ４０２および４１２の協調的対話を必要とするアクティビティを開始するものである。それを行うために、イニシエータは、図４Ｂの矢印４２１で表されるように、ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔメッセージを、イニシエータのトランザクションマネージャＴＭ１に送る。このメッセージは、トランザクションマネージャＴＭ１が、イニシエータにおける要求サービスを適切にアドレスするために必要なすべてのアドレッシング情報を含む、エンドポイント参照（ｅｎｄｐｏｉｎｔ  ｒｅｆｅｒｅｎｃｅ）を含むことができる。「エンドポイント参照」は、ＷＳ−Ａｄｄｒｅｓｓｉｎｇと呼ばれるウェブサービスプロトコルによって定義される。
【００１０】
それに応答して、トランザクションマネージャＴＭ１は、矢印４２２によって表されるように、ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅをイニシエータに送る。応答４２２は、トランザクションマネージャＴＭ１についての（図４ＢでＣＣ１として識別される）調整コンテキスト（Ｃｏｏｒｄｉｎａｔｉｏｎ  Ｃｏｎｔｅｘｔ）として参照されるものを含む。調整コンテキストＣＣ１は、コンピューティングエンティティがそのアクティビティとして登録することが必要なすべての情報を含む。応答４２２はまた、トランザクションマネージャＴＭ１において、イニシエータが、登録サービスをアドレスするために必要なすべてのアドレッシング情報を含むエンドポイント参照を含むこともできる。
【００１１】
イニシエータ４０１は、調整コンテキストＣＣ１を使用して、Ｒｅｇｉｓｔｅｒ要求を構成し、次いで、矢印４２３で表されるように、Ｒｅｇｉｓｔｅｒ要求をトランザクションマネージャＴＭ１に送る。Ｒｅｇｉｓｔｅｒ要求は、イニシエータ４０１におけるプロトコルサービスに対するエンドポイント参照を含む。イニシエータ４０１をアクティビティとして登録した後、トランザクションマネージャＴＭ１は、矢印４２４で表されるように、ＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅをイニシエータ４０１に送る。この応答は、トランザクションマネージャＴＭ１におけるプロトコルサービスに対するエンドポイント参照を含む。したがって、ＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅを受け取ると、イニシエータおよびトランザクションマネージャＴＭ１は、プロトコルレベルメッセージを交換することができる。
【００１２】
分散されたアクティビティについて、イニシエータは、他のリモートアプリケーション（図４Ａおよび４Ｂにおけるリモートアプリケーション４１１など）も、アクティビティとして登録したいことがある。したがって、イニシエータ４０１は、矢印４２５に表されるように、トランザクションマネージャＴＭ１に対する調整コンテキストＣＣ１をこのような任意のリモートアプリケーション４１１に送る。分かりやすくするため、単に１つのリモートアプリケーション４１１が、このアクティビティに関わるものとして記述されているが、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎは、リモートアプリケーション４１１についての記述と同様のやり方で、複数のリモートアプリケーションの登録を可能にする。
【００１３】
次いで、リモートアプリケーション４１１は、矢印４２６で表されるように、そのトランザクションマネージャＴＭ２に、ＣｒｅａｔｅＣｏｏｒｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求を送る。リモートアプリケーションはまた、トランザクションマネージャＴＭ１にアクティビティとして登録するために必要な調整コンテキストＣＣ１を供給する。この要求は、リモートアプリケーションにおける要求サービスに対するエンドポイント参照を含む。
【００１４】
トランザクションマネージャＴＭ２は、矢印４２７によって表されるように、ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｓｅによって応答する。この応答は、トランザクションマネージャＴＭ２で登録するための必要な情報を含む他の調整コンテキストＣＣ２を含むことができる。この応答はまた、トランザクションマネージャＴＭ２における登録サービスに対するエンドポイント参照を含むこともできる。
【００１５】
リモートアプリケーション４１１は、調整コンテキストＣＣ２を使用して、Ｒｅｇｉｓｔｅｒ要求を構成し、次いで、矢印４２８で表されるように、Ｒｅｇｉｓｔｅｒ要求をトランザクションマネージャＴＭ２に送る。この要求は、リモートアプリケーション４１１上におけるプロトコルサービスに対するエンドポイント参照を含むことができる。
【００１６】
リモートアプリケーションが既に第１のトランザクションマネージャＴＭ１に対する調整コンテキストＣＣ１を提供していることを認識すると、第２のトランザクションマネージャＴＭ２は、リモートアプリケーションの代わりに第１のトランザクションマネージャＴＭ１で登録するように理解する。したがって、第２のトランザクションマネージャＴＭ２は、調整コンテキストＣＣ１を使用して、Ｒｅｇｉｓｔｅｒ要求を構成し、次いで、矢印４２９で表されるように、Ｒｅｇｉｓｔｅｒ要求を第１のトランザクションマネージャＴＭ１に送信する。この要求は、トランザクションマネージャＴＭ２によって提供されるプロトコルサービスに対するエンドポイント参照を含む。
【００１７】
第１のトランザクションマネージャＴＭ１は、第２のトランザクションマネージャＴＭ２をアクティビティとして登録し、次いで、矢印４３０で表されるように、ＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅメッセージを、第２のトランザクションマネージャＴＭ２に提供する。ＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅメッセージは、トランザクションマネージャＴＭ１によって提供されるプロトコルサービスに対するエンドポイント参照を含む。この応答を受け取ると、トランザクションメッセージＴＭ１およびＴＭ２は、ポスト登録（ｐｏｓｔ−ｒｅｇｉｓｔｒａｔｉｏｎ）プロトコルレベルのメッセージを互いに送信することができる。
【００１８】
次いで、第２のトランザクションマネージャＴＭ２は、矢印４３１で表されるように、ＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅメッセージをリモートアプリケーションに送る。この応答は、トランザクションマネージャＴＭ２によって提供されたプロトコルサービスに対するエンドポイント参照を含む。この応答を受け取ると、トランザクションマネージャＴＭ２およびリモートアプリケーション４１１は、互いに、ポスト登録プロトコルレベルのメッセージを交換することができる。
【００１９】
この対話の後、３つのコーディネータ／参加者（ｃｏｏｒｄｉｎａｔｏｒ／ｐａｒｔｉｃｉｐａｎｔ）の関係が作り出されている。この関係は、Ｒｅｇｉｓｔｅｒ要求を送受信することによって定義される。Ｒｅｇｉｓｔｅｒ要求を送るコンピューティングエンティティは、この関係において「参加者」であり、Ｒｅｇｉｓｔｅｒ要求を受け取るコンピューティングエンティティは、この関係において「コーディネータ」である。したがって、第１の関係において、イニシエータ４０１は、参加者であり、トランザクションマネージャＴＭ１は、コーディネータである。第２の関係において、リモートアプリケーション４１１は、参加者であり、トランザクションマネージャＴＭ２は、コーディネータである。第３の関係において、トランザクションマネージャＴＭ２は、参加者であり、トランザクションマネージャＴＭ１は、コーディネータである。この第３の関係は、最も複雑な対話を伴い、したがって、以下に述べるＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎの要約の焦点となる。
【００２０】
ＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎは、期間の短いアクティビティを調整するために使用され、限定された信頼領域内で実行される。それらがアトミックトランザクション（ａｔｏｍｉｃ  ｔｒａｎｓａｃｔｉｏｎ）と呼ばれるのは、それらが「全か無か」のプロパティを有するためである。特に、ＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎは、第１相でトランザクションの準備を可能にし、それに第２相でのコミットが続く、２相コミットプロトコルを定義する。
【００２１】
上述のＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎに基づくメッセージ交換の後、イニシエータ４０１およびリモートアプリケーション４１１は、特定のトランザクションを達成するアプリケーションレベルの多数のメッセージ交換に従事することができる。両当事者がメッセージ交換および関連する処理を終了すると、イニシエータ４０１は、トランザクションマネージャＴＭ１に、トランザクションを完了するよう要求する。図５は、トランザクションを完了するために２つのトランザクションマネージャＴＭ１とＴＭ２の間で行われる２相コミットメッセージ交換を表す、タイム図５００を示す。
【００２２】
第１のトランザクションマネージャＴＭ１は、まず、矢印５０１で表されるように、準備メッセージを第２のトランザクションマネージャＴＭ２に送る。このメッセージを受け取ると、トランザクションマネージャＴＭ２は、適切な命令に基づいて、トランザクションをアトミックにコミットするために必要なすべての処理を行う。次いで、トランザクションマネージャＴＭ２は、矢印５０２で表されるように、準備済みメッセージを、第１のトランザクションマネージャＴＭ１に送り、したがって２相コミットパターンの第１相が完了する。そのとき、トランザクションマネージャＴＭ２は、未確定相５０５に入り、つまり、この相では、トランザクションマネージャＴＭ２は、トランザクションがコミットされるか中止されるかが分からない。
【００２３】
第１のトランザクションマネージャＴＭ１が、トランザクションをコミットすることを選択した場合、矢印５０３で表されるように、第１のトランザクションマネージャＴＭ１は、コミットメッセージを、第２のトランザクションマネージャＴＭ２に送る。次いで、第２のトランザクションマネージャＴＭ２は、トランザクションをコミットし、コミット済みメッセージ５０４を、第１のトランザクションマネージャＴＭ１に送り、それによって、トランザクションが完了したことを第１のトランザクションマネージャＴＭ１に通知する。
【００２４】
ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎの仕様は、任意の数の分散されたアプリケーションが、いくつかの特定のアクティビティについて登録を行い、それらを協調的に対話して達成することを可能にするという点で強力なものである。さらに、アクティビティを、トランザクションとして達成することができ、それにより、アクティビティにおける様々な当事者の間の状態の不整合を回避する。
【００２５】
しかし、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎは、強力であるが、完全ではない。ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎは、拡張可能であるが、基本ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎプロトコルを改善するためにプロトコルの拡張を交渉するための、明確に表現された手段を提供しない。
【００２６】
【非特許文献１】Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ，  “Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｃｏｏｒｄｉｎａｔｉｏｎ  （ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎ）”，  Ｎｏｖｅｍｂｅｒ  ２００４
【非特許文献２】Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ，  “Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎ  （ＷＳ−ＡｔｏｍｉｃＴｒａｎｓａｃｔｉｏｎ”，  Ｎｏｖｅｍｂｅｒ  ２００４
【発明の開示】
【発明が解決しようとする課題】
【００２７】
したがって、メッセージ交換プロトコルが、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎやＷＳ−ＡＴなどのようなウェブサービスプロトコルであっても他のメッセージ交換プロトコルであっても、有利となるものは、メッセージ交換プロトコルの拡張を交渉するためのメカニズムである。さらに、このようなメカニズムは、基本メッセージ交換プロトコルが、当事者のうち１つまたは複数が交渉メカニズムを認識しないことに対するフォールバック（ｆａｌｌ  ｂａｃｋ）として、使用できる場合、いくつかの（特に分散された環境における）コンピューティングエンティティは、本明細書に記載の拡張交渉手順を、他のエンティティが実装できないときでも実装することができるため、有利である。
【課題を解決するための手段】
【００２８】
上記の従来技術の問題は、２つのコンピューティングエンティティ間の特定のメッセージ交換に従事するときに用いるためにメッセージ交換プロトコルの拡張を交渉するためのメカニズムを対象とする本発明の原理によって解消される。交渉が可能でない場合、基本メッセージ交換プロトコルは、拡張を実装することなく用いられる。したがって、拡張の効果的交渉が可能な場合、それらの拡張に関連した、パフォーマンス、効率性、または精度の改善を実現することができる。他方、交渉が不可能な場合、コンピューティングエンティティは、依然として基本メッセージ交換プロトコルを用いて通信を行うことができる。一実施形態では、可能な拡張は、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎまたはＷＳ−ＡＴプロトコルに対するものとすることができるが、これは必須ではない。
【００２９】
その２つコンピューティングエンティティの一方（一方のコンピューティングエンティティを他方から簡単に区別するために「第１の」コンピューティングエンティティと呼ぶ）は、他方のコンピューティングエンティティ（「第２の」コンピューティングエンティティと呼ぶ）と、メッセージ交換の通信をするとき、第１のコンピューティングエンティティが実装することができる、１つまたは複数の拡張を識別する、１つまたは複数の拡張識別データ構造を構成する。これらの１つまたは複数の拡張識別データ構造は、本明細書では、略して、「第１の１つまたは複数の拡張識別データ構造（ｆｉｒｓｔ  ｏｎｅ  ｏｒ  ｍｏｒｅ  ｅｘｔｅｎｓｉｏｎ−ｉｄｅｎｔｉｆｙｉｎｇ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅｓ）」または「第１の（複数の）拡張識別データ構造（ｆｉｒｓｔ  ｅｘｔｅｎｓｉｏｎ−ｉｄｅｎｔｉｆｙｉｎｇ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ（ｓ））」とも呼ばれることがある。同様に、１つまたは複数の拡張は、本明細書では、「第１の１つまたは複数の拡張のセット」、または「第１の（複数の）拡張」と呼ばれることがある。次いで、第１のコンピューティングエンティティは、第１の（複数の）拡張識別データ構造を含む、（本明細書では「第１のメッセージ」と呼ばれる）メッセージを構成する。次いで、第１のコンピューティングシステムは、第１のメッセージを、第２のコンピューティングエンティティに送る。
【００３０】
第１のメッセージを受け取った後、第２のコンピューティングエンティティが、この交渉手順をサポートする場合、第２のコンピューティングエンティティは、第１のコンピューティングエンティティとメッセージ交換の通信をするとき、第２のコンピューティングエンティティが実装することができる、１つまたは複数の拡張を識別する１つまたは複数の拡張識別データ構造を、同様に構成することができる。これらの１つまたは複数の拡張識別データ構造は、本明細書では、略して、「第２の１つまたは複数の拡張識別データ構造」または「第２の（複数の）拡張識別データ構造」とも呼ぶこともできる。同様に、１つまたは複数の拡張は、本明細書では、「第２の１つまたは複数の拡張のセット」または「第２の（複数の）拡張」と呼ぶこともできる。次いで、第２のコンピューティングエンティティは、第２の（複数の）拡張識別データ構造を含む第２のメッセージを構成し、この第２のメッセージを第１のコンピューティングエンティティに送る。
【００３１】
第２のコンピューティングエンティティはまた、第１のメッセージから第１の（複数の）拡張識別データ構造を読み取り、第１のコンピューティングエンティティによってサポートされる第１の（複数の）拡張と第２のコンピューティングエンティティによってサポートされる第２の（複数の）拡張に基づいて、メッセージ交換で実際に使用される１つまたは複数の拡張を識別する。
【００３２】
その間、第２のメッセージを受け取ると、第１のコンピューティングエンティティは、第２のメッセージの第２の（複数の）拡張識別データ構造を読み取り、第１のコンピューティングエンティティによってサポートされる第１の（複数の）拡張と第２のコンピューティングエンティティによってサポートされる第２の（複数の）拡張に基づいて、メッセージ交換で実際に使用される１つまたは複数の拡張を識別する。
【００３３】
このようにして、２つのコンピューティングエンティティは、多数の様々なあり得る拡張を（両方のコンピューティングシステムがこのような交渉をすることができる場合）交渉することができ、それによって、改善されたメッセージ交換パターンの実装を提供することができる。一方、第２のコンピューティングエンティティが、このような交渉をすることができない場合、コンピューティングエンティティは、単に基本メッセージ交換プロトコルを用いて通信を行う。
【００３４】
本発明のさらなる特徴および利点を以下に説明するが、これらの特徴および利点は、部分的にはそれらの説明により明らかとなり、あるいは本発明の実施によって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲で詳細に示される文書（ｉｎｓｔｒｕｍｅｎｔｓ）および組合せによって、理解し獲得することができる。本発明の上記および他の特徴は、下記の詳細な説明、および添付の特許請求の範囲によってより完全に明らかとなり、あるいは以下に説明する本発明の実施によって知ることができる。
【００３５】
本発明の上記および他の利点および特徴を得る方法を記述するために、添付の図面に示す本発明のより具体的な実施形態を参照することによって、上記に簡潔に説明した本発明のさらに詳細な説明を与える。これらの図面は、本発明の典型的実施形態のみを示し、したがって、本発明の範囲を限定すると見なされないことが理解された上で、添付の図面の用いることによって、本発明は、さらなる詳細および細部を伴って記述され説明される。
【発明を実施するための最良の形態】
【００３６】
本発明の原理は、分散されたアクティビティを達成する際にメッセージ交換プロトコルの拡張を用いるかどうか（および、どんな拡張か）を交渉するためのメカニズムに関する。交渉メカニズムは、メッセージ交換における一方の当事者が、拡張交渉メカニズムを認識しない場合、基本メッセージ交換プロトコルにフォールバックする。交渉されることが可能なメッセージ交換プロトコルは、例えば、Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｃｏｏｒｄｉｎａｔｉｏｎ（ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎ）またはＷｅｂ  Ｓｅｒｖｉｃｅｓ  Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎ（ＷＳ−ＡＴ）の拡張である。交渉されたプロトコル拡張を、パフォーマンスを改善するために選択することができ、既存の必要性および機能に応じて調整することができる。さらに、トランザクションマネージャは、異なるトランザクションに対して異なる拡張を用いることができる。
【００３７】
本発明の詳細を説明する前に、まず、本発明の原理を実装するために使用することができる適切なコンピューティングアーキテクチャを、図１に関連して説明する。次いで、本発明の原理を実装することができる適切なネットワーク環境を、図２に関連して説明する。本発明の原理による交渉メカニズムを、図３Ａのフローチャートと図２のネットワーク環境に関連して説明する。最後に、このメカニズムを用いて交渉され得る機能の様々な例について説明する。
【００３８】
以下の説明において、他に特に指示がない限り、本発明の実施形態は、１つまたは複数のコンピュータによって行われる動作および演算の記号表現を参照して説明される。したがって、コンピュータで実行されるものとして折に触れて言及される、このような動作および演算は、コンピュータの処理装置による、データを構造化された形式で表現する電気信号の操作を含むことは理解されよう。この操作は、データを変換し、それらをコンピュータのメモリシステム内の位置に維持し、それにより、コンピュータの動作を、当業者に周知のやり方で再構成あるいは変更する。データが維持されているデータ構造は、データフォーマットによって定義される特定の属性を有するメモリの物理的位置である。ただし、本発明の原理は、上記のコンテキストで説明されているが、それは限定を意図するものではなく、以下に述べられる動作および演算の一部を、ハードウェアに実装することもできることは当業者には理解されるよう。
【００３９】
図を参照すると、同様の要素は、同じ参照番号により指し示されており、本発明の原理は、適切なコンピューティング環境において実装されているものとして示されている。以下の説明は、本発明の例示的実施形態に基づいており、本明細書に明示的に記述されていない他の実施形態に関して限定するものではない。
【００４０】
図１は、それらのデバイスに対して使用可能な例示的コンピュータアーキテクチャの概略図を示す。このアーキテクチャは、説明のための適切な環境の一例に過ぎず、本発明の使用または機能の範囲に関してどんな限定も示唆するものではない。また、これらのコンピューティングシステムは、図１に示されるコンポーネントの任意の１つまたは組合せに関係するどんな依存関係または要件も有するものとして解釈されるべきではない。
【００４１】
本発明の原理は、他の多数の汎用または専用のコンピューティングまたは通信の環境または構成で動作可能である。本発明で使用するために適切な周知のコンピューティングシステム、環境、および構成には、以下に限定されないが、携帯電話、ポケットコンピュータ、パーソナルコンピュータ、サーバ、マルチプロセッサシステム、マイクロプロセッサベースのシステム（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  ｂａｓｅｄ  ｓｙｓｔｅｍ）、ミニコンピュータ、メインフレームコンピュータ、および、上記の任意のシステムまたはデバイスを含む分散コンピューティング環境が含まれる。
【００４２】
コンピューティングシステム１００は、その最も基本的構成では、通常、少なくとも１つの処理装置１０２、およびメモリ１０４を含む。メモリ１０４は、揮発性（例えば、ＲＡＭなど）、不揮発性（例えば、ＲＯＭ、フラッシュメモリなど）、またはこの２つの組合せとすることができる。図１では、破線１０６によって、この最も基本的な構成が示されている。この説明ならびに特許請求の範囲において、コンピューティングシステムは、機能を実施するために、ソフトウェア、ファームウェア、またはマイクロコード（ｍｉｃｒｏｃｏｄｅ）を実行することができる、任意のハードウェアコンポーネントまたはハードウェアコンポーネントの組合せとして定義される。コンピューティングシステムは、分散された機能を達成するために、分散することもできる。
【００４３】
記憶媒体装置は、追加の特徴および機能を有することもできる。例えば、記憶媒体装置には、以下に限定されないが、ＰＣＭＣＩＡ、磁気および光ディスク、ならびに磁気テープを含めた追加の（リムーバルおよび固定の）ストレージが含まれ得る。このような追加のストレージは、図１では、リムーバルストレージ１０８、および固定ストレージ１１０によって示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性および不揮発性のリムーバルおよび固定の媒体を含む。メモリ１０４、リムーバルストレージ１０８、および固定ストレージ１１０は、コンピュータ記憶媒体のすべての例である。コンピュータ可読媒体には、以下に限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、および他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ、他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク装置、他の磁気記憶装置、ならびに、所望の情報を格納するために使用することができ、コンピュータシステムによってアクセスすることができる他の任意の媒体が含まれる。
【００４４】
本明細書で使用される用語「モジュール」または「コンポーネント」は、コンピューティングシステム上で実行されるソフトウェアオブジェクトまたはルーチンを示すことができる。本明細書に記載の様々なコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステム上で（例えば、別個のスレッドとして）実行されるオブジェクトまたはプロセスとして実装することができる。本明細書に記載のシステムおよび方法は、好ましくはソフトウェアで実装されるが、ソフトウェアとハードウェア、またはハードウェアでの実装もまた可能であり企図される。
【００４５】
コンピューティングシステム１００は、ホストが、例えばネットワーク１２０を介して、他のシステムおよびデバイスと通信することを可能にする、通信チャネル１１２を含むこともできる。通信チャネル１１２は、通信媒体の例である。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、ラジオ、赤外線、および他の無線媒体などの無線媒体が含まれる。本明細書で使用されるコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含む。
【００４６】
コンピューティングシステム１００はまた、キーボード、マウス、ペン、音声入力コンポーネント、およびタッチ入力デバイスなどの入力コンポーネント１１４を有することができる。出力コンポーネント１１６には、スクリーンディスプレイ、スピーカ、プリンタなど、ならびに、それらを駆動するための（しばしば「アダプタ」と呼ばれる）レンダリングモジュール（ｒｅｎｄｅｒｉｎｇ  ｍｏｄｕｌｅ）が含まれる。コンピューティングシステム１００は、電源機構１１８を含む。すべてのこれらのコンポーネントは、当技術分野で周知であり、これ以上の説明は必要とされない。
【００４７】
図２は、トランスポート非依存調整プロトコルによって調整される分散アクティビティを開始するイニシエータコンピューティングエンティティ２０１、イニシエータ２０１に関連付けられた第１のトランザクションマネージャ２０２、分散されたアクティビティに参加するリモートアプリケーションコンピューティングエンティティ２１１、および、リモートアプリケーション２１１に関連付けられた第２のトランザクションマネージャ２１２を含む、ネットワーク環境２００を示す。この環境は、特にＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−ＡＴに適用されるが、本発明の原理は、これら特定のメッセージ交換プロトコルに限定されない。図２のネットワーク環境２００は、「従来技術（Ｐｒｉｏｒ  Ａｒｔ）」とラベル付けされている図４Ａの従来技術のネットワーク環境４００と同様である。しかし、種々のコンピューティングエンティティ２０１、２０２、２１１、２１２は、本発明の原理を実施するために修正され、したがって、従来のコンピューティングエンティティではないため、図２には、「従来技術」と付されていない。
【００４８】
この説明ならびに特許請求の範囲では、「コンピューティングエンティティ」は、任意のコンピューティングシステム、あるいはそのコンピュータシステム上で実行している１つまたは複数のソフトウェアコンポーネントとして定義される。「コンピューティングシステム」は、ソフトウェアを実行することができる、任意のハードウェアコンポーネントまたはハードウェアコンポーネントの組合せとして定義される。コンピューティングシステムは、分散させることもでき、その場合、コンピューティングシステムは、本明細書における広義のコンピューティングシステムの定義にやはり含まれる複数のコンピューティングシステムを包含することができる。コンピューティングシステムの例は、図１に関連して説明されている。しかし、ここで示されたコンピューティングシステムの定義は、決して限定するものではない。図２を参照すると、コンピューティングエンティティのうちの任意の１つまたは組合せ（あるいはすべて）は、単一のコンピューティングシステム上で実行することができる。しかし、１つのあり得るネットワーク環境においては、あるコンピューティングシステム上で、イニシエータコンピューティングエンティティ２０１とトランザクションマネージャコンピューティングエンティティ２０２が実行される一方で、別のコンピューティングシステム上で、リモートアプリケーションコンピューティングエンティティ２１１とトランザクションマネージャコンピューティングエンティティ２１２が実行される。
【００４９】
図２に関して示される種々のコンピューティングエンティティ２０１、２０２、２１１、および２１２は、例えば、上述のＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎやＷＳ−ＡＴのような、従来のトランスポート非依存の調整およびトランザクションプロトコルに従うことができる。本明細書で使用される用語「ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎ」は、仕様書を参照している（例えば、非特許文献１参照。）。本明細書で使用される用語「ＷＳ−Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎ」、「ＷＳ−ＡｔｏｍｉｃＴｒａｎｓａｃｔｉｏｎ」、「ＷＳ−ＡＴ」は、仕様書を参照している（例えば、非特許文献２参照。）。
【００５０】
しかし、図２の種々のコンピューティングエンティティ２０１、２０２、２１１、および２１２は、例えば、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−ＡＴのような、基本メッセージ交換プロトコルを用いて通信を行うことができだけではなく、これらの基本メッセージ交換プロトコルに対する１つまたは複数の拡張を実装することもできる。イニシエータ２０１が分散されたアクティビティについて登録を行うのと同時に、またはそれに先立って、イニシエータ２０１およびトランザクションマネージャ２０２は、分散されたアクティビティを達成する際に使用するために、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−ＡＴの適切な拡張を交渉することができる。
【００５１】
図３は、イニシエータ２０１およびトランザクションマネージャ２０２が、本発明の原理による、メッセージ交換プロトコルの拡張を交渉するための方法３００のフローチャートを示す。イニシエータ２０１によって行われる動作は、図３の見出し「イニシエータ」の下にある左列にリストされる。トランザクションマネージャ２０２によって行われる動作は、図３の見出し「トランザクションマネージャ」の下にある右列にリストされる。しかし、本発明の原理は、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−ＡＴの拡張の交渉のみならず、任意の拡張可能なメッセージ交換プロトコルの拡張の交渉に適用される。したがって、この汎用性を明示するために、イニシエータを、より一般的に「第１のコンピューティングエンティティ」と呼び、トランザクションマネージャを「第２のコンピューティングエンティティ」と呼んでもよい。以下に述べるように、この交渉手順は、コンピューティングエンティティの１つが拡張を交渉することができない場合、拡張なしの基本メッセージ交換プロトコルにフォールバックする。したがって、分散されたアクティビティを、拡張が使用されない場合でも達成することができる。
【００５２】
図３に示す方法３００に従って、まず、（本明細書では、一般化のために「第１のコンピューティングエンティティ」とも呼ばれる）イニシエータ２０１は、第２のコンピューティングエンティティとメッセージ交換パターンで通信をするときに、第１のコンピューティングエンティティが実装することができる、（「第１の１つまたは複数の拡張のセット」または「第１の拡張」とも呼ばれる）１つまたは複数の拡張を識別する情報を含む、（「第１の１つまたは複数の拡張識別データ構造」または略して「第１の（複数の）拡張識別データ構造」とも呼ばれる）１つまたは複数の拡張識別データ構造を、構成する（図３Ａの動作３０１）。第１の（複数の）拡張識別データ構造は、図３Ｂにおいてコンポーネント３００Ｂとして例示されている。「拡張識別」データ構造は、単に、（第２のコンピューティングエンティティが拡張を交渉するように構成された場合、）第１のコンピューティングエンティティが使用できる拡張を第２のコンピューティングエンティティが解釈するために充分な情報を含む、任意のデータ構造である。この解釈は、第１のメッセージにおいて識別される拡張、および／または第２のコンピューティングシステムに既知の情報に、基づくことができる。この（複数の）データ構造の正確な物理構造は、本発明の原理において重要ではない。
【００５３】
次いで、第１のコンピューティングエンティティは、第１の１つまたは複数の拡張識別データ構造を含む第１のメッセージを構成する（動作３０２）。この第１のメッセージの例示的データ構造は、第１のメッセージ３００Ｃとして図３Ｃに示されており、第１の（複数の）拡張識別データ構造３００Ｂを含むものとして概略的に例示されている。第１のコンピューティングエンティティが図２のイニシエータ２０１であり、第２のコンピューティングエンティティがトランザクションマネージャ２０２である図２の一実施形態において、第１のメッセージは、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されるＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求であり、その場合、イニシエータは分散アクティビティを開始するが、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎの仕様によって定義されていない第１の（複数の）拡張識別データ構造の追加が用いられる。メッセージは、ＷＳ−Ｃｏｏｒｄｉｎａｉｔｏｎプロトコルによって定義される、ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅ、またはＲｅｇｉｓｔｅｒ要求とすることもできる。他の実施形態では、このメッセージは、分散されたアクティビティに先立って適切に生成され、ＷＳ−Ｃｏｏｒｄｉｎａｉｔｏｎによって管理される任意のメッセージ交換の帯域外で獲得され得る。
【００５４】
次いで、第１のコンピューティングエンティティは、第１のメッセージを第２のコンピューティングシステムに提供し（動作３０３）、その後、第２のコンピューティングエンティティが、第１のメッセージを受け取る（動作３１１）。これは、第１のコンピューティングエンティティと第２のコンピューティングエンティティが、異なるコンピュータに位置する場合は、メッセージングまたはリモート関数呼出し（ｒｅｍｏｔｅ  ｆｕｎｃｔｉｏｎ  ｃａｌｌ）を介して達成することができる。第１および第２のコンピューティングエンティティが、同じコンピュータ上に位置する場合は、ローカルＡＰＩ（アプリケーションプログラムインターフェース）を介して達成することもできる。
【００５５】
第２のコンピューティングエンティティが、本発明の原理に従って、メッセージ交換プロトコルの拡張を交渉することができる場合、第２のコンピューティングエンティティが、第１のメッセージから第１の（複数の）拡張識別データ構造を読み取り（動作３１２）、次いで、（本明細書では、「第２の１つまたは複数の拡張のセット」または単純に「第２の拡張」とも呼ばれる）第２のコンピューティングエンティティによって、第１の（複数の）拡張、ならびに、実装することができ（提供されることになる）拡張に基づいて、メッセージ交換で実際に使用される１つまたは複数の拡張を識別することができる（動作３１３）。
【００５６】
第１および第２のコンピューティングエンティティは、この決定を行うときに特定の規則のセットに従うことができる。例えば、第１の（複数の）拡張が、第２のコンピューティングエンティティがサポートするものよりも新しいバージョンのプロトコルに関する場合、トランザクションマネージャが、第２のコンピューティングエンティティがサポートするプロトコルのうちで最新のバージョンに戻ることができる。他方で、第１の（複数の）拡張が、第２のコンピューティングシステムがサポートするものよりも初期のバージョンのプロトコルについての場合、第２のコンピューティングシステムは、単に、その初期のバージョンのプロトコルに関連付けられた拡張を使用することができる。
【００５７】
あるいは、第２のコンピューティングエンティティは、実際の使用される拡張が、第１の１つまたは複数の拡張のうち第２のコンピューティングエンティティによってサポートされる拡張のみを含むことを決定することができる。第２のコンピューティングエンティティはまた、第１のコンピューティングエンティティによって所望されるいくつかの拡張を、第２のコンピューティングエンティティがこれらの拡張をサポートできる場合でも、理由を問わずに拒否することができる。
【００５８】
第２のコンピューティングエンティティは、第２のコンピューティングエンティティによってサポートされるメッセージ交換プロトコルの拡張を識別する情報を含む、（本明細書では「第２の１つまたは複数の拡張識別データ構造」または「第２の（複数の）拡張識別データ構造」とも呼ばれる）１つまたは複数の拡張識別データ構造を構成する（動作３１４）。第２の（複数の）拡張識別データ構造は、図３Ｄにおいて、コンポーネント３００Ｄとして表されている。「第２の１つまたは複数の拡張識別データ構造」は、単に、第１のコンピューティングシステムが、第２のコンピューティングエンティティによってサポートされ提供されることになる拡張を解釈できるために充分な情報を含む、任意のデータ構造である。この解釈は、第２の（複数の）拡張識別データ構造内の情報、または第１のコンピューティングエンティティに既知の情報に基づくことができる。この（複数の）データ構造の正確な物理的構造は、本発明の原理において重要ではない。
【００５９】
次いで、第２コンピューティングエンティティは、第２の（複数の）拡張識別データ構造を含む第２のメッセージを構成する（動作３１５）。この第２のメッセージのデータ構造の例は、図３Ｅにおいて第２のメッセージ３００Ｅとして示されており、第２の（複数の）拡張識別データ構造３００Ｄを含むものとして概略的に例示されている。第１のコンピューティングエンティティが図２のイニシエータ２０１であり、第２のコンピューティングエンティティが図２のトランザクションマネージャ２０２である一実施形態では、このメッセージは、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されるＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅであり、この場合、トランザクションマネージャは、イニシエータによって提供されるＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求に応答するが、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎの仕様によって定義されていない第２の（複数の）拡張識別データ構造の追加を伴う。他の実施形態では、この第２のメッセージは、分散されたアクティビティに先立って適切に生成され、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎによって管理される任意のメッセージ交換の帯域外で獲得されうる。
【００６０】
次いで、第２のコンピューティングエンティティは、第２のメッセージを第１のコンピューティングエンティティに提供し（動作３１６）、その後、第１のコンピューティングエンティティが、第２のメッセージを受け取る（動作３０４）。
【００６１】
第１のコンピューティングエンティティは、第２の（複数の）拡張識別データ構造を第２のメッセージから読み取り（動作３０５）、次いで、第１のコンピューティングエンティティによってサポートされる第１の（複数の）拡張と、第２のコンピューティングエンティティによってサポートされる第２の（複数の）拡張に基づいて、使用される実際の拡張を識別する（動作３０６）。
【００６２】
したがって、第２のコンピューティングエンティティが、本発明の原理に従って（複数の）メッセージ交換プロトコル拡張を交渉することができる場合、第１および第２のコンピューティングエンティティは、メッセージ交換プロトコルについて合意し、それに対して１つまたは複数の拡張を用いて、メッセージ交換のパフォーマンスを改善することができる。一方、第２のコンピューティングエンティティが、本発明の原理に従って拡張を交渉することができない場合、第２のコンピューティングエンティティは、単に、第１の（複数の）拡張識別データ構造を無視し、第２の拡張識別データ構造を含むことなしに第１のメッセージに応答する。次いで、第１のコンピューティングエンティティは、第２のコンピューティングエンティティが拡張をまったくサポートしないことを意味する、そのような第２の（複数の）拡張識別データ構造の欠如を解釈することができ、したがって、第１のコンピューティングエンティティは、拡張なしに単に基本メッセージ交換プロトコルにフォールバックする。したがって、メッセージ交換のすべての当事者が、メッセージ交換プロトコルの拡張を交渉することができるのではない場合でも、メッセージ交換は、あるレベルで可能である。エンドポイント参照に（複数の）拡張識別データ構造を提供することによって、第２のコンピューティングシステムは、第２のコンピューティングエンティティがそれらのデータ構造を解釈することができない場合に、それらのデータ構造を正当に無視することができる。この場合、第２のコンピューティングエンティティは、基本メッセージ交換プロトコルを用いて、第１のコンピューティングエンティティと依然として対話することができる。
【００６３】
一実施形態では、交渉される拡張は、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−ＡｔｏｍｉｃＴｒａｎｓａｃｔｉｏｎに対する非従来型の拡張であり、それにより、パフォーマンス、精度、および相互運用性の改善が可能になる。この事例では、図３Ａに関して説明した第１のコンピューティングエンティティは、イニシエータ２０１とすることができ、図３Ａに関して説明した第２のコンピューティングエンティティは、トランザクションマネージャ２０２とすることができる。この事例では、参加者−調整者の関係は、常に、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されてセットアップされ、参加者と調整者は、ＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎまたはＷＳ−ＡＴに対する異なる拡張を交渉することができる。これにより、様々な当事者が、それらの能力およびコンピューティングエンティティ間のリンクに応じて、適切に異なるやり方でメッセージ交換プロトコルを最適化することが可能になる。このようなＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−ＡＴの拡張のいくつかの例を次に述べる。
【００６４】
拡張＃１
ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎは、イニシエータとそのトランザクションマネージャの間で、分散されたアクティビティをまずセットアップするために、２つのラウンドトリップを指定する。具体的には、イニシエータは、ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求を、トランザクションマネージャに送る。次いで、トランザクションマネージャは、ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅをイニシエータに送る。この第１のラウンドトリップは、トランザクションの確立を達成する。次いで、イニシエータは、Ｒｅｇｉｓｔｅｒ要求をトランザクションマネージャに送る。次いで、トランザクションマネージャは、ＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅをイニシエータに返す。この第２のラウンドラウンドトリップは、イニシエータを、トランザクションにおけるある種の役割を有するものとして登録する。これら２つのラウンドトリップは、かなりの時間を取ることがある。
【００６５】
図３に関連して述べた方法を用いて交渉することができるＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎの１つの拡張に従って、イニシエータおよびトランザクションマネージャは、このメッセージ交換を、単に１つのラウンドトリップに短縮することができる。詳細には、イニシエータは、（通常、Ｒｅｇｉｓｔｅｒメッセージ内に含まれる）登録情報を、代わりにＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求内に含む。同様に、トランザクションマネージャは、（通常、ＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅ内に含まれる）登録応答情報を、代わりにＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅメッセージ内に含む。これにより、分散されたアクティビティについて登録する際の待ち時間が大幅に減少して、パフォーマンスが改善する。
【００６６】
拡張＃２
第２の例の拡張では、ＷＳ−ＡＴによって指定される従来の２相準備コミットトランザクションに関連する２つのラウンドトリップ（図５のメッセージフローを参照のこと）を、代わりに１つのラウンドトリップに短縮することができる。図５を参照すると、従来、トランザクションマネージャＴＭ２は、トランザクションマネージャＴＭ２が準備メッセージを受け取ってから、トランザクションマネージャＴＭ２がコミットメッセージを受け取るまで、未確定相５０５に入っている。
【００６７】
しかし、いくつかの事例では、このトランザクションマネージャＴＭ２は、トランザクションにおける実際にそのトランザクションの結果に関心がある当事者のみであり得る。例えば、トランザクションマネージャＴＭ２に関連したリモートアプリケーションは、トランザクションにおけるイニシエータ以外の当事者のみであり得る。その場合、この第２の例の拡張を、図３に関連して述べた方法に従って交渉することができる。
【００６８】
この第２の例の拡張では、準備メッセージ５０１（または、本明細書ではＳｉｎｇｌｅＰｈａｓｅＣｏｍｍｉｔメッセージと呼ばれる他のある種のメッセージ）は、トランザクションマネージャＴＭ２によって、トランザクションをコミットするかまたは中止するかについての決定の委任として解釈される。トランザクションマネージャＴＭ２は、トランザクションをコミットしたかまたは中止したかどうかを、トランザクションマネージャＴＭ１に報告することができる。しかし、それ以外では、トランザクションマネージャＴＭ１は、トランザクションを終了する。第２のトランザクションマネージャＴＭ２は、ＴＭ１からのコミットメッセージを期待しない。さらに、トランザクションマネージャＴＭ２は、トランザクションマネージャＴＭ２が、トランザクションをコミットするかまたは中止するかどうかを内部で決定するために取られる時間以外は、重大な未確定相には入らない。未確定相は、除去されるか少なくとも短縮されるため、トランザクションのパフォーマンスが改善される。
【００６９】
拡張＃３
第３の例の拡張は、コーディネータ（例えば、第１のトランザクションマネージャＴＭ１）が、上述の拡張＃２に示されるような、トランザクションをコミットするかまたは中止するかを決定する責務を、参加者（例えば、第２のトランザクションマネージャＴＭ２）に委任したときに適用される。拡張＃２に関して上で述べたように、これを、ＳｉｎｇｌｅＰｈａｓｅＣｏｍｍｉｔメッセージを使用して達成することができる。この第３の例の拡張では、参加者（例えば、第２のトランザクションマネージャＴＭ２）は、ＩｎＤｏｕｂｔメッセージなどを使用しＳｉｎｇｌｅＰｈａｓｅＣｏｍｍｉｔメッセージに応答して、トランザクションがコミットされるまたは中止されるかどうかについて第１のトランザクションＴＭ１が未確定であることを、第１のトランザクションマネージャＴＭ１に示す。例えば、第２のトランザクションマネージャＴＭ２は、トランザクションをコミットするかまたは中止するかどうかについての決定を、さらに他のコンピューティングエンティティに委任し、また、第２のトランザクションマネージャＴＭ２は、トランザクションがコミットされるべきかまたは中止されるべきかどうかについて、第３者から指示を受け取らないとすると、第２のトランザクションマネージャＴＭ２は、いくらかの時間のあと、ＩｎＤｏｕｂｔメッセージを第１のトランザクションマネージャＴＭ１に伝達する。
【００７０】
拡張＃４
第２のトランザクションマネージャＴＭ２が、何らかの理由で、トランザクションに関する状態情報を見失う、あるいはトランザクションがコミットされたかまたは中止されたかどうかが分からなくなった場合、第２のトランザクションマネージャＴＭ２は、Ｒｅｐｌａｙメッセージを、第１のトランザクションマネージャＴＭ１に送信することによって、従来のＷＳ−ＡＴプロトコルに従うことができるであろう。次いで、第１のトランザクションマネージャＴＭ１は、トランザクションがオープンの場合に、トランザクションの任意の状態情報を提供することができ、あるいは、トランザクションが処理中でない場合に、トランザクションがコミットされるかまたは中止されるかどうかについての決定を提供することができるであろう。
【００７１】
しかし、この従来のＲｅｐｌａｙメッセージは、１つのトランザクションの識別を可能にするのみである。第２のトランザクションマネージャＴＭ２がリプレイする必要がある多数の異なるトランザクションがある場合、リプレイメッセージは、各トランザクションごとに送られるであろう。第４の例の拡張は、単一のリプレイメッセージが、複数のトランザクションの識別を含むことを可能にする。次いで、第１のトランザクションマネージャＴＭ１は、各トランザクションごとに適切な状態またはステータス情報を送るであろう。リプレイメッセージは、ある一定の期間内にオープンであるすべてのトランザクションに対してリプレイが望ましいことを単に示すこともできる。この拡張は、特に可能な複数の並行したトランザクションがある場合、回復の際のパフォーマンスを改善する。
【００７２】
拡張＃５
第５の例の拡張は、ＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔメッセージ内に含まれ得る情報を補足する。メッセージを、トランザクションのために有用な任意の情報を含むように拡張することができる。例えば、ＣｒｅａｔｅＣｏｏｒｄｉｎａｔｏｎＣｏｎｔｅｘｔメッセージは、トランザクションに関する情報について管理者がアクセスできる、人間に読み取れる情報を含むことができる。ＣｒｅａｔｅＣｏｏｒｄｉｎａｔｏｎＣｏｎｔｅｘｔはまた、（データベースなどの）リソースマネージャがどのようにリソースをロックするか、ならびに、複数のトランザクションがそれらのリソースに並行してアクセスしたときに、リソースがどのように反応すべきかを表す、分離レベル（ｉｓｏｌａｔｉｏｎ  ｌｅｖｅｌ）パラメータを含むこともできる。
【００７３】
この拡張はまた、そのようなトランザクション固有の情報がＣｏｏｒｄｉｎａｔｏｎＣｏｎｔｅｘｔオブジェクトに含まれるようにすることもできる。これにより、ＣｏｏｒｄｉｎａｔｏｎＣｏｎｔｅｘｔオブジェクトを通常解釈するであろう任意のコンピューティングエンティティが、トランザクション固有の情報にアクセスできるようになる。
【００７４】
このようなトランザクション固有の情報は、コンピュータエンティティが、ＷＳ−ＡＴ以外のトランザクションプロトコルによって管理されるトランザクションに登録することを可能にする、メカニズムまたはバインディング（ｂｉｎｄｉｎｇ）を含むこともできる。このようなバインディングは、例えば、ＯｌｅＴｘまたはＴＩＰを含むことができる。次いで、ＣｏｏｒｄｉｎａｔｏｎＣｏｎｔｅｘｔオブジェクトの受領者は、トランザクションに登録するためだけではなく、トランザクションを達成する際に用いられるトランザクションプロトコルを選択するために、ＣｏｏｒｄｉｎａｔｏｎＣｏｎｔｅｘｔオブジェクト内に与えられたバインディングを使用することができる。
【００７５】
拡張＃６
さらに他の拡張により、エンドポイント参照内のコンテキスト情報が、例えば、トランザクションが、（例えばコミットされるまたは中止されることによって）適切に終結しているかどうかに関する情報に加え、現在のトランザクションの識別、および／または、処理中の他のトランザクションの識別などの追加情報を含むことが可能になる。エンドポイント参照は、ＷＳ−Ａｄｄｒｅｓｓｉｎｇ仕様によって定義され、ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルによって定義されるＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔＲｅｓｐｏｎｓｅ、Ｒｅｇｉｓｔｅｒ、およびＲｅｇｉｓｔｒａｔｉｏｎＲｅｓｐｏｎｓｅメッセージのすべてにおいて含まれる。この情報により、参加者またはコーディネータが、トランザクションに関連する「記憶消失（ａｍｎｅｓｉａ）」を検出することができるであろう。
【００７６】
最も信頼できるコンピューティングエンティティでさえ、トランザクションを見失う可能性は常にあり得る。記憶消失を検出するために、記憶消失を将来検出することを望むコンピューティングエンティティは、ＷＳ−Ａｄｄｒｅｓｓｉｎｇによって定義されるエンドポイント参照に格納されるＲｅｆｅｒｅｎｃｅＰａｒａｍｅｔｅｒオブジェクト内に、トランザクションに関する情報を挿入することができる。この状態情報は、トランザクションに関与する将来の通信において、ＲｅｐｌｙＴｏヘッダとしてコンピューティングエンティティに返される。次いで、コンピューティングエンティティは、この情報を使用して、コンピューティングエンティティがトランザクションを認識しているかどうかを識別することができ、そのトランザクションが認識していない場合には、認識の欠如が、トランザクションの適切な終結によるものかどうか、および、処理中のトランザクションの望ましくない忘却（すなわち記憶消失）によるものかどうかを識別することができる。記憶消失が起きた場合、コンピューティングエンティティは、例えば、ユーザまたは管理者に記憶消失を通知するなどの、回復ための適切な処置を行うことができる。
【００７７】
拡張＃７
さらに他の拡張は、ＷＳ−ＡＴによって現在管理されていないトランザクションに対する識別子を提供することにより、ＣｏｏｒｄｉｎａｔｉｏｎＣｏｎｔｅｘｔの生成を可能にする。例えば、処理中の既存のＯｌｅＴｘトランザクションがあるとする。そして、トランザクションの参加者が、ＷＳ−ＡＴを用いてトランザクションの拡張を望むとする。それを行うためには、参加者は、ＣｏｏｒｄｉｎａｔｉｏｎＣｏｎｔｅｘｔオブジェクトを、他の望ましい参加者に渡す必要がある。参加者は、このようなＣｏｏｒｄｉｎａｔｉｏｎＣｏｎｔｅｘｔオブジェクトに対する（任意選択でＣｒｅａｔｅＣｏｏｄｉｎａｔｉｏｎＣｏｎｔｅｘｔ要求とすることができる）要求を生成することができる。ＣｏｏｒｄｉｎａｔｉｏｎＣｏｎｔｅｘｔオブジェクトは返され、その後、トランザクションにやはり参加する任意のリモートアプリケーションに渡される。次いで、他の参加者が、トランザクションに登録するために、ＣｏｏｒｄｉｎａｔｉｏｎＣｏｎｔｅｘｔオブジェクトを使用することができる。
【００７８】
したがって、本発明の原理は、分散されたアクティビティを達成するために用いられるトランスポート非依存の調整プロトコルの効率的な交渉を可能にする。本発明の原理はまた、改善されたパフォーマンス、精度、および相互運用性を提供する、既存のＷＳ−ＣｏｏｒｄｉｎａｔｉｏｎおよびＷＳ−ＡＴプロトコルのいくつかの有利な拡張を可能にする。
【００７９】
本発明を、その趣旨および本質的な特徴から逸脱することなく、他の特定の形態で実施することもできる。上述の実施形態は、それらのすべての点において、例示に過ぎず、限定するものではないと見なすべきである。したがって、本発明の範囲は、以上の説明によってではなく添付の特許請求の範囲によって指定される。特許請求の範囲と等価の趣旨および範囲に含まれるすべての変更は、特許請求の範囲に包含されるものである。
【００８０】
米国特許証によって保護される特許請求の範囲は、添付の通りである。
【図面の簡単な説明】
【００８１】
【図１】本発明の特徴を実装することができる適切なコンピューティングシステムを示す図である。
【図２】トランスポートに比較的依存しない通信プロトコルが、分散されたアクティビティを達成するために交渉され得るネットワーク環境を概略的に示す図である。
【図３Ａ】本発明の原理による、メッセージ交換パターンの拡張を交渉するための方法を示すフローチャートである。
【図３Ｂ】第１の拡張識別データ構造のデータ構造を示す図である。
【図３Ｃ】第１の拡張識別データ構造を含む第１のメッセージを示す図である。
【図３Ｄ】第２の拡張識別データ構造のデータ構造を示す図である。
【図３Ｅ】第２の拡張識別データ構造を含む第１のメッセージを示す図である。
【図４Ａ】Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｃｏｏｒｄｉｎａｔｉｏｎプロトコルを実装することができる従来のネットワーク環境を示す図である。
【図４Ｂ】従来のＷｅｂ  Ｓｅｒｖｉｃｅｓ  Ｃｏｏｒｄｉｎａｔｉｏｎ（ＷＳ−Ｃｏｏｒｄｉｎａｔｉｏｎ）プロトコルに従う、様々なメッセージフローのタイミングを示すタイミング図である。
【図５】従来のＷｅｂ  Ｓｅｒｖｉｃｅｓ  Ａｔｏｍｉｃ  Ｔｒａｎｓａｃｔｉｏｎ（ＷＳ−ＡＴ）プロトコルによって定義される２相コミットトランザクションモデルに関連する、様々なメッセージフローのタイミングを示すタイミング図である。
【符号の説明】
【００８２】
１００  コンピューティングシステム
１０２  処理装置
１０４  システムメモリ, 揮発性メモリ, 不揮発性メモリ
１０６  破線
１０８  リムーバルストレージ
１１０  固定ストレージ
１１２  通信チャネル
１１４  入力コンポーネント
１１６  出力コンポーネント
１１８  電源機構
１２０  ネットワーク
２００  ネットワーク環境
２０１  イニシエータ
２０２  トランザクションマネージャＴＭ１
２１１  リモートアプリケーション
２１２  トランザクションマネージャＴＭ２
３００  方法
３０１  第１の（複数の）拡張識別データ構造を構成する
３０２  第１の（複数の）データ構造を含むメッセージを構成する
３０３  第１のメッセージをトランザクションマネージャに提供する
３０４  第２のメッセージを受け取る
３０５  第２のメッセージから（複数の）データ構造を読み取る
３０６  使用される実際の（複数の）拡張を識別する
３１１  第１のメッセージを受け取る
３１２  第１のメッセージから（複数の）データ構造を読み取る
３１３  使用される実際の（複数の）拡張を識別する
３１４  第２の（複数の）拡張識別データ構造を構成する
３１５  （複数の）データ構想を含む第２のメッセージを構成する
３１６  第２のメッセージをイニシエータに提供する
３００Ｂ  第１の（複数の）拡張識別データ構造
３００Ｃ  第１のメッセージ
３００Ｄ  第２の（複数の）拡張識別データ構造
３００Ｅ  第２のメッセージ
４００  ネットワーク環境
４０１  イニシエータ
４０２  ＴＭ１
４１１  リモートアプリケーション
４１２  ＴＭ２
４２０  時間線図
４２１  送信
４２２  応答
４２３  送信
４２４  応答
４２５  送信
４２６  送信
４２７  応答
４２８  送信
４２９  送信
４３０  送信
４３１  送信
５００  タイム図
５０１  準備メッセージ
５０２  準備済みメッセージ
５０３  コミットメッセージ
５０４  コミット済みメッセージ
５０５  未確定相
【図１】
2006166456.tif 000003
【図２】
2006166456.tif 000004
【図３Ａ】
2006166456.tif 000005
【図３Ｂ】
2006166456.tif 000006
【図３Ｃ】
2006166456.tif 000007
【図３Ｄ】
2006166456.tif 000008
【図３Ｅ】
2006166456.tif 000009
【図４Ａ】
2006166456.tif 000010
【図４Ｂ】
2006166456.tif 000011
【図５】
2006166456.tif 000012