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 トランザクションの属性」を参照してください。