目标:学习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 MVC2 系列] ASP.NET MVC 之如何创建自定义路由约束

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

  2. ASP.NET MVC基础入门.

    一:ASP.NET MVC 简介 1:asp.net mvc 是一种构建web应用程序的框架,他将一般的MVC(Model--View--Controller)模式应用于asp.net框架. 2:as ...

  3. Asp.net MVC 教程汇总

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

  4. ASP.NET MVC 教程学习

    1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MVC替代WebForms,产生ASP.NET MVC 的需求是什么,只有更好的理解了为什么需要MVC, ...

  5. ASP.NET MVC Music Store教程(1):概述和新项目

    ASP.NET MVC Music Store教程(1):概述和新项目 转自 http://firechun.blog.163.com/blog/static/31804522201102709374 ...

  6. 《ASP.NET MVC 5 破境之道》:概述

    第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. ...

  7. [导入]ASP.NET MVC框架开发系列课程(1):MVC模式与ASP.NET MVC框架概述.zip(8.80 MB)

    讲座内容: ASP.NET MVC框架是既ASP.NET WebForms后的又一种开发方式.它提供了一系列优秀特性,使ASP.NET开发人员拥有了另一个选择.本次课程将对MVC模式ASP.NET M ...

  8. 光脚丫学ASP.NET MVC(0005):控制器概述

    光脚丫思考 QQ:524130780 邮箱:524130780@QQ.COM 博客:http://blog.csdn.net/GJYSK 视频演示:http://u.115.com/file/aqa2 ...

  9. 光脚丫学ASP.NET MVC(0006):操作方法概述

    光脚丫思考  QQ:524130780 邮箱: 524130780@QQ.COM 博客: http://blog.csdn.net/GJYSK 视频演示: http://u.115.com/file/ ...

最新文章

  1. django 获取外键对应数据的方式
  2. Linux命令:find命令详解
  3. Js获取下拉框当前选择项的文本和值
  4. 《AutoCAD 2014中文版超级学习手册》——1.3 设置绘图环境
  5. spring的部分注释
  6. winrar4.2 破解 注册码
  7. Excel操作-跳过隐藏行粘贴
  8. HDU 4565 So Easy!
  9. linux 进程带宽限制,Linux限制网络带宽的占用
  10. 自带的richedit控件显示图片文字(仿QQ聊天内容文字图片)
  11. github图书馆座位预约_我们在Github上分析了60,678个图书馆–这是前100名
  12. 集成学习【三】:Bagging结合神经网络及代码实现
  13. IE浏览器一打开就提示“已停止工作”的解决方案
  14. JointJS+新的MindMap应用程序
  15. java如何获取一月的工作日,Java如何获取工作日名称列表?
  16. 如何用 Java 对 PDF 文件进行电子签章
  17. 《时令绝杀技——向上汇报》
  18. JAVA逻辑推理题1-谁是凶手
  19. 云时代,程序员将面临的分化
  20. 揭秘:网赚圈很红的“小说项目”!月入十万的裂变套路

热门文章

  1. 企业建立规范化IT运维管理制度的重要性
  2. RealSync异构热容灾解决方案
  3. .net 应用迁移到Mono 工具 (Moma)
  4. ncre计算机二级教程版本,计算机二级 NCRE教程word.pdf
  5. mysql php 封装类_市面上几款常见的微信开发框架对比(PHP和JAVA)
  6. KenBurns特效组件KenBurnsView
  7. WEP保护帧移除工具airdecloak-ng
  8. Visual Studio 2017启动x86的Android模拟器失败
  9. matlab播放视频语句,matlab语句
  10. mysql sqlserver 函数_等价于MySQL中的SQLServer函数SCOPE_IDENTITY()??mysql-问答-阿里云开发者社区-阿里云...