学习ASP.NET MVC3(1) 概述

什么是ASP.NET MVC

它是微软官方提供的MVC模式编写ASP.NET WEB应用程序的一个框架,是ASP.NET WEBFROM后的又一种开发方式,而并非替代方式!

MVC并不是微软首创的,实际上在很早以前,上世纪80年代的时候就有人提出了这个模式,它是一个软件工程的理念

微软以前的开发一直是事件驱动这样的(wpf是例外,它是基于数据驱动,我总感觉MVC和WPF的MVVM有种异曲同工之妙),在最近这些年MVC被大量的采用(我想学过JAVA的没有人不知道MVC吧),微软不甘落后,而后开发出了基于ASP.NET的MVC

微软MVC官方网站:http://www.asp.net/mvc

源码网站:http://aspnet.codeplex.com/wikipage?title=MVC

上面两网站都是英文的  如果没有一定的阅读能力就不要看了 ,像我这种英文很烂的人根本就没看过······

 

ASP.NET MVC的特点

1.分离任务,也可以说是关注点分离,视图、控制器、模型这三者之间关注点几乎是完全分开的,所以他们之间耦合非常低,维护起来很方便。(如果以前使用过AOP对理解这会很有帮助)

2.可扩展,由于关注点分离了耦合小了,它的扩展能力相对而言也会提升

3.强大的URL重写(路由)机制

4.兼容ASP.NET现有的技术(大家可以看嘛,既然叫ASP.NET MVC,那他必然和ASP.NET有关系。MVC运行机制仍然是在ASP.NET基础框架之上)

5.开源

 

ASP.NET MVC的优点

其实优点就i是上面那些特点所带出来的

1.通过把项目分为model、view和controller,使得复杂项目更加容易维护(接触过或是亲手写了几个例子才能深刻体会到,后面的文章会慢慢讲到)。在以前的WebForm里,其实是很难真正做到业务逻辑与视图分离的,由于这里面是存在一个PostBack机制模拟我们的事件,造成了视图与后置代码的耦合加深

2.没有应用ViewState和服务器表单控件,可以更方便的控制应用程序的行为(没有postback等"虚幻"的东西,web是什么样就是什么样,回归到原始)

3.应用程序通过controller来控制程序请求,可以提供丰富的URL重写

4.支持测试驱动开发

5.在团队开发下表现更加出众(职责分离)

 

为什么需要ASP.NET MVC

1.关注点分离

2.高可扩展性

3.更好的可测试性

4.更好的URL重写

5.更好的性能(生命周期更短,没有了ViewState这种隐藏的数据在客户端与服务器来回传输,回归到了最原始的web状态,传输的数据量更小等等等等)

6.更灵活的HTML代码控制(比如WebForm会把标签的id或name改变,MVC就不会)

....

 

 

版本历史

ASP.NET MVC 1

经过漫长的Preview和2个RC的版本后,2009年3月,微软正式发布了ASP.NET MVC1

这是微软官方在MVC领域的第一个Web Application框架,带来与WebForm几乎完全不同的开发理念

但由于某些原因该版本缺失了Area等关键技术点,以至于用该版本开发复杂的web应用时会有诸多困难

ASP.NET MVC 2

在1.0发布后不到1年的时间,ASP.NET MVC2正式发布

2010年4月12发布的VS2010和Visual Web Developer 2010正式版中内置了对ASP.NET MVC 2的扩展

ASP.NET MVC 2给我们带了众多期望已久的功能,如:强类型的HTML Helper、数据验证、自定义模版、Area、异步Controller...

.Net4的新技术,也给ASP.NET MVC 2应用开发带来了一些不错的新体验,如:dynamic类型、带有默认值的方法参数...

Why ASP.NET MVC 3?

用过MVC 2的人都知道,ASPX视图中充斥着<%...%><%...%><%...%>! (这个真的很崩溃,代码稍微长点,人就容易看晕)

Action过滤器无法全局!

对404、301、302等的http响应状态,缺乏对应的ActionResult类型!

缺乏模型(model)数据验证的直接支持!

对依赖注入(DI)、控制反转(IOC)支持不够好!

不支持Grid?

ViewData用起来有些麻烦?(全靠我们伟大的神奇的字符串,View["字符串"]=object)

....

ASP.NET MVC 3

增加Razor视图引擎,支持多视图引擎  (使用@代替了<%%> ,语法简单清晰,容易学习,VS2010提供了智能提示和语法变色)

全局的Action过滤器

新的ViewBag属性 (实际上就是dynamic类型)

新的ActionResult类型

Model Validation

Json绑定支持

Dependecy Injection

HTML5、CSS3

部分页的输出缓存

HtmlHelper的增强

NuGet

ASP.NET MVC 4

没什么好讲的  暂时不会去接触它

Grass Mud Horse
原文地址:https://www.cnblogs.com/Scissors/p/2943396.html