4

.NET Framework 4.5.1 では、非同期メソッドでのトランザクション サポートが導入されました。次に例を示します。

using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
    var result = await DoWorkAsync(cancellationToken)
        .ConfigureAwait(false);

    await DoMoreWorkAsync(result, cancellationToken)
        .ConfigureAwait(false);

    scope.Complete(); // commit to perform all operations above
}

参照: https://msdn.microsoft.com/en-us/library/dn261473(v=vs.110).aspx

これを Azure WebJobs 非同期関数でも使用して、作業単位を強化し、ホストがシャットダウンした場合により優れたべき等操作を提供できますか? もしそうなら、それはパフォーマンスに何らかの影響を与えますか?

アップデート:

トランザクション (単一レベル) は Service Bus キュー (スタンダード レベル) でサポートされていますが、ストレージ キューではサポートされていないようです。参照: https://msdn.microsoft.com/en-us/library/azure/hh767287.aspxの「基本機能」セクション

4

1 に答える 1

0

誰がコードを呼び出しても、データベース アクセスは同じように機能します。ASP.NET、WCF、または Azure フレームワークなど。

実際、トランザクションを使用して、実行している作業をアトミックにすることができます。これは基本的に良いことです。たとえば、指定されたキュー メッセージなどの処理が既に完了しているかどうかをアトミックにチェックできます。それでも、単に救済するだけで、そのように冪等になります。

パフォーマンスへの影響は、Web ジョブの影響を受けません。避けるべき分散トランザクションを使用する場合を除いて、トランザクションは非常に安価です。

于 2015-04-30T21:42:44.950 に答える