断断续续使用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. 使用HttpURLConnection和AsyncTask从网络缓存图片

    1.创建NetCacheUtils中创建downloadBitmap(String url)方法 private Bitmap downloadBitmap(String url){ HttpURLC ...

  2. [设计模式] .NET设计模式笔记 - 有多少种设计模式

    .NET下的23中设计模式. ※创建型模式篇 ●单件模式(Single Pattern) ●抽象工厂模式(Abstract Factory) ●建造者模式(Builder Pattern) ●工厂方法 ...

  3. SQL查询中的in与join效率比较

    大多数情况下,程序员比较喜欢使用in来查询符合某些条件的数据,最近在查询某个角色有哪些用户的方法中,使用了in语句: ) FROM baseuser AND BaseUser.Id IN (SELEC ...

  4. linux 命令行发送邮件及附件

    环境 本机安装sendmail了, 但是没有启动. 其他机器上有mail server, 并且已经把本机加到open relay列表中了, 可以通过该mail server发送邮件.做法如下:1. 安 ...

  5. 把Flume的Source设置为 Spooling directory source

    把Flume的Source设置为 Spooling directory source,在设定的目录下放置需要读取的文件,一些文件在读取过程中会报错. 文件格式和报错如下: 实验一 读取汉子和“:&qu ...

  6. 给VPS装桌面

    转自:百度经验  致谢! 1.首先我们要先升级一下软件源给安装桌面环境做准备. 执行命令:apt-get update   2.安装桌面环境或窗口管理器: apt-get install xubunt ...

  7. [转]div 让文字或图片居中

    本文转自:http://qsfwy.iteye.com/blog/250206 在div 中让 文字或图片居中,请参考以下代码1: - - - - - - - - - - - - - - - - - ...

  8. An instance 0x172b8600 of class UITableView was deallocated while key value

    从带有tableview并且使用Mj下拉刷新的视图调用popViewControllerAnimated的时候,控制台打印这个: An instance 0x15d7aa00 of class UIT ...

  9. 【转】C#之继承

    本文意在巩固基础知识,并不是对其进行深入剖析,如若对各位高手没有什么作用,请绕过. 本文为原创文,所有示例均是博主测试过的,欢迎大家批评指正,如有转载请标明出处,谢谢. 继承.封装和多态是面向对象编程 ...

  10. [转]JAVA三大框架SSH和MVC

    Java—SSH(MVC) JAVA三大框架的各自作用  hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就 ...