.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异步功能中使用,以收紧工作单元并在主机关闭时提供更好的幂等操作?如果是这样,它会对性能产生任何影响吗?
更新
服务总线队列(标准层)支持事务(单级),但存储队列不支持。参考:https://msdn.microsoft.com/en-us/library/azure/hh767287.aspx
的“基础能力”部分答案 0 :(得分:0)
无论谁调用您的代码,数据库访问的工作方式都相同。无论是ASP.NET还是WCF还是某些Azure框架。
您确实可以使用事务来使您正在执行的工作成为原子。这基本上是件好事。例如,您可以原子地检查给定的队列消息或已经处理过的任何消息。如果你只是拯救你,那么你就是幂等的。
性能影响不受WebJobs的影响。除非您使用要避免的分布式交易,否则交易非常便宜。