|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前天傍晚我发表了《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对应的,数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。 |
|