ASP.NET MVC 教程 - ASP.NET MVC 概述

了解ASP.NET MVC应用和ASP.Net Web Forms应用的不同;了解什么时候应该创建ASP.NET MVC应用。

ASP.NET MVC概述(C#)

模型-视图-控制器(MVC)这种架构模式将一个程序分割成了三个主要的组件:模型、视图和控制器。ASP.NET MVC框架提供了一种除ASP.NET Web Forms模式之外的另一种选择来创建基于MVC模式的Web应用。ASP.NET MVC框架是一个轻量级的、高度可测试的表现框架。与基于Web Forms的应用一样,它和已存在的ASP.NET特性高度集成,如母版页和基于membership的验证。MVC框架定义在System.Web.MVC命名空间。它是一个基本的、同时也是System.Web命名空间的支持部分。

MVC是许多开发人员都熟悉的标准设计模式。一些Web应用的开发人员将会从MVC框架受益,而其他的开发人员将继续使用传统的基于Web Forms和postbacks的ASP.NET开发模式。另外一些的Web应用开发人员会将二者结合在一起。这两种模式并不会相互排斥。

MVC框架包含了下面的组件:


图01:调用一个需要一个参数的控制器行为

  • 模型。模型对象是那些实现应用程序数据域逻辑的应用程序部分。模型对象经常用以检索并存储数据库里模型的状态。例如,一个Product对象可能从一个数据库检索数据,对它进行操作,然后可能将更改后的信息写回到SQL数据库里的Products表里。

在小型应用里,模型通常是概念上的分离而不是实际的分离。举例来说,假如一个应用程序只是读取数据集然后将它传到视图里,而这个应用程序并没有实际的模型层和对应的类。那么在这种情况下,这个数据集就扮演了模型对象的角色。

  • 视图。视图是用来表示应用程序的用户接口(UI)的组件。通常来说,这个UI从模型数据创建而来。就拿Products表的编辑视图的例子来说,这个显示了文本框、下拉框和单选框的视图就是基于当前的Products对象的状态建立的。
  • 控制器。控制器是和模型一起工作,用以处理用户交互,并最终选择一个要表现UI的视图来渲染的组件。在一个MVC应用程序中,视图只显示信息;控制器处理用户的输入和交互并负责反馈。例如,控制器处理查询字符串,然后将它们的值传到模型层,模型层会依次使用这些字符串查询数据库。

MVC模式帮助你建立那些分离了输入逻辑、业务逻辑和UI逻辑的应用程序。同时这几个方面松散耦合的。这种模式指定了每一种逻辑应该被放置在应用程序的哪个位置。UI逻辑属于视图;输入逻辑属于控制器;业务逻辑属于模型。这种分法能够在你创建一个应用的时候帮助你管理应用的复杂性。因为它让你能够在一段时间内只专注于实现一个方面。例如,你可以专注于视图而不必依赖业务逻辑。

除了管理复杂性,MVC模式也比基于Web Forms的ASP.NET Web应用更易于测试。例如,在一个基于Web Forms的ASP.NET Web应用中,一个类既被用于显示输出也用于反馈用户的输入。要写个自动测试给基于Web Forms模式的ASP.NET应用会很复杂,因为要测试一个单独的页面的话,你必须实例化这个页面类、它里面所有的子控件、还有这个应用额外依赖的类。由于如此多的类会被实例化来运行这个页面,要在应用程序的单独部分写有针对性的专门测试是很困难的。因此基于Web Forms的ASP.NET应用的测试要比一个MVC应用的测试更困难。还有,基于Web Forms的ASP.NET应用的测试需要一个Web服务器。MVC框架解耦了这些组件并且频繁使用了接口。这就让在隔离了框架的其它部分的情况下测试单独的组件变得可能。

MVC应用程序中三个主要元素的松散耦合也促进了并行开发。举例来说,一个开发人员可以致力于视图的开发工作,第二个开发者可以致力于控制器逻辑,然后第三个开发人员则可以集中注意力在模型层的业务逻辑上。

决定什么时候创建一个MVC应用

你必须仔细地考虑是用ASP.NET MVC框架还是ASP.NET Web Forms模型来实现一个Web应用。MVC框架没有取代Web Forms模型——你可以用任意一个框架来实现Web应用(如果你已经有存在了基于Web Forms的应用,那就继续用它们一直以来的工作方式吧)。

在你决定使用MVC框架或者Web Forms模型来开发一些特定的网站的时候,掂量一下两者的优势。

基于MVC的Web应用的优势

ASP.NET MVC框架有以下的优势:

  • 划分一个应用成为模型、视图和控制器更容易管理项目的复杂程度。
  • 它没有使用view state或基于服务器的表单。这让MVC框架成为了那些想全面控制程序行为的开发人员的理想选择。
  • 它使用前端控制器了模式以通过单个的控制器来处理Web应用的请求。这让你能够设计一个支持多种路由结构的应用程序。关于 前端控制器 更多的信息请到MSDN网站查阅。
  • 更好的支持测试驱动开发(TDD)。
  • 对于由开发人员和设计人员组成的大型团队支持的、需要高度控制应用程序行为的Web应用,它是个不错的选择。

基于Web Forms的Web应用的优势

Web Forms框架提供了以下优势:

  • 它支持通过HTTP预设置状态的事件模型。这有利于基于业务范围的Web应用的开发。基于Web Forms的应用开发模式提供了大把的由成百上千的服务器控件支持的事件
  • 它使用了页面控制这种可以添加功能到单独页面的模式。更多关于 页面控制器 的信息请访问MSDN网站
  • 它使用视图状态或者基于服务器的表单,这样可以让管理状态信息更容易。
  • 对于那些想利用大量组件来进行快速开发的,由网页开发人员和设计师组成小型团队来说,Web Forms表现的不错。
  • 总的来说,应用的开发会没那么复杂。因为组件(页面类,控件等等)都紧密的集成在一起,然后通常都不需要和MVC模型那样写那么多的代码。

ASP.NET MVC框架的特性

ASP.NET MVC框架提供了以下特性:

  • 应用程序任务的分离(输入逻辑、业务逻辑和UI逻辑),可测试性,默认是测试驱动开发。MVC框架所有核心的契约都是基于接口的并且能够通过使用mock对象来测试。Mock是模仿应用程序中的实际对象的行为的对象。你可以对应用程序执行单元测试而不必让控制器在ASP.NET进程中跑。这让单元测试更快更灵活。你可以使用任何能够和.NET框架相容的单元测试框架。
  • 可扩展和可插拔的框架。ASP.NET MVC框架的组件被设计成能够轻松地被替代或自定义。你可以使用你自己的视图引擎插件、URL路由策略、action-method参数序列化和其他组件。ASP.NET MVC框架同样支持依赖注入(DI)和反转控制(IOC)容器模型。DI允许你注入对象到一个类,而不是依赖这个类来建立对象本身。ICO指定了如果一个对象请求其它对象,那么地一个对象应该从诸如配置文件的一个外界的源来获取第二个对象。这让测试更容易。
  • 强大的URL映射组件允许你创建易于了解和可搜索的URL路径。URL路径不必包含文件名后缀,并且被设计成支持URL命名模式以有效支持SEO和代表性状态传输(RESET)寻址。
  • 对已存在的ASP.NET页面(.aspx文件)的标记、用户控件(.ascx文件)和母版(.master文件)标记作为视图模板的支持。你可以和ASP.NET MVC框架一起使用已存在的ASP.NET特性,例如嵌套母版页、内联表达式(<%=%>)、声明式服务器控件、模板、数据绑定、本地化等等。
  • 对已有的ASP.NET特性的支持。ASP.NET MVC让你使用诸如表单验证和Windows验证、URL验证、成员和角色、输出和数据缓存、session和用户配置文件状态管理(profile state management,)、健康监测、配置系统和provider架构。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值