我想提高我的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请求,直到任务完成,因此是异步部分。在非异步世界中,线程将被占用,直到整个索引方法完成,因此这可能会提高性能。 –