我正在学习 ASP.NET MVC 框架,从这样的一些文章中,似乎 MvcHandler 只实现了 Execute(),没有实现异步 API。实际上,我认为 Controller 也没有异步 API。
那么,ASP.NET MVC 不支持异步编程吗?如果网页需要 I/O 操作,这可能是可扩展性的一大障碍。
我正在学习 ASP.NET MVC 框架,从这样的一些文章中,似乎 MvcHandler 只实现了 Execute(),没有实现异步 API。实际上,我认为 Controller 也没有异步 API。
那么,ASP.NET MVC 不支持异步编程吗?如果网页需要 I/O 操作,这可能是可扩展性的一大障碍。
经过一番谷歌搜索,我发现了这个关于如何 DIY 异步 ASP.NET MVC 的很棒的博客。实现看起来简单明了。我想知道为什么 ASP.NET MVC 团队第一次没有这个功能。
http://blog.codeville.net/2008/04/05/improve-scalability-in-aspnet-mvc-using-asynchronous-requests/
目前,MVC 中没有内置异步支持。它在功能列表中,但不能保证它何时发布(以及以何种形式发布)。
MVC 2 通过 AsyncController 支持异步页面执行。
正如 Brad 提到的,Microsoft 正在开发一种解决方案,作为 MVC 期货的一部分。还有一个实现:http ://code.msdn.microsoft.com/AsyncMvc/Wiki/View.aspx?id=11350
ASP.NET MVC 2 现在已经合并了 beat 版本中的 asnyc 控制器。看看这个。