ASP.NET MVC 概述
目标:学习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 概述的更多相关文章
- ASP.NET MVC概述及第一个MVC程序
一.ASP.NET 概述 1. .NET Framework 与 ASP.NET .NET Framework包含两个重要组件:.NET Framework ...
- ASP.NET MVC概述
原文:http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview 这篇文章帮助你了解关于ASP.NET ...
- 习题练习-第1章ASP.NET MVC概述
一.选择题 1.ASP.NET MVC自2007年首次公布预览以来,作为( )的替代品,普及度已明显提高,现在很多大型Web应用程序都是使用这一技术构建的. A.ASP B.ASP.NET ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...
- ASP.NET MVC 教程汇总
自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...
- ASP.NET MVC:01理解MVC模式
ASP.NET MVC是ASP.NET Web应用程序框架,以MVC模式为基础. MVC:Model View Controller 模型-视图-控制器Model(模型):负责对数据库的存取View( ...
- 全网最全ASP.NET MVC 教程汇总
全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)
自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...
- [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》
[ASP.NET MVC2 系列] [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序> ...
随机推荐
- Usaco*Monthly Expense
Description Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的.他已经计算了他以后N(1<=N<=100 ...
- SSH配置与讲解
一.Struts 首先介绍Struts,在web项目中加入Struts的jar包,并在Web.xml中添加Struts的配置: <filter> <filter-name ...
- AngularJS基础入门初探
一.AngularJS简介 1.1 什么是AngularJS (1)一款非常优秀的前端JS框架,可以方便实现MVC/MVVM模式 (2)由Misko Hevery 等人创建,2009年被Google所 ...
- Hadoop学习笔记—4.初识MapReduce
一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大数据量的计算,通常采用的处理手法就是并行计算.但对许多开发者来 ...
- MapReduce剖析笔记之二:Job提交的过程
上一节以WordCount分析了MapReduce的基本执行流程,但并没有从框架上进行分析,这一部分工作在后续慢慢补充.这一节,先剖析一下作业提交过程. 在分析之前,我们先进行一下粗略的思考,如果要我 ...
- How to Use Android ADB Command Line Tool
Android Debug Bridge (adb) is a tool that lets you manage the state of an emulator instance or Andro ...
- Lua table之弱引用
Lua采用了基于垃圾收集的内存管理机制,因此对于程序员来说,在很多时候内存问题都将不再困扰他们.然而任何垃圾收集器都不是万能的,在有些特殊情况下,垃圾收集器是无法准确的判断是否应该将当前对象清理.这样 ...
- ECS Win2008 远程时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"的解决方法
问题描述 ECS Windows 2008 远程登陆时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限",如下图所示: 问题分析 组策略中做了设置不允许管理员组成 ...
- Screeps ———— A MMO Strategy Sandbox Game for Programmers
At the beginning, let's see three of this game's captures. Yes, As what you see in these pictures, y ...
- 谈谈service层在mvc框架中的意义和职责
mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...