2015-10-13 122 views
1

在这种方法中:C#缓存和异步请求

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

没有任何理由保留它异步?我的代码只会以异步方式执行一次,所有后续请求都会使用缓存。异步扩展到我的应用程序的其他部分,这不会触及数据库,因为很多东西都被缓存。

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

回答

2

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

这真的取决于你。如果您实际上需要利用异步操作(可以缩放),请保留它。否则,如果你不这样做,请使用同步API。这完全取决于您,以及您在代码库中实际使用的内容。

我明白你担心异步方法会“一路”发生,并且实际上改变了你的整个代码库以成为异步。这就是为什么你应该这样做,只要它是值得的。

附注 - 你可以稍微修改代码以节省自己的异步状态机代:

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

所以我不敢恭维,在我的情况下,它并没有帮助缩放(异步方法将运行所有情况下的0.001‰),我应该让它同步。 '' 此外,我不能真正从该方法中删除异步,因为结果立即消耗。 – user2029276

+0

@ user2029276为什么结果被即刻消耗的事实与我所说的有什么关系? –

0

如果你可以确保这个调用很快并且不会阻塞一个UI线程,那么当然你不需要这个Async。

但是,如果这些东西不在您的控制之下,那么我会让它异步。

+0

我的应用程序的网站,我不关心,如果第一次请求会有点长。 – user2029276