asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET MVC 4框架揭秘:Controller(3)


发布日期:2024年03月02日
 
ASP.NET MVC 4框架揭秘:Controller(3)

Controller(

虽然抽象类中定义了一个表示当前HttpResponse的属性Response但是当BeginExecute方法执行的时候该属性尚未初始化所以上面代码中使用的Response属性是我们自行定义的运行该程序后会在浏览器中呈现出如图所示的输出结果从输出方法的调用顺序中不难看出在默认的情况下Controller是以异步的方式执行的(S

Controller在默认情况下的异步执行方式

现在按照如下的方式重写虚属性DisableAsyncSupport使它直接返回True以关闭对Controller异步执行的支持

public class HomeController : Controller

{

//其他成员

protected override bool DisableAsyncSupport

{

get{return true;}

}

}

再次执行我们的程序将会得到如图所示的输出结果可以看出由于HomeController间接地实现了IAsyncController接口Controller的执行总是以调用BeginExecute/EndExecute方法的方式来执行但是由于DisableAsyncSupport属性被设置为TrueBeginExecute方法内部会以同步的方式调用Execute/ExecuteCore方法(S

Controller在DisableAsyncSupport

属性为True的情况下的同步执行方式

ASPNET MVC应用编程接口中还定义了一个SystemWebMvcAsyncController类型从名称上看AsyncController是一个基于异步的Controller但是这里的异步并不是指Controller的异步执行而是Action方法的异步执行从如下的代码片段中可以看出这个直接继承自抽象类Controller的AsyncController是一个类型(没有额外定义和重写基类的类型成员)在上一个版本中以XxxAsync/XxxCompleted形式定义的异步Action方法均定义在继承自AsyncController的Controller类型中考虑到向后兼容性AsyncController在新的版本中保留下来

public abstract class AsyncController : Controller

{}

只有以传统方式(XxxAsync/XxxCompleted)定义的异步Action方法才需要定义在AsyncController中ASPNET MVC 提供了新的异步Action方法定义方式使我们可以通过一个返回类型为Task的方法来定义以异步方式执行的Action这样的Action方法不需要定义在AsyncController中

返回目录ASPNET MVC 框架揭秘

编辑推荐

ASP NET开发培训视频教程

Microsoft NET框架程序设计视频教程

Java程序性能优化让你的Java程序更快更稳定

Visual C++音频/视频技术开发与实战

上一篇:ASP.NET MVC 4框架揭秘:Controller(1)

下一篇:Asp.Net页面生命周期