13 Asp.Net MVC
1.Asp.Net MVC和Asp.Net WebForm关系
ASP.NET Web Forms 为了让开发者采用相同的编程模式进行 GUI 桌面应用和 Web 应用的开发,微软通过 ViewState 和 Postback 对 HTTP 请求和回复机制进行了封装,使我们能够像编写 Windows Forms 应用一样采用事件驱动的方式进行 ASP.NET Web Forms 应用的编程。它借鉴了 Windows Forms 基于控件和事件注册的编程模式,使 Web 应用的开发变得简单而快捷,但是它却使开发人员与 Web 的本质渐行渐远。
ASP.NET MVC 是一个建立在 ASP.NET 平台上基于 MVC 模式的 Web 开发框架,它提供了一种与传统 Web Forms 完全不同的 Web 应用开发方式。
ASP.NET MVC 是一种回归,它使开发人员可以真正地面向 Web 进行编程,我们面对的不再是拖拉到 Web 页面的控件,而是整个 HTTP 请求和响应的流程。
2. Asp.Net MVC介绍
ASP.NET MVC 是微软开发的以MVC模式为基础的ASP.NET Web应用程序框架。
MVC 是一种设计模式,它将一个人机交互应用涉及的功能分为 Model、Controller 和 View 三部分,它们各自具有相应的职责, 体现了关注点分离这一原则:
1.Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象
负责在数据库中存取数据。
2.View(视图)是应用程序中处理数据显示的部分。通常视图是依模型数据创建的。
3.Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图
读取数据,控制用户输入,并向模型发送数据。
Asp.Net MVC优点:
1.通过把项目分成Model、View和Controller,使得复杂项目更加容易维护,减少
项目之间的耦合。
2.没有使用ViewState和服务器表单控件,可以更方便的控制应用程序的行为,不再
是拖拉到 Web 页面的控件,而是真正回归HTTP 请求和响应的流程。
3.应用程序通过Controller来控制程序请求,并提供了原生的路由功能来重写Url。
4.使Web程序对单元测试的支持更加出色。
5.在团队开发模式下表现更出众。
3.工作过程比较
4. Asp.Net MVC是如何建立起来的?
ASP.NET 由于采用了管道式设计,具有很好的扩展性,而整个 ASP.NET MVC 应用框架 就是通过扩展 ASP.NET 实现的。ASP.NET 的扩展点主要体现在 HttpModule 和 HttpHandler 这两个核心组件之上。
实际上整个 ASP.NET MVC 框架就是通过自定义的ASP.NET 组件HttpModule 和 HttpHandler 建立起来的。
HttpModule 和 HttpHandler 是 ASP.NET 管道的两个重要的纽件。请求的最终处理通过 Handler 来完成,ASP.NET MVC 就是通过一个名为 MvcHandler 的自定义 HttpHandler 实现了对 Controller 的激活和 Action 的执行。
5. IIS对ASP.NET对请求处理的过程
下面左右两张图分别是是IIS5和IIS6(或IIS7的经典模式)对Asp.Net的Http请求处理示意图,可以看到,IIS6增加了应用程序池和HTTP.SYS模块,但是最终针对*.aspx页面的请求都会进入HttpRuntime运行时当中。