乌有之乡最新文章导航绿软下载站解压软件下载xf881兴发手机版工程师培训资源苹果资源专题

您眼下所在位置:首页多线程日出而作.Net日出而作 → ASP.NET MVC前端框架学习网的ActionInvoker

ASP.NET MVC前端框架学习网的ActionInvoker

光阴:2015/6/28来源:xf881兴发手机版入口作者:网管猪猪侠之百变联盟我要评述(0)

对此执行同步Action的SyncMvcHandler。其实现十分简单而直接,以下是ASP.NET MVC前端框架学习网的ActionInvoker。

publicclassSyncMvcHandler:IHttpHandler,IRequiresSessionState  
{  
publicSyncMvcHandler(  
IControllercontroller,  
IControllerFactorycontrollerFactory,  
RequestContextrequestContext)  
{  
this.Controller=controller;  
this.ControllerFactory=controllerFactory;  
this.RequestContext=requestContext;  
}  
 
publicIControllerController{get;privateset;}  
publicRequestContextRequestContext{get;privateset;}  
publicIControllerFactoryControllerFactory{get;privateset;}  
 
publicvirtualboolIsReusable{get{returnfalse;}}  
 
publicvirtualvoidProcessRequest(HttpContextcontext)  
{  
try  
{  
this.Controller.Execute(this.RequestContext);  
}  
finally  
{  
this.ControllerFactory.ReleaseController(this.Controller);  
}  
}  
} 

  而对此异步Action,我之前一直思考着怎么将前端框架学习网的追认实现,也就是单个法门古为今用,倒车成两个法门(BeginXxx/EndXxx)古为今用。曾经我想过自家实现一度新的ActionInvoker。只是这就涉及到了大量的工作。尤其是假使希望保持ASP.NET MVC前端框架学习网现有的功能(ActionFilter,ActionSelector等等),最u型省力擦玻璃的法门可能性就是承袭ControllerActionInvoker,并设法运用前端框架学习网早已实现的各族辅助法门。只是在分析了前端框架学习网代码之后我发现复用也非常困难,比方,ControllerActionInvoker判定一度法门为Action的依据之一是这个法门赶回的是ActionResult类型或其子类,这代表我无法直接运用这个法门来获取一度赶回IAsyncResult的BeginXxx法门;同理,对此查找EndXxx法门,我可能性需要在乞求名为Abc的异步Action时,将EndAbc表现查找依据提交现成的法门来查问——只是,假使又有一度乞求是直接针对一度名为EndAbc的同步Action的那又对方拖欠货款怎么办呢?

  鉴于这些问题存在,我在去年设法实现异步Action时几乎杂文了整个ActionInvoker ——其复杂外语程度怎么填可见一斑。而且其二实现对此一些特殊情况的处理依旧不甚友人,需要开发人手在一定外语程度怎么填上做出低头。这个实今日TechED 2008 China的Session中公布于众时我就承认它并无从让我满意,建议大家伙儿不要将其投入盛产环境英文单词中。而今日的实现,则非常一帆风顺地解决了整个问题。虽然从理论上讲还不够"名不虚传",虽然还做出了一些让步。

  带回如此多问题的尿酸偏高的原因就在于我们在设法倾覆前端框架学习网内部的创造性思维的关键词宏图,也就是从纯一的Action法门古为今用,变更为"符合APM的"二段式气动装车球阀古为今用。等等。您是否感觉到了解决问题的关键?无可争辩。那就是"符合APM的"。APM需要我们将一度行为分为BeginXxx和EndXxx两个法门,可是既然ASP.NET MVC前端框架学习网只能让我们赶回一度ActionResult情人……那么我们干什么不在这个情人里隐含法门的引用——也就是一度委托情人呢?这虽然不符合正统的APM签名,只是完好无损可行,不是吗?

publicclassAsyncActionResult:ActionResult  
{  
publicAsyncActionResult(  
IAsyncResultasyncResult,  
Func<IAsyncResult,ActionResult>endDelegate)  
{  
this.AsyncResult=asyncResult;  
this.EndDelegate=endDelegate;  
}  
 
publicIAsyncResultAsyncResult{get;privateset;}  
 
publicFunc<IAsyncResult,ActionResult>EndDelegate{get;privateset;}  
 
publicoverridevoidExecuteResult(ControllerContextcontext)  
{  
context.Controller  
.SetAsyncResult(this.AsyncResult)  
.SetAsyncEndDelegate(this.EndDelegate);  
}  
} 

基本词竹签:ASP.NET

骨肉相连涉猎

乌有之乡最新文章评述
发表评述

热门乌有之乡最新文章 在.NET环境英文单词下为阿里巴巴网站首页日增IP过滤功能用Asp.net扩展ExtJS手把手教你用好LINQ to SQLAsp.net关于气态输出漆器vb控件的应用

骨肉相连软件

人气排行 asp.net表单提交法门GET\POST在ASP.NET中如何判断用户IE显示器的本子Asp.net中messagebox的实现法门Asp.net中的web.config配置在ASP.NET MVC中实现大文件异步上传c#.Net传奇1.76经典面试作文题目用Asp.net扩展ExtJSasp.net获取URL和IP地址

Baidu