System.Transactions により提供される機能

ここでは、System.Transactions 名前空間により提供される機能を使用して、独自のトランザクション アプリケーションとリソース マネージャを作成する方法について説明します。特に、1 つまたは複数の参加要素を含むローカル トランザクションまたは分散トランザクションを作成し、参加する方法について説明します。

System.Transactions の概要

System.Transactions 名前空間内のクラスにより提供されるインフラストラクチャは、SQL Server、ADO.NET、メッセージ キュー (MSMQ)、および Microsoft 分散トランザクション コーディネータ (MSDTC) で開始されたトランザクションをサポートすることにより、トランザクション プログラミングを単純で効率的なものにします。System.Transactions 名前空間は、Transaction クラスに基づく明示的なプログラミング モデルだけでなく、インフラストラクチャがトランザクションを自動的に管理する、TransactionScope クラスを使用した暗黙的なプログラミング モデルも提供します。この 2 つのモデルを使用したトランザクション アプリケーション作成方法の詳細については、「トランザクション アプリケーションの作成」を参照してください。

System.Transactions 名前空間には、リソース マネージャを実装するための型も用意されています。リソース マネージャは、トランザクションで使用する永続性データまたは揮発性データを管理し、トランザクション マネージャと連携してアプリケーションの原子性と分離を保証します。System.Transactions インフラストラクチャにより提供されるトランザクション マネージャは、複数の揮発性リソースまたは単一の永続性リソースに関連するトランザクションをサポートします。リソース マネージャの実装の詳細については、「リソース マネージャの実装」を参照してください。

また、トランザクション マネージャは、他の永続的リソース マネージャがそれ自体をトランザクションに参加させた場合に、DTC などのディスク ベースのトランザクション マネージャと連携して、ローカル トランザクションを分散トランザクションへと透過的にエスカレートします。System.Transactions インフラストラクチャでは、主に 2 つの方法でパフォーマンスを向上させています。

  • ダイナミック エスカレーション。これにより、トランザクションが複数の分散リソースにわたる場合、System.Transactions インフラストラクチャが MSDTC のみを使用すること保証します。ダイナミック エスカレーションの詳細については、「トランザクション管理のエスカレーション」を参照してください。

  • 昇格可能参加リスト。これにより、データベースなどのリソースが、トランザクションに参加している唯一のエンティティである場合に、トランザクションの所有権を取得できます。その後、必要に応じて、System.Transactions インフラストラクチャがトランザクションの管理を MSDTC にエスカレートすることもできます。これにより、MSDTC の使用頻度をさらに減らすことができます。昇格可能参加リストの詳細については、「単一フェーズ コミットおよび昇格可能単一フェーズ通知を使用した最適化」を参照してください。

System.Transactions 名前空間は、AllowPartiallyTrustedCallers (APTCA)、DistributedTransactionPermission (DTP)、および完全な信頼の 3 つの信頼レベルを定義し、公開するリソースの種類へのアクセスを制限しています。さまざまな信頼レベルの詳細については、「リソースへのアクセス時のセキュリティ信頼レベル」を参照してください。

このセクションの内容

トランザクション アプリケーションの作成

System.Transactions 名前空間には、トランザクション アプリケーションを作成するための 2 つのモデルが用意されています。「トランザクション スコープを使用した暗黙的なトランザクションの実装」では、System.Transactions 名前空間で、TransactionScope クラスを使用した暗黙的なトランザクションの作成がどのようにサポートされるかについて説明しています。

CommittableTransaction を使用した明示的なトランザクションの実装」では、System.Transactions 名前空間で、CommittableTransaction クラスを使用した明示的なトランザクションの作成がどのようにサポートされるかについて説明しています。

トランザクション アプリケーションの作成の詳細については、「トランザクション アプリケーションの作成」を参照してください。

リソース マネージャの実装

トランザクションに参加できるリソース マネージャの実装については、「リソース マネージャの実装」を参照してください。ここでは、リソースの参加、トランザクションのコミット、障害後の回復、および最適化のベスト プラクティスについて説明しています。

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.