仓酷云

标题: NET网页编程之详解ASP.NET MVC使用程序哀求性命周期 [打印本页]

作者: 柔情似水    时间: 2015-1-16 14:26
标题: NET网页编程之详解ASP.NET MVC使用程序哀求性命周期
前天傍晚我发表了《Java的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。<p>当一个ASP.NETMVC使用程序提出哀求,为了呼应哀求,包括一些哀求实行流程步骤!在ASP.NETMVC使用程序Httprequest
和Httpresponse过程当中,次要包括8个步骤:

1)RouteTable(路由表)的创立

2)UrlRoutingModule哀求拦阻

3)Routingengine断定route

4)routehandler创立相干的IHttpHandler实例

5)IHttpHandler实例断定Controller(把持器)

6)Controller实行

7)一个视图引擎创立

8)视图出现

次要流程图以下:




1)RouteTable的创立
RouteTable的创立产生在mvc使用程序的启动大概web使用程序池的重启!一般的asp.net程序,一个页面哀求对应磁盘上的一个页面!如(http://localhost/index.aspx

对应到服务器磁盘上的文件index.aspx)index.aspx实践上是一个类,由IHttpHandler创立实例化。IHttpHandler包括一个

ProcessRequest办法,卖力呼应页面输入!

可是mvcapplication是分歧的,每个哀求映照到route,route界说在routetable,在使用程序启动时创立!
RouteTable的在使用程序的详细利用以下
<olclass="dp-xml">publicclassMvcApplication:System.Web.HttpApplication{publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default",//Routename"{controller}/{action}/{id}",//URLwithparametersnew{controller="Home",action="Index",id=""}//Parameterdefaults);routes.MapRoute("Account",//Routename"{controller}/{action}/{id}",//URLwithparametersnew{controller="Account",action="LogOn",id=""}//Parameterdefaults);}protectedvoidApplication_Start(){RegisterRoutes(RouteTable.Routes);}}
2)UrlRoutingModule哀求拦阻
每个Http哀求都被UrlRoutingModule拦阻,UrlRoutingModule供应了以后的HttpContext的routingengine(路由引擎)。HttpContext实例包括以后哀求的一切数据。UrlRoutingModule把持着routingengine,供应了HttpContext数据到routingengine!UrlRoutingModule完成了IHttpModule接口,在web.config文件举行了注册!

UrlRoutingModule详细的数据布局以下:
<olclass="dp-xml">publicclassUrlRoutingModule:IHttpModule{//次要的MethodsprotectedvirtualvoidInit(HttpApplicationapplication);privatevoidOnApplicationPostMapRequestHandler(objectsender,EventArgse);privatevoidOnApplicationPostResolveRequestCache(objectsender,EventArgse);publicvirtualvoidPostMapRequestHandler(HttpContextBasecontext);publicvirtualvoidPostResolveRequestCache(HttpContextBasecontext);voidIHttpModule.Init(HttpApplicationapplication);//PropertiespublicRouteCollectionRouteCollection{get;set;}}UrlRoutingModule在WebConfig的注册<httpModules><addname="UrlRoutingModule"type="System.Web.Routing.UrlRoutingModule,System.Web.Routing,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35"/></httpModules>


3)Routingengine断定route
routingengine基于以后HttpContext断定Route的处置。routingengine指出routetable内里婚配的route,并在IRouteHandler实例创立route处置!

4)routehandler创立相干的IHttpHandler实例在routetable里,每个route都与一个IHttpHandler对应。IHttpHandler基于以后的HttpContext数据卖力创立一个Controller(把持器)!IHttpHandler是由以后举动的IRouteHandler的GetHttpHandler所创立!

详细的细节以下
<olclass="dp-xml">publicinterfaceIRouteHandler{//MethodsIHttpHandlerGetHttpHandler(RequestContextrequestContext);}


5)IHttpHandler实例断定Controller(把持器)
<p>在MVC使用程序中,MvcHandler完成了IHttpHandler,Controller实例,是基于所输出的HttpContext和Url参数与route对应的,数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。
作者: 兰色精灵    时间: 2015-1-18 14:40
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
作者: 精灵巫婆    时间: 2015-1-25 12:12
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者: 小魔女    时间: 2015-2-2 22:04
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
作者: 因胸联盟    时间: 2015-2-8 11:52
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
作者: 蒙在股里    时间: 2015-2-25 12:01
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
作者: 飘灵儿    时间: 2015-3-7 21:15
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
作者: 透明    时间: 2015-3-22 02:10
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2