.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の「基本機能」セクション