更新 : 2007 年 11 月
System.Transactions 名前空間には、トランザクション アプリケーションやリソース マネージャを独自に作成するためのクラスが含まれます。具体的には、1 つまたは複数の参加要素を持つトランザクション (ローカル型または分散型) を作成したり、これらのトランザクションに参加させたりできます。
重要 : |
|---|
この名前空間を使ったアプリケーション作成は、Windows 2000、Windows XP、Windows 2003 の各プラットフォームでのみサポートされます。Windows 98 や Windows ME のプラットフォームでトランザクションを作成すると、PlatformNotSupportedException がスローされます。 |
System.Transactions インフラストラクチャは、SQL Server、ADO.NET、MSMQ、MSDTC (Microsoft Distributed Transaction Coordinator) で開始されたトランザクションをサポートすることにより、プラットフォーム全体を通じて、シンプルで効率のよいトランザクション プログラミングを可能にします。この名前空間は、Transaction クラスに基づく明示的なプログラミング モデルだけでなく、インフラストラクチャがトランザクションを自動的に管理する、TransactionScope クラスを使用した暗黙のプログラミング モデルも提供します。開発では、簡単な暗黙のモデルを使用することを強くお勧めします。暗黙のモデルを使用するには、まず「トランザクション スコープを使用した暗黙的なトランザクションの実装」を参照してください。トランザクション アプリケーションの記述の詳細については、「トランザクション アプリケーションの作成」を参照してください。
また、System.Transactions には、リソース マネージャを実装するための型が用意されています。System.Transactions インフラストラクチャがネイティブで備えるトランザクション マネージャを使用することで、揮発性リソースまたは単一の永続性リソースの参加リストを効率よくコミットしたり、ロールバックしたりできます。リソース マネージャの実装の詳細については、「リソース マネージャの実装」を参照してください。
また、トランザクション マネージャは、他の永続性リソース マネージャがそれ自体をトランザクションに参加させた場合に、DTC などのディスク ベースのトランザクション マネージャを通じて調整することにより、ローカル トランザクションを分散トランザクションへと透過的にエスカレートする機能を備えています。System.Transactions インフラストラクチャでは、主に 2 つの方法でパフォーマンスを向上させています。
ダイナミック発生。System.Transactions インフラストラクチャは、MSDTC をトランザクションで実際に必要となったときにのみ参加させます。この点については、「トランザクション管理のエスカレーション」のトピックで詳しく解説されています。
昇格可能参加リスト。データベースなどのリソースがトランザクションに参加している唯一のエンティティである場合に、そのリソースがトランザクションの所有権を取得できます。その後、System.Transactions インフラストラクチャが必要に応じて、トランザクションの管理を MSDTC にエスカレートすることもできます。これにより、MSDTC の使用頻度をさらに減らすことができます。この点については、「単一フェーズ コミットおよび昇格可能単一フェーズ通知を使用した最適化」のトピックで詳しく解説されています。
System.Transactions は、公開しているリソースの型へのアクセスを制限する 3 レベルの信頼を定義しています。具体的には、System.Transactions アセンブリは、AllowPartiallyTrustedCallers 属性 (APTCA) が適用されているため、部分的に信頼されているコードから呼び出すことができます。この属性により、FullTrust アクセス許可セットに暗黙的に適用される (つまり、各型のパブリック アクセス メソッドに対して自動的に設定される) LinkDemand が削除されます。ただし、一部の型およびメンバについては、さらに強力なアクセス許可が必要となります。
以下に示した型とメンバは、次の宣言セキュリティ属性で装飾されているため、信頼性が一部しか確認されていないコードから呼び出すことはできません。
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
System.Transactions.Transaction.EnlistDurable
System.Transactions.Transaction.EnlistPromotableSinglePhase
System.Transactions.TransactionInterop
System.Transactions.TransactionManager.DistributedTransactionStarted
System.Transactions.TransactionManager.HostCurrentTransactionCallback
System.Transactions.TransactionManager.Reenlist
System.Transactions.TransactionManager.RecoveryComplete
System.Transactions.TransactionScope.TransactionScope (System.Transactions.Transaction,System.TimeSpan,System.Transactions.EnterpriseServicesInteropOption)
M:System.Transactions.TransactionScope.TransactionScope(System.Transactions.TransactionScopeOption,System.Transactions.TransactionOptions,System.Transactions.EnterpriseServicesInteropOption)
各種の信頼レベルの詳細については、「リソースへのアクセス時のセキュリティ信頼レベル」を参照してください。
Core Development Technologies\Data Access\Transaction Processing\
System.Transactions 名前空間の使い方の詳細については、概念について解説したドキュメントの「トランザクション処理」(Core Development Technologies\Data Access\Transaction Processing\) を参照してください。より理解を深めるためには、次のトピックの内容を重点的に読むようにしてください。
System.Transactions により提供される機能
トランザクション アプリケーションの作成
リソース マネージャの実装

クラス

構造体

インターフェイス

デリゲート

列挙型