代码改变世界

Asp.Net MVC 入门篇——Overview

2008-05-24 00:35  Jun1st  阅读(3779)  评论(9编辑  收藏  举报

Introduction

MVC应该算是一个古老的Design Pattern了,无论是在win form程序还是web程序中,它的应用都是比较广泛的。MVC也是我在学校中学习到的第一个设计模式。终于,可以在Asp.Net中应用了。本文的例子所用的是ASP.NET MVC Preview 2,可以在这里下载

Create a new MVC project

菜单File->New Project ->Asp.Net Web MVC Application

2.jpg
























新创建的项目是一个完整的可以运行的Sample程序。
新创建的MVC Project和传统的Asp.net web application不同,MVC Project包含有如下四个文件夹:

  1. Content Folder : 这个文件夹中放一些支持文件,如CSS等。
  2. Controller Folder :这个文件夹中放所以的Controller文件
  3. Models folder : 这个文件夹存放所有的data model文件,包括:LINQ to SQL DBML文件,Entity文件
  4. Views folder : 存放所有的页面文件,包括master文件。Master等需要被共享访问的需要被放在一个Shared子文件夹中。

Advantages of an MVC-Based Web Application

  1. 把程序分为Model, View和Controller之后,更容易控制程序的复杂性
  2. 没有了传统的Asp.Net中的viewstate和server端的form,使得开发人员可以实现对页面的完全控制。当然也失去了viewstate和server端form带来的各种好处
  3. 支持测试驱动开发

Features of the ASP.NET MVC Framework

  1. 应用程序的业务分离,支持测试驱动开发
  2. 可扩展和支持插件的Framework。开发人员都可以根据自己的需要修改甚至替换Asp.Net MVC Framework的各个component,也可以以插件的形式开发自己的View Engine,URL Routing Policy等各种component。Asp.Net MVC Framework甚至支持依赖注入(Dependency Injection)和控制反转(Inversion of Control)等容器模式。
  3. 强大的URL-Mapping功能。使得URL地址更有意义(REST)。URL中不再包括文件扩展名。
  4. 对很多传统Asp.Net特性的支持。如<%=%>, user control等。

     

The MVC Framework and Postbacks

Asp.Net MVC 不再使用传统的Asp.Net Web Application的postback模式。取而代之的是,所有的客户端发回服务器端的request都会被映射到某一个controller类中,这使UI logic和business logic得以分离,从而有助于提高程序的可测试性。

Understanding the MVC Project Execution Process

Request被发回服务器端之后,首先都由UrlRoutingModule对象来解析这个Request,并根据URL找到一个匹配的Router对象,之后由这个Router对象来处理这个Request。 MVC Application的处理流程:

  1. Initial Request: routers在Global.ascx中被添加到RouteTable中。
  2. Routing: UrlRoutingModule找到匹配的Router对象,决定使用哪个controller,调用哪个action。
  3. Map to controller: MvcRouteHandler会尝试通过routedata来创建controller的type name.
  4. Create Controller
  5. Execute Controller