成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET MVC執行異步Action

開發 后端
本文介紹ASP.NET MVC執行異步Action,那么控制器對象必須為Controller類型,以及介紹異步Action可能就由兩個方法組成。

ASP.NET MVC檢查是否為異步Action

我們已經形成了一個約定:如果要執行一個異步Action,那么控制器對象必須為Controller類型。這個約定的目的是為了使用Controller類中包含的IActionInvoker——確切地說,是ControllerActionInvoker類型里的功能。因此,另一個約定便是Controller的ActionInvoker對象必須返回一個ControllerActionInvoker的實例。

ControllerActionInvoker中有一些輔助方法,能夠返回對于一個Controller或Action的描述對象。從一個Action描述對象中我們可以獲取關于這個Action的各種信息,而它是否被標記了AsyncActionAttribute,就是我們判斷這個Action是否應該被異步執行的依據。如下:

  1. publicclassSyncMvcHandler:IHttpHandler,IRequiresSessionState  
  2. {  
  3. publicSyncMvcHandler(  
  4. IControllercontroller,  
  5. IControllerFactorycontrollerFactory,  
  6. RequestContextrequestContext)  
  7. {  
  8. this.Controller=controller;  
  9. this.ControllerFactory=controllerFactory;  
  10. this.RequestContext=requestContext;  
  11. }  
  12.  
  13. publicIControllerController{get;privateset;}  
  14. publicRequestContextRequestContext{get;privateset;}  
  15. publicIControllerFactoryControllerFactory{get;privateset;}  
  16.  
  17. publicvirtualboolIsReusable{get{returnfalse;}}  
  18.  
  19. publicvirtualvoidProcessRequest(HttpContextcontext)  
  20. {  
  21. try  
  22. {  
  23. this.Controller.Execute(this.RequestContext);  
  24. }  
  25. finally  
  26. {  
  27. this.ControllerFactory.ReleaseController(this.Controller);  
  28. }  
  29. }  

ControllerActionInvoker類型中有個protected方法GetControllerDescriptor,它接受一個ControllerContext類型的參數,并返回一個ControllerDescriptor對象來描述當前控制器,而從該描述對象中可以通過FindAction方法獲得一個ActionDescriptor對象來描述即將執行的Action。如果是一個不存在的Action,那么就返回false,最后就通過SyncMvcHandler對象來執行默認的行為。當且僅當該Action上擁有AsyncActionAttribute 標記時,才說明它應該被異步執行,返回true。此外,這段代碼中用到了MethodInvoker,這是一個輔助類,它來源于Fast Reflection Library,它實現了反射調用功能,但是它的性能十分接近于方法的直接調用,我在這篇文章中詳細描述了這個項目的功能和使用。

這段代碼便涉及到ASP.NET MVC RC版本在Beta版本基礎上的改進。在原先的ControllerActionInvoker類中只有獲取Action方法的MethodInfo,而沒有RC中各描述對象這樣的抽象類型。從目前的設計上來看,我們使用的都是基于反射的抽象描述類型的子類。例如默認情況下,我們通過ActionDescriptor抽象類型訪問的實際上是ReflectedActionDescriptor類型的實例。這是一個很有用的改進,由于我們通過描述對象進行抽象,于是我們就可以:

使用不同的實現方式來描述各對象,默認情況下是使用基于反射(也就是“約定”)的實現,如果需要的話我們也可以使用基于配置文件的方式替換現有實現。

使用特定對象的描述方式可以不拘泥于內部細節,例如一個異步Action可能就由兩個方法組成。
有了特定的描述對象,也方便添加額外的屬性,例如該Action是否應該異步執行,是否應該禁用Session State等等。以上介紹ASP.NET MVC執行異步Action

【編輯推薦】

  1. 介紹ASP.NET 2.0虛擬主機
  2. 淺談ASP.NET應用程序
  3. 優化ASP.NET 2.0 Profile Provider
  4. 淺談ASP.NET管道優化
  5. 介紹ASP.NET Routing引擎
責任編輯:佚名 來源: IT168
相關推薦

2009-02-16 10:05:11

ActionMVCASP.NET

2009-03-06 10:28:30

MVCASP.NET異步Action

2009-02-17 09:22:14

ActionMVCASP.NET

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2010-04-06 15:20:56

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2010-02-05 08:32:32

ASP.NET MVC

2009-08-14 17:57:43

ASP.NET MVC

2009-07-28 16:40:11

ASP.NET異步頁面

2015-06-17 17:01:48

ASP.NET

2021-03-08 07:32:05

Actionweb框架

2010-06-23 15:44:03

ASP.NET MVC

2010-03-19 09:17:16

ASP.NET MVC

2009-07-24 11:33:12

MVC單元測試ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天爽综合网 | v片网站 | 欧美日韩久久精品 | 精品久久久999 | 国产操操操 | 中文字幕在线视频精品 | 日本视频一区二区 | 精品一区二区av | 野狼在线社区2017入口 | 免费观看羞羞视频网站 | 91精品国产91久久久久久吃药 | 天天天久久久 | 日韩欧美在线观看视频网站 | 精品欧美乱码久久久久久 | 在线一区| 国产区视频在线观看 | 国产精品99久久久精品免费观看 | 91在线网站 | 91黄色片免费看 | 日韩另类视频 | 中文字幕在线免费观看 | 亚洲一区二区日韩 | 国产精品久久久久久久久免费 | a级在线免费视频 | 久久91精品国产一区二区 | 香蕉大人久久国产成人av | 欧美精品在线播放 | 夜操 | 狠狠操狠狠搞 | 夜夜草导航 | 亚洲一区 中文字幕 | 久久久久久艹 | 亚洲人va欧美va人人爽 | 久久国内 | 亚洲国产91 | 亚洲一区精品在线 | 男人的天堂亚洲 | 欧美中文一区 | 殴美黄色录像 | 欧美久久久久久久久中文字幕 | www.性色|