1

クライアントがトランザクションを送信した場合はトランザクションを受け入れ、何も送信されない場合はトランザクションを作成しないように、WCF サービス操作を構成したいと考えています。これは、COM+ のサポートされているトランザクション属性に似ていると思います。

これが WCF トランザクションで実現できるかどうかは誰にもわかりませんか?

System.Transactions の明示的なトランザクション プログラミング モデルを使用するのではなく、WCF トランザクション プログラミング モデル (サービス操作の TransactionFlowAttribute および TransactionScopeRequired など) を使用して、これをすべて達成しようとしています。

これができるようになりたいと思う理由の例を次に示します。

ServiceA は、2 つのデータ サービスを呼び出す高レベルのビジネス オペレーションを実装します。サービス B の操作は 1 回のデータベース更新を行い、サービス C の操作は 2 回のデータベース更新を行います。

ServiceA ----> ServiceB ----> <1 DB 更新>
|
V サービス C ----> <2 DB 更新>

ServiceC の 2 つのデータベース更新は、ServiceC をルートとするトランザクション内で実行する必要があります。サービス B の単一のデータベース更新は、トランザクション内で行う必要はありません。ただし、ServiceA は、ServiceB を必要とするトランザクションを定義し、ServiceC のデータベース更新は 2 つのアトミックな作業単位として発生します。

私の質問は、ServiceA によって呼び出されたときにそのトランザクションに参加するように ServiceB を構成する方法です。ただし、Service B が Service A ではなく直接呼び出される場合、データベースの更新は 1 回しか行われないため、トランザクション内で実行する必要はありません。

ありがとう、

デビッド・マドリアン

4

1 に答える 1