次の方法で共有


COM+ 補正リソース マネージャーの概念

COM+ 補正リソース マネージャー (CRM) を使用すると、アプリケーション リソースを Microsoft 分散トランザクション コーディネーター (DTC) のトランザクションと簡単かつ迅速に統合できます。 アプリケーション リソースは、トランザクションの結果に投票し、その結果の最終的な通知を受け取ることができます。 アプリケーション リソースが障害に耐えるレコードを書き込むことができるように、永続的なログが生成されます。CRM は、アプリケーションの再起動時にこのログ ファイルを回復します。

CRM、次の 2 つのコンポーネントで構成されます。

  • CRM ワーカー。 このコンポーネントは、特定の CRM の主な作業を実行し、実行する必要があるタスクに固有のインターフェイスを実装します。 CRM インフラストラクチャは、CRM ワーカーへのインターフェイスを提供します。このインターフェイスを使用して、CRM ワーカーはディスク上の永続ログ ファイルにレコードを書き込むことができます。 CRM ワーカーは、クラッシュが発生した場合に回復が正しく行われるように、作業を実行する前にログにレコードを書き込み、永続的にする必要があります。 CRM ワーカーには常にトランザクションが必要です。
  • CRM コンペンセータ。 このコンポーネントは、トランザクションの完了時に CRM インフラストラクチャによって作成されます。 これは、CRM インフラストラクチャがトランザクション完了の通知と、CRM ワーカーによって以前に書き込まれたログ レコードを渡すことができる、定義済みのインターフェイスを実装します。

COM+ CRM はトランザクション通知のアトミック性と CRM ログの持続性を提供しますが、リソースの分離は提供しません。 マルチスレッド環境では、CRM 開発者は、トランザクション中に複数の CRM ワーカーまたは外部アプリケーションによってリソースへのアクセスがシリアル化されるようにする必要があります。

トランザクションが準備フェーズを通過すると、CRM コンペンセータと CRM ワーカーを同時に実行することができます。 以前のトランザクションの CRM コンペンセータが以前のトランザクションを処理している間に、新しいトランザクションの CRM ワーカー コンポーネントがアクティブになる可能性があります。

CRM サーバー アプリケーションの復旧前の障害時に、中断されたトランザクションはアクティブで、完了していない状態であると見なす必要があります。 CRM サーバー プロセスを復旧する前に、外部プロセスがこの特定のトランザクションによって変更されたリソースにアクセスすることはできません。

CRM では、基本的な CRM 機能に対して次の 3 種類のインターフェイスが定義されています。

  • ICrmLogControl は CRM クラークに実装され、ログ レコードをログに書き込むためにCRM ワーカーによって使用されます。 これは CRM コンペンセータでも使用できます。
  • ICrmCompensatorICrmCompensatorVariants は、CRM コンペンセータに実装されます。 これらのインターフェイスは、トランザクションの結果通知とそれに関連するログ レコードを CRM コンペンセータに配信するために使用されます。 通常、CRM コンペンセータは、非構造化ログ レコードと構造化ログ レコードのどちらを必要とするかに応じて、これらのインターフェイスの 1 つだけを実装します。 構造化ログ レコードは、バリアントのコレクションとして構築され、通常は Microsoft Visual Basic で使用されます。 非構造化ログ レコード は単なるバイトのバッファであり、通常は Microsoft Visual C++ で使用されます。 CRM コンペンセータは、両方のコンペンサー インターフェイスを実装できます。ただし、ログ レコードの配信には一度に 1 つだけ使用されます。
  • COM+ CRM 監視インターフェイスは、特定のサーバー アプリケーション内の CRM を監視するために使用されます。 監視インターフェイスの詳細については、「COM+ CRM 監視インターフェイス」を参照してください。

このセクションの次のトピックでは、COM+ CRM サービスの詳細について説明します。

COM+ 補正リソース マネージャーのタスク