断断续续使用ASP.NET MVC框架也有一年多了,也算积累了一些经验,唉,一直想写一些笔记好好总结一下,人太懒不想动笔,今天终于决定开始.希望自己能坚持下去.

  这篇文章大体介绍ASP.NET MVC的基本架构,帮助你快速理解该框架的工作原理。关于MVC模式的介绍已经是汗牛充栋了,这里就不再赘述了。ASP.NET MVC 是基于原有ASP.NET运行时,ASP.NET运行时采用通道过滤器模式,可以高度的扩展。如下图所示:

  

图中Module相当于IHttpModule,Handler类似于IHttpHandler, 整个asp.net web应用程序的容器是HttpAppliction, HttpApplication是个重量级的对象,为了保证性能,采用了对象池设计,具体的请查阅相关的资料。IHttpModule通过HttpApplication的事件注册到相应的处理阶段,下图是主要的事件流程如下图:

ASP.NET MVC就是通过其UrlRouteModule 注册HttpApplication的PostResolveRequestCache事件,拦截http请求进入MVC框架处理体系.

ASP.NET MVC的总体架构如下:

  

大致的处理过程描述如下:

1.当http请求到达Url路由模块时,路由模块检查url是否与定义的路由规则匹配,如果匹配,则获取定义路由时确定的路
由处理器( IRouteHandler),进一步获取MVCHttpHandler并reMap为当前请求的IHttpHandler,由此开始真正进入MVC框架处

理体系。如果不匹配,则没MVC什么事,走原来的ASP.NET框架处理流程
2.MVCHandler利用第一步获取的路由数据,传给ControllerBuilder以激活相应的Controller,并执行Controller
3.Controller实列化ActionInvoker,使用ActionInvoker执行相应的Action
4.Action内就是自定义业务逻辑处理,执行完逻辑处理后返回ViewModel, 实例化ActionResult并传递ViewModel
5.执行AcionResult返回html/json/xml等等

更精确的组件交互图如下:

后续章节将详细分析各组件应用及其实现.。

  总结一下,个人觉得ASP.NET MVC是一个优秀的Web框架,相比与WebForm的模拟事件编程,MVC还原了Web编程的本来面貌,一个Web请求对应相关Controller的Action,类似一个方法调用。ASP.NET MVC的View基于html模板引擎,手写html更加友好。

ASP.NET MVC4学习笔记之总体概述的更多相关文章

  1. asp.net mvc4 学习笔记一(基本原理)

    做了8年的asp.net webform,用过MVVM但还没用过MVC , 虽然项目不用MVC,但是还是想了解一下,今天第二天学习,以下是学习心得. VS2012默认带有asp.net mvc3和as ...

  2. ASP.NET MVC4学习笔记路由系统概念与应用篇

    一.概念 1.路由是计算机网络中的一个技术概念,表示把数据包从一个网段转发至另一网段.ASP.NET中的路由系统作用类似,其作用是把请求Url映射到相应的"资源"上,资源可以是一段 ...

  3. ASP.NET MVC4学习笔记路由系统实现

    一.路由实现 路由系统实际是一个实现了ASP.NET IHttpModule接口的模块,通过注册HttpApplication的PostResolveRequestCache 事件对Url路由处理.总 ...

  4. ASP.NET MVC4学习笔记之Controller的激活

    一. 高层相关类说明 当路由系统根据请求Url收集路由信息后,下一步就要将路由信息传给Controller激活系统,Controller激活系统负责实现了IController接口的Controlle ...

  5. ASP.NET MVC4学习笔记

    一.MVC简介

  6. ASP.NET MVC4学习笔记之Controller激活的扩展

    一. 为什么要进行扩展 在前面的分析中,我们知道默认的Controller激活系统只能实例化无参构造函数的Controller类型,但在某些情况一下,我们希望某些服务的实例能够自动注入到Control ...

  7. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  8. [ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载、ID型别差异

    [ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载.ID型别差异 原始码下载 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授 ...

  9. ASP.NET MVC学习笔记-----Filter2

    ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...

随机推荐

  1. IOS Xcode 无法识别IOS device 突然发生的

    今天 我用真机mini好好地 ,再想测试一下iphone 4  发生了意外 两个测试机都找不到设备了 但是 都在充电 还能连接 itune !!!! 我郁闷了 解决办法 是 Mac iTunes 重新 ...

  2. [ASP.Net]TableLayoutPanel的使用

    以前都是使用Panel.没有用过其他容器类.郁闷,要控制界面的自适应真是麻烦.平常用一用dock.anchor差不多了,但是,更复杂的情景下,就没法了.例如一行有多个控件,有的要求跟据窗口缩放,只缩放 ...

  3. [转]poll技术

    poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明: #include <poll.h> int poll(struct ...

  4. mac下为Apache 创建 .htaccess文件

    标签:mac   .htaccess 在设置固定链接时会提示如下的问题:   若您的 .htaccess 文件可写,我们可以自动修改它.但似乎它不可写,因此我们在下方列出了您 .htaccess 文件 ...

  5. nginx lua mysql redis设置

    最近公司网站改版,程序和数据库全部用新版,旧版的数据要导入,旧网站的30万条数据url要全部重定向到新版网站,正好前段时间在学习nginx+lua+mysql+memcache(redis),找资料真 ...

  6. 转: android app进程保活的文章列表

    1. Android 后台任务型App多进程架构演化 http://www.jianshu.com/p/4ac1f373e8cd 2. 关于 Android 进程保活,你所需要知道的一切 http:/ ...

  7. 微信内置浏览器中,点击下拉框出现页面乱跳转现象(iphone)

    微信内置浏览器中,点击下拉框出现页面乱跳转现象(iphone) 前言: 这是小菜博客的第三篇文章.一直认为自己可以表达的东西太过简单,难以上台面,总是吝啬地不肯写.就算是写,也不知道从何开始.在同事的 ...

  8. JavaScript获取两个时间的时间差

    <html><head><title>JavaScript计算两个时间差</title><meta http-equiv="conten ...

  9. PHP利用GD库画曲线

    效果: PHP代码 <?php Header('Content-type: image/png;Charset:utf-8'); //声明图片 $im = imagecreate(400,200 ...

  10. web.config里面使用configSource

    在asp.net中如果修改了配置文件web.config以后,会导致应用程序重启,所有回话(session)丢失掉,在 .NET Framework 2.0 以后的版本中,可以在一个单独文件中包括所有 ...