我正在研究一些示例UoW模式并且遇到过这个问题:
public interface ICustomerService
{
Task<IEnumerable<Customer>> GetAsync();
}
// GET: /Customer/
public async Task<ActionResult> Index()
{
return View(await _customerService.GetAsync());
}
我理解任务用于执行异步操作,但GetAsync
有什么优势,而不仅仅是在IEnumerable
声明它(因为使用await
)或这是否意味着它可以立即返回视图,并且在视图渲染时可以在后台加载Customer
个对象吗?
答案 0 :(得分:2)
它不会立即返回视图as I describe on my blog。
相反,在ASP.NET上,异步请求的好处是可伸缩性。当对客户服务的调用正在进行时,请求线程被释放以执行其他工作,例如,处理另一个请求。当await
完成时,会选择另一个请求线程来完成原始请求,并返回实际视图。
有关详细信息,请参阅slides from my recent CodeMash talk。