2015-10-13 105 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