目标:学习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. 网站中使用中文个性字库字体--@font-face解决方案探索 l(转)

    最近的项目有用到特别中文字体,最终效果如下图: 红线标记处均为字体,可选中,交互起来,比图片方便太多了. 解决思路就是将体积巨大的中文字库,取子集,只包涵要使用的那部分文字,因此体积就很小了(包含10 ...

  2. 工作总结_JS_1

    获取点击下的相对应的div: $('> div', this).show(); 本身同级下的相对应的div:   $('>div[name=vv]', $(this).siblings(& ...

  3. PHP基础知识之常量

    定义: define("FOO",     "something");

  4. sass学习总结

    SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护.个人简单总结了下比较常用的的一些东西. $ 开头定义变量名 是个全局变量   在{ $ ...

  5. Android动画

    [浅谈Android动画] 总共四种:Tween Animation变换动画.Frame Animation帧动画 Layout Animation布局动画.Property Animation 属性 ...

  6. 学习笔记:java线程安全

    首先得明白什么是线程安全: 线程安全是编程中的术语,指某个函数 (计算机科学).函数库在多线程环境中被调用时,能够正确地处理各个线程的局部变量,使程序功能正确完成. 这是维基百科里的资料,看完后还不是 ...

  7. .NET中异常处理的最佳实践(译)

    本文翻译自CodeProject上的一篇文章,原文地址. 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头.鼠标以及键盘 “写操作”同样可能失效 安全编程 不要抛出“new ...

  8. Microsoft Azure Web Sites应用与实践【1】—— 打造你的第一个Microsoft Azure Website

    Microsoft Azure Web Sites应用与实践 系列: [1]—— 打造你的第一个Microsoft Azure Website [2]—— 通过本地IIS 远程管理Microsoft ...

  9. MySQL 启动原理剖析

    200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要从查看MySQL的启动命令的代码来详细了解MySQL的启动过程,内容 ...

  10. 《Spark快速大数据分析》—— 第五章 数据读取和保存

    由于Spark是在Hadoop家族之上发展出来的,因此底层为了兼容hadoop,支持了多种的数据格式.如S3.HDFS.Cassandra.HBase,有了这些数据的组织形式,数据的来源和存储都可以多 ...