目标:学习ASP.NET MVC 和ASP.NET WebForm的不同之处。学习在合适的地方使用ASP.NET MVC。

  MVC(Model-View-Controller)结构模式把一个对象分离成3大块:Model(数据模型层),View(视图层),Controller(控制层),ASP.NET MVC 框架提供了一种有别于ASP.NET WebForm的模式,提供了基于mvc的网页对象。ASP.NET MVC是一种轻量级的,高度可测试的展示型框架(和WebForm对比),并且融合了已有的ASP.NET的特征,例如母版页以及基于会员的验证。MVC 框架是定义在System.Web.Mvc这个命名空间下并且这是一个基本的命名空间。并且支持System.Web命名空间部分。

  MVC是一种标准的设计模式广为许多开发人员所熟悉。一些类型的网络应用程序将会受益于ASP.NET MVC,另外一些其他的将会继续使用传统的WebForm模式并使用postbacks,还有一些应用程序将会把MVC 和WebForm结合起来让他们感觉是近似的,当然,也不排除其他的方法。

  MVC 框架包括以下组件:

   步骤 01:调用Controller的action并且自带参数值。

  • 模型层(Models):模型对象是程序的一部分实现了应用程序数据域的逻辑。通常的说,模型对象检索和存储模型陈述在数据库中。举个例子:一个产品对象也许会从数据库中检索信息,对它进行操作,写入更新信息然后回传给产品表在SQL SERVER数据库中。

  在小程序中,模型经常在理论上分离,当然不是物理上的分离。举个例子:如果程序仅仅只是读了一个数据集然后把这个数据集返回给View,这个程序并没有一个和类联系起来的物理模型层。在那种情况下,数据集其实是扮演了一个模型对象的角色。

  • 视图层(Views):视图是一个把程序显示在屏幕(UI)上的“容器”。通常来说,界面其实是从模型对象创建。一个例子,一个可编辑的产品表的视图,里面放了一些TEXTBOX,下拉框(DropDownList),一些CheckBox,当然这些都是 基于产品对象的。
  • 控制层(Controllers):控制层处理用户交互,和模型层一起工作,无限制的选择一个视图去渲染显示出来的UI的一些组件。在MVC应用程序中,视图层只是负责显示信息,控制层处理以及回复给用户输入信息以达到交互的效果。举个例子:控制层处理查询字符串(query-string)的值,然后把这些值传给MODEL,反过来用这些值可以查询数据库。

  MVC模式帮助你创建应用程序以达到分离应用程序的不同方面(输入逻辑,业务逻辑,UI逻辑),以达到对象之间的低耦合。MVC模式指定每种类型的逻辑必须建立在应用程序之上。UI逻辑其实属于VIEW中的。输入逻辑属于Controller,业务逻辑属于Model。分层模式能够帮你很好的管理当你建立好了应用程序以后,因为它能让你有时专注于某一方面的实现。举个例子,当你专注于VIEW的时候可以不用去担心Model的事情 == 。

  除了管理起来方便以外,MVC模式在测试应用程序方面也比WebForm模式更加的简单。举个例子,WebForm程序中,一个单独的类经常使用2个文件去显示输出以及回发用户的输入。写一个自动化的测试对于基于WebForm的应用程序来说也许会很复杂,因为去测试一个独立页面,你必须实例化这个Page对应的类,所有的子控件,将会使我们在关注应用程序的某个部分而不去关注其他地方变得很困难,因此MVC模式的优势就显现出来了。更深一点的说,WebForm程序需要一个Web Server,而MVC框架会让组件之间降低耦合性以及大量使用接口, 使得单独的组件孤立于其他的框架成为可能。

  低耦合在MVC应用程序的M-V-C的组件之间同样可以保证并行开发。比如,有3个开发人员,一个开发人员专注于控制层,另一个开发员专注于视图层,最后一个开发员专注于模型层的建设成为可能。

  决定何时使用MVC模式比较合适

  你必须非常小心的考虑什么时候去使用MVC框架或者WebForm.MVC并不能完全取代WebForm,你可以选择其一作为你应用程序开发的基石。

  在你决定使用MVC框架或者WebForm去实现你的网站之前,权衡好各自的优势。

  MVC框架的优势

  MVC框架有以下几点优势:

  • 使得完全掌控分离一个对象成为M-V-C3层模式变得更加容易。
  • 不使用View state以及服务器控件。这使得MVC框架变得更加理想对于开发者而言(可以完全控制应用程序的行为)
  • 使用了前端控制前模式通过网页应用程序的请求(单独一个控制器)。这样可以让你可以设计应用程序支持多路由结构,如果你想看更多关于Front Controller ,可以查看其MSDN文档。
  • 对于TDD有更好的支持。
  • 对于大项目来说(大量的人员在一个团队里面),需要高效的控制应用程序的行为。

 WebForm的优势

  WebForm的优势有以下几点:

  • 支持事件模型保存状态在HTTP上,适合线性业务的网站开发,WebForm程序提供了很多事件以支持大量的服务器控件。
  • 使用页面控制器模式对于独立的页面逐个添加,更多请看这里->Pgae Conroller
  • 使用了ViewState或者服务器窗体,这让控制状态信息变得更加容易。
  • 小的团队里面,或者是拥有大量服务器控件的想迅速开发的团队。
  • 总体来说,相对而言开发程序还是不那么复杂的,因为组件(Page类,控件等等)都紧密的结合在了一起,相对于MVC模式不会有那么多的代码。

  ASP.NET MVC模式的特点

  ASP.NET MVC框架有以下特点:

  • 实现了应用程序任务的分离(输入逻辑,业务逻辑,界面逻辑),可测试性的以及默认TDD。所有的核心类在MVC框架中都是基于接口的,能被模拟对象测试的。在程序中可以用模拟对象模拟实际程序的行为。你可以进行单元测试在不使用Controller的情况下在ASP.NET应用程序中,可以让单元测试变得快而舒适。你可以使用任意的单元测试去测试不同版本的.Net Framework。
  • 一种可扩展和插件型的框架。ASP.NET MVC组件被设计成容易被替换或者定制的。你可以插入在自己的视图引擎里面,URL 路由规则,action方法参数序列化,以及其他组件。MVC框架也支持使用依赖注入以及控制反转容器模型。依赖注入可以让你注入对象到类里面,除了依赖类去创建对象本身。控制反转指定如果一个对象需要其他对象,第一个对象从外部资源应该得到第二个对象,比如一个设置文件(比如web.config),这将变得更加容易。
  • 一个强有力的URL-mapping组件,让你建立可理解和可查询的URLS的程序。URLS不会包含文件名后缀,设计URL命名模式对于搜素引擎SEO来说是非常好的,以及表示状态传输寻址。
  • 支持使用标记在已有的ASP.NET PAGE中(aspx文件),用户控件(ascx文件),母版页(.master 文件),你可以很方便的使用已有的ASP.NET特征在MVC框架里,比如嵌入式的母版页,单行表达式(<%= =>),陈述服务器控件,模板,数据绑定,本地化等等。
  • 支持已有的ASP.NET的特征,MVC将会让你使用这些特征比如form效验以及windows效验,URL授权,成员以及角色,输出以及数据缓存,session和简要状态管理,健康监控,设置系统,提供构架。

ASP.NET MVC 概述的更多相关文章

  1. ASP.NET MVC概述及第一个MVC程序

    一.ASP.NET 概述        1. .NET Framework 与 ASP.NET                .NET Framework包含两个重要组件:.NET Framework ...

  2. ASP.NET MVC概述

    原文:http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview 这篇文章帮助你了解关于ASP.NET ...

  3. 习题练习-第1章ASP.NET MVC概述

    一.选择题 1.ASP.NET MVC自2007年首次公布预览以来,作为(    )的替代品,普及度已明显提高,现在很多大型Web应用程序都是使用这一技术构建的. A.ASP    B.ASP.NET ...

  4. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总

    MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...

  5. ASP.NET MVC 教程汇总

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  6. ASP.NET MVC:01理解MVC模式

    ASP.NET MVC是ASP.NET Web应用程序框架,以MVC模式为基础. MVC:Model View Controller 模型-视图-控制器Model(模型):负责对数据库的存取View( ...

  7. 全网最全ASP.NET MVC 教程汇总

    全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...

  8. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  9. [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

    [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>       ...

随机推荐

  1. java并发编程(十五)内存可见两种方式 加锁和volatile

    1.volatile变量是一种稍弱的同步机制在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比synchronized关键字更轻量级的同步机制. ...

  2. 理解MVC,MVP和MVVM设计模式

    有3个非常受欢迎的MV-*系列设计模式:MVC,MVP,MVVM.他们被广泛应用于不多种结束.这篇文章我回阐述我自己对这3个设计模式的看法. MVC模式: MVC即Model-VIew-Control ...

  3. 用jdbc访问大段文本数据

    package it.cast.jdbc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...

  4. 在一个SQL Server表中的多个列找出最大值

    在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...

  5. Android应用安全开发之浅谈网页打开APP

    一.网页打开APP简介 Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布 ...

  6. 浅谈WEB跨域的实现(前端向)

    同源策略/SOP(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CSFR等攻击(可以参考我的这篇文章). SOP要求 ...

  7. 剑指Offer面试题:5.重建二叉树

    一.题目:重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序 ...

  8. ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

    开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计.本篇,我们来看看WebForm模式下的页面生命周期. ( ...

  9. Net作业调度(二) -CrystalQuartz远程管理

    Source Code-1.6M 介绍 上篇已经了解Quartz.NET的基本使用方法了.但如果想方便的知道某个作业执行情况,需要暂停,启动等操作行为,这时候就需要个Job管理的界面. 本文介绍Qua ...

  10. Google分布式构建软件之三:分布式执行构建步骤

    注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 之前两篇文章分别介绍了Google 分布式软件构建系统Blaze相关的为了提 ...