我想提高我的web應用程序的對未來的可擴展性問題的表現,異步性的ASP MVC
一個場景,我想的是,如果我需要,需要從數據庫過濾列表。
這裏是草稿,我提出:
public IEnumerable<test> getL(IEnumerable<test> filter)
{
//do some filtering from the list then return it
return filter;
}
public async Task<ActionResult> Index()
{
context con = new context();
//do more stuff of stuff
IEnumerable<test> get = await Task.Run(() => { return getL(con.dep.ToList()); });
return View(get);
}
我與C#的不同步,所以我還挺想知道如果我這樣做正確的還挺新。我是否正確啓動異步呼叫?
這可能更適合https://codereview.stackexchange.com/?但是,代碼看起來爲我工作。數據庫任務完成時,將等待對「索引」的請求。根據您的數據庫訪問方法,您可能會等待調用數據庫。例如。如果你使用的是Dapper,那麼就有異步方法。 –
所以當它到達等待線時,它會等到任務結束? –
它將實際上服務於另一個web請求,直到任務完成,因此是異步部分。在非異步世界中,線程將被佔用,直到整個索引方法完成,因此這可能會提高性能。 –