Windows Communication Foundation のトランザクションの概要
トランザクションを使用すると、一連の処理や操作を 1 つの不可分の実行単位にグループ化できます。トランザクションとは、次の性質を持つ操作のコレクションです。
- 原子性。特定のトランザクションの下で完了したすべての更新は、コミットされて永続的に格納されるか、すべて中止されて前の状態にロールバックされるかのどちらかになります。
- 一貫性。トランザクション下で行う変更は、一貫性のある状態から別の一貫性のある状態への変換を表します。たとえば、当座預金から普通預金への振り替えトランザクションでは、全体の預金残高は変更されません。
- 分離トランザクションが他の同時実行されているトランザクションに属するコミットされていない変更を監視することがなくなります。分離により、同時実行の抽象概念が提供され、1 つのトランザクションが別のトランザクションの実行に予期しない影響を与える可能性がなくなります。
- 持続性。マネージ リソース (データベース レコードなど) に対して 1 度コミットされた更新は、障害に直面しても永続的に残ります。
Windows Communication Foundation (WCF) は、Web サービスアプリケーション内で分散トランザクションを作成できる一連の豊富な機能を提供します。
WCF は、WS-AtomicTransaction (WS-AT) プロトコル サポートを実装します。このプロトコルにより WCF アプリケーションは、サードパーティ技術を使って作成された相互運用可能な Web サービスなど、相互運用可能アプリケーションにトランザクションをフローすることができます。また、WCF は、OLE トランザクション プロトコル サポートを実装します。このプロトコルは、トランザクションのフローを有効にする相互運用可能な機能が必要とされないシナリオで使用することができます。
アプリケーション構成ファイルを使用してバインディングを構成し、トランザクション フローを有効にしたり無効にしたりできます。また、バインディングに目的のトランザクション プロトコルを設定できます。さらに、構成ファイルを使用してサービス レベルでのトランザクションのタイムアウトを設定できます。詳細な情報については、次のページを参照してください。 「トランザクション フローの有効化」を参照してください。
System.ServiceModel 名前空間のトランザクション属性で次の設定が行えます。
- ServiceBehaviorAttribute 属性を使用して、トランザクションのタイムアウトと分離レベルのフィルタ処理を構成する。
- OperationBehaviorAttribute 属性を使用して、トランザクション機能を有効にし、トランザクションの完了動作を構成する。
- コントラクト メソッドで ServiceContractAttribute 属性と OperationContractAttribute 属性を使用して、トランザクション フローの要求、許可、または拒否を行う。
詳細な情報については、次のページを参照してください。 「ServiceModel トランザクションの属性」を参照してください。