C#缓存和异步请求

时间:2015-10-13 09:49:19

标签: c# caching iis asynchronous async-await

在这种方法中:

private async List<stuff> GetData()
{
    return await _appCache.GetAsync("SiteStructurePages",
         () => _repository.GetSomeStuff());
}

有什么理由让它保持异步吗?我的代码只会以异步方式执行一次,所有后续请求都将使用缓存。异步传播到我的应用程序的其他部分,这不会打到数据库,因为很多东西都被缓存了。

编辑: 我的应用程序是IIS网站应用程序。

2 个答案:

答案 0 :(得分:2)

  

有什么理由让它保持异步吗?

这真的取决于你。如果您确实需要利用异步操作,能够扩展,那么请保留它。否则,如果您不这样做,请使用同步API。它完全取决于您以及您在代码库中实际使用的内容。

我理解你一直担心异步方法会一直走到&#34;#34;并实际上改变整个代码库变为异步。这就是为什么你应该这样做,只要它值得。

附注 - 您可以稍微修改代码以节省异步状态机生成:

private Task<List<stuff>> GetData()
{
    return _appCache.GetAsync("SiteStructurePages",
         () => _repository.GetSomeStuff());
}

答案 1 :(得分:0)

如果您可以确保通话速度快并且不会阻止用户界面线程,那么请确保您不需要在此线程上进行异步。

但是,如果这些事情不在您的控制范围内,那么我会将其保持异步。