特定のビジネス ロジック操作には、複数のコンピューターで実行されている複数のプログラムが含まれる場合があります。 この設計では、関連するすべてのプログラムが正常に実行を完了しない限り、トランザクションは完了とは見なされません。 これらのプログラムがトランザクションの一部である他のすべてのプログラムがトランザクションを完了したことを確認するには、2 フェーズ コミット (2PC) プロトコルを使用する必要があります。
トランザクションという用語 (またはその派生形 (トランザクショナルなど)) は誤解を招く可能性があります。 多くの場合、トランザクションという用語は、2PC プロトコルを使用しないメインフレーム コンピューター上で実行される 1 つのプログラムを表します。 ただし、2PC プロトコルを使用している複数のコンピューター上の複数のプログラムによって実行される操作を示すために使用される場合もあります。
2PC プロトコルは、実行された操作をコミットする前に次の 2 つのフェーズを使用するため、名前が付けられています。
フェーズ 1 - 準備します。 このフェーズでは、トランザクションに関係する各プログラムが、Microsoft 分散トランザクション コーディネーター (MS DTC) などの TP マネージャーにメッセージを送信し、操作の一部を実行する準備ができていることを TP マネージャーに通知します。 このフェーズは、変更をコミットするか変更をロールバックするためにプログラムが準備されるため、準備とも呼ばれます。 TP マネージャーは、関係する各プログラムから確認を受け取った場合、フェーズ 2 に進みます。
フェーズ 2 : コミットまたはロールバック。 このフェーズでは、TP マネージャーは、トランザクションの一部として要求されたすべての変更をコミットまたはロールバックするように各プログラムに指示します。 適切に実行されたロールバックは、システムを元の状態に戻す必要があります。
注
フェーズ 1 とフェーズ 2 の間の状態は、疑わしい状態と呼ばれます。 アプリケーションで .NET を使用する開発者は、アプリケーションのどの部分が TP にアクセスする必要があり、どの部分がアクセスしないかを決定できます。 TI は、トランザクションを必要とする呼び出しと必要のない呼び出しを処理することで、この選択をメインフレームにも拡張します。 Windows ベースの 2 フェーズ コミットとメインフレーム ベースの同期レベル 2 トランザクションの完全な統合を必要とするアプリケーションの場合、TI は必要なすべての機能を提供します。 TI では、クライアント アプリケーションを変更する必要はなく、メインフレームに実行可能コードを配置せずに、メインフレーム TP をほとんどまたはまったく変更しなくても、これを行います。 クライアント アプリケーションでは、TI コンポーネントとその他のコンポーネント参照を区別する必要はありません。
次の図は、Windows ベースのクライアント アプリケーションが Microsoft 分散トランザクション コーディネーター (DTC) を暗黙的に使用して、SQL Server と CICS TP を含む分散トランザクションの 2 フェーズ コミットを調整する方法を示しています。 DTC は 2PC トランザクションを調整します。
トランザクション インテグレーターと DTC を使用して SQL Server と CICS アプリケーション間の 2 フェーズ コミットを調整するクライアント アプリケーション
注
トランザクション インテグレーターは、Windows Initiated Processing を使用して LU 6.2 (APPC) 経由でメインフレームに接続する場合にのみ 2PC をサポートします。 TCP/IP 経由で直接接続する場合、TI 経由で 2PC のサポートは利用できません。
TI と DTC を使用したクライアント アプリケーション
2 フェーズ コミット (2PC) トランザクションには、多数のコンポーネントが含まれます。 トランザクション インテグレーター (TI) を正常に使用するには、次の 2PC コンポーネントと用語を理解する必要があります。
同期ポイント レベル 2
TP は、同期レベル 0、同期レベル 1、または同期レベル 2 の 3 つのレベルのいずれかで LU6.2 プロトコルを使用して相互に対話できます。 これら 3 つの同期レベルのうち、同期レベル 2 のうち 1 つだけが 2PC プロトコルを使用します。 同期レベル 0 にはメッセージの整合性がありませんが、同期レベル 1 では制限されたデータ整合性がサポートされています。
TP マネージャー
トランザクション プログラム (TP) マネージャーは、アトミック性を実現できるようにトランザクションの結果を調整するシステム サービスです。 TP マネージャーは、トランザクションをコミットするか中止するかについて、リソース マネージャーが一貫した決定に達することを保証します。 Windows TP マネージャーは MS DTC です。
サービスの再同期
LU6.2 Resync Service は、MS DTC と連携して、2PC トランザクションの任意の時点で障害が発生した結果、一貫性のある状態への自動復旧を実行する Host Integration Server のコンポーネントです。 ホスト統合サーバーのインストール時に、LU6.2 再同期サービスが既定でインストールされます。
Resource Manager
リソース マネージャーは、永続データを管理するシステム サービスです。 サーバー アプリケーションでは、リソース マネージャーを使用して、使用可能なインベントリ、保留中の注文、売掛金の記録など、アプリケーションの永続的な状態を維持します。 リソース マネージャーはトランザクション マネージャーと協力して、(2PC プロトコルを使用して) 原子性と分離を保証するアプリケーションを提供します。 Microsoft SQL Server™ と TI は、リソース マネージャーの例です。