全体像は次のとおりです。
新しい SOA ベースの情報システム内で、いくつかの WCF サービスを構築する必要があります。これらのサービスの主な目的は、ビジネス トランザクションを処理することです。
例を見てみましょう: ユーザーがサイト (またはモバイル アプリ) で注文すると、クライアント アプリケーションは、すべてのビジネス トランザクションを調整する WCF サービス (注文プロセス マネージャーと呼びましょう) を呼び出します。OPM は、サブプロセスが失敗した場合にすべてのトランザクションがロールバックされるように、何らかの方法でトランザクションを開始します。
ポイントは、OPM がユーザー アカウント サービス、ストック マネージャー サービスなどの他のサービスを呼び出さなければならない場合があるということです。これらのサービスは、独自のトランザクションをコミットおよびロールバックするストアド プロシージャを呼び出す既存のサービス (変更できない) である可能性があります。もう 1 つの可能性は、これらの他のサービスが Entity Framework の上に構築され、トランザクションを処理する独自の方法を持つ可能性があることです (Unit of Work、トランザクション スコープ、リポジトリなどを使用して...)。
私の考えでは、OPM 内でトランザクション スコープを使用するほど単純ではなく、すべてをロールバックすることを決定するたびにすべての魔法が実行されると思います。
誰かがすでにそのような問題に直面しているなら、私はすべて耳を傾けています!
環境仕様は次のとおりです。
- .Net 4.0 / C#
- WCF
- SQL Server 2008R2
皆さんに感謝します。
フレディ。