[.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向

1.关于MVC

在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0到5.0的时间也不短了,很多人只是按照范例去使用MVC的一些基础功能,并没有更加深入的了解MVC。在这一系列中,我主要介绍MVC的一些原理和使用技巧,以及MVC的发展方向。

先说说MVC,首先他是一种设计模式,如果你百度为什么GOF23种设计模式中没有MVC,答案很有意思,如下:

“在他们看来,它其实是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和组合模式(Composite)。根据MVC在框架中的实现不同可能还会用到工厂模式(Factory)和装饰器(Decorator)模式。”

.NET MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。
  • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View(视图)是应用程序中处理数据显示的部分。
  • Controller(控制器)是应用程序中处理用户交互的部分。

2.MVC发展史

(1)MVC 1.0

发布时间:(2009年3月13日) 2007年.NET 1.0开始研发,2009年3月13日.NET MVC 1.0正式发布

简介:随着.NET WebFrom的使用人数较多,1.0版本发布后很大一部分开发者仍然使用WebFrom这种拖控件的方式开发Web应用程序,MVC 1.0使用人数并不是很多,只能算是一个婴儿。

(2)MVC 2.0

发布时间:(2010年3月)

简介:核心框架还是延续了1.0,但在Visual Studio工具上进行了改善、使用Html.RenderAction支持渲染网页或网站的某一部分等。这段时间很多开发者都在使用三层架构开发了对MVC的表现、逻辑分离的思想也进一步认识,很多开发者已经慢慢从WebForm向MVC转化。

(3)MVC 3.0

发布时间:(2011年1月)

简介:最大的变化就是,支持Razor视图引擎、有丰富的JS支持(比如Jquery)等,灵活性更高了,大量开发者基本抛弃了WebForm转向MVC。

(4)MVC 4.0

发布时间:(2012年)(随VS 2012一起发布)

简介:MVC 4.0经过几个版本变迁,已经变得非常成熟。增加了手机、Web Api等模板,增加脚本压缩合并,支持HTML5,增加JS库,对EF的支持等。几乎基于.NET Web项目都进入MVC时代。并进入完全开源时代(MVC之前开放源码,但不支持修改和贡献,4.0是真正意义上的开源)

(5)MVC 5.0 

发布日期:(2013年)

简介:相对于MVC 4.0 MVC进一步优化,WebApi 2.0、增强路由(Attribute Routing)、进一步增强对JS库的支持,包括新增流行的bootstrap等,.NET Web项目上MVC使用者持续增长。

(6)MVC 6.0 

发布日期:(2016年?月)(正式版发布日期待定)

简介:

a.跨平台部署开发:这将是一个跨时代的作品,包括.NET 5.0将命名为 Core 1.0,微软为了彻底解耦,拆分了所有功能,把.NET Framework几乎重写了一遍, 兼容老版本同时,支持跨平台部署。

在设计中很多地方借鉴了nodejs。而且将ASP.NET 下子项目开源,(开源地址:https://github.com/aspnet/)。并提供了跨平台开发工具Visual Studio Code,可运行于 Mac OS X、Windows和 Linux 之上。

b.框架整合:MVC 6整合了MVC、WebAPI、WebPage,彻底移除了WebForm。在View上提供Tag Helpers和View Components,真正意义上的前端DOM和JS分离,终于可以看到正常的HTML页面了。

c.进一步增强前端:内置了Nodejs、NPM、Grunt、Bower技术,支持AngularJS。

d.支持依赖注入技术,提供原生的DI框架,同时支持第三方容器。

e.支持xUnit.net,抛弃Visual Studio Unit Testing框架。

f.IDE依然强大:除了延续VS2013的强大功能之外,还支持Nodejs、Python开发,支持Android和iOS开发等。

3.MVC 优缺点

优点:

a.分层设计,职责分离,易维护

b.强大的路由,URL路由模块是负责映射从浏览器请求到特定的控制器动作,提供了丰富重写。

c.出色的单元测试支持。

d.团队开发中的优秀表现。

e.开源(我想这个绝对是优点)

缺点:

a.框架的普遍缺点,开发过程中需要遵循模型、视图、控制器分离等规则,增加了结构复杂性。同时结构的复杂性,降低了运行效率。

b.视图模型频繁访问,一定程度上也损害了操作性能。

4.总结:

随着MVC的版本更迭,其性能也一直在提升,特别是进入完全开源之后,相信发展会越来越好,毕竟有全世界的大牛添砖加瓦。

==============================================================================================

返回目录

<如果对你有帮助,记得点一下推荐哦,如有有不明白或错误之处,请多交流>

<对本系列文章阅读有困难的朋友,请先看 《.net 面向对象编程基础》 和 《.net 面向对象程序设计进阶》 >

<转载声明:技术需要共享精神,欢迎转载本博客中的文章,但请注明版权及URL>

.NET 技术交流群:467189533

==============================================================================================

[.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向...相关推荐

  1. 【软考】面向对象程序设计复习指南

    1.根据考纲 (1)分析模式与设计模式知识 (2)面向对象程序设计知识 (3)用C++语言实现常见的设计模式及应用程序. (4)用Java语言实现常见的设计模式及应用程序. 2.面向对象基本概念 面向 ...

  2. php面向对象程序设计,PHP面向对象程序设计类的定义与用法简单示例

    本文实例讲述了PHP面向对象程序设计类的定义与用法.分享给大家供大家参考,具体如下: class Person { private $name; private $sex; private $age; ...

  3. 常惠琢 201771010102《面向对象程序设计(java)》第七周学习总结

    实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: (2)掌握Object类的常用API用法: (3)掌握ArrayList类用法 ...

  4. 2017《面向对象程序设计》寒假作业一

    1.你有什么技能比大多人(超过70%以上)更好? 我看电影比一般人多一点点:我听英文歌比一般人多一点点:我有一把尤克里里和一个滑板.我有很多爱好,但都没能发展成我的特长,它们给我的生活增添了情趣,又不 ...

  5. java面向对象电子科大版答案_电子科大17秋《面向对象程序设计》在线作业1

    电子科大17秋<面向对象程序设计>在线作业1 ----------------------------------------------------------------------- ...

  6. 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告

    20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...

  7. JavaScript中的面向对象程序设计

    本文内容目录顺序: 1.Object概念讲述: 2.面向对象程序设计特点: 3.JavaScript中类和实例对象的创建: 4.原型概念: 5.原型API: 6.原型对象的具体使用:7.深入理解使用原 ...

  8. [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(三) 利用多线程提高程序性能(下)...

    [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(二) 利用多线程提高程序性能(下) 本节导读: 上节说了线程同步中使用线程锁和线程通知的方式来处理资源共享问题,这 ...

  9. 面向对象程序设计上机练习一(函数重载)

    面向对象程序设计上机练习一(函数重载) Time Limit: 1000MS Memory Limit: 65536KB Problem Description 利用数组和函数重载求5个数最大值(分别 ...

最新文章

  1. SharePoint 2013 术语和术语集介绍
  2. ZOJ4116 Game on a Graph
  3. 消息模式在实际开发应用中的优势
  4. .Net Core with 微服务 - 可靠消息最终一致性分布式事务
  5. jvm 架构_不可变的基础架构,热部署和JVM
  6. 重装了新版IDEA,但我之前的个人配置全丢了,太烦了!
  7. 非合作博弈篇——纳什均衡(Nash Equilibrium)
  8. 游戏策划游戏研发必读经典题文一
  9. Fedora 9安装vmware tools解决方案
  10. html渲染自动保存图片,3dmax设置渲染完自动保存图片的方法
  11. 调整外接显示屏亮度的方法
  12. 会议及作用篇--项目管理(十六)
  13. xbox one 手柄在ubuntu下的使用和开发
  14. 理解 rb_tree
  15. 域名解析配置 以及 修改DNS服务器(腾讯云域名注册商、阿里云DNS服务器)
  16. 英语四级核心词,记住这些就够了
  17. 微信扫码登录超详细教程
  18. 分布式持久内存文件系统Octopus(ATC-17 )分析(三)
  19. 基于JavaSwing开发简单的画图板程序 课程设计 大作业源码
  20. 网络渗透测试漏洞复现任务

热门文章

  1. Axure原型制作规范
  2. fluidity详解
  3. Windows Mobile,用C#更改网络连接(SSID、IP Address、Subnet Mask、Gatew... (转)
  4. WINDOWS下的squid
  5. I.MX6ULL芯片介绍 —— 迅为
  6. 面经——Linux相关
  7. 向日葵在mac不能以服务器运行吗,mac远程桌面连接在哪?向日葵可以实现mac远程连接吗?...
  8. fastdfs 吗 支持windows_主流开源文件存储系统-fastdfs是否支持windows?你可以选择minio...
  9. css 超出文字头尾相接滚动_前端的一些雕虫小技,从100%和滚动条说起
  10. LinkedHashMap的使用