• 学习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
  • 相关阅读:
    后端框架:SpringBoot+Mybatis+Dubbox(zookeeper+dubbo-admin)
    java代码执行mysql存储过程
    SpringBoot整合Junit
    摘要算法之MD5
    java如何控制下载的文件类型是txt还是doc?如何将文件名返回给前端?Content-disposition
    Android Atuido 连接模拟器
    verilog CRC 校验
    Altium Designer(AD软件)如何导出gerber文件
    SpringBoot集成mybatisplus
    C++ | 通过智能指针实现资源管理
  • 原文地址:https://www.cnblogs.com/Scissors/p/2943396.html
Copyright © 2020-2023  润新知