Azure WebJobs异步功能中的事务支持

时间:2015-04-30 04:32:51

标签: c# azure azure-webjobs azure-webjobssdk

.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

的“基础能力”部分

1 个答案:

答案 0 :(得分:0)

无论谁调用您的代码,数据库访问的工作方式都相同。无论是ASP.NET还是WCF还是某些Azure框架。

您确实可以使用事务来使您正在执行的工作成为原子。这基本上是件好事。例如,您可以原子地检查给定的队列消息或已经处理过的任何消息。如果你只是拯救你,那么你就是幂等的。

性能影响不受WebJobs的影响。除非您使用要避免的分布式交易,否则交易非常便宜。