[.net 面向对象程序设计深入](4MVC 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. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

    [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...

  2. [.net 面向对象程序设计深入](0) 开篇

    [.net 面向对象程序设计深入](0)开篇        [.net 面向对象编程基础]和 [.net 面向对象程序设计进阶]在15年底写完了,群里也加进来不少热爱学习的小伙伴.让我深切感受到在这个 ...

  3. [.net 面向对象程序设计深入](5)MVC 6 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux)

    [.net 面向对象程序设计深入](5)MVC 6 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux) 1.关于跨平台 上篇中介绍了MVC的发展历程,说到ASP.NET ...

  4. [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术

    [.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...

  5. [.net 面向对象程序设计深入](26)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)

    [.net 面向对象程序设计深入](26)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...

  6. [.net 面向对象程序设计深入](8)认识.NET Core

    [.net 面向对象程序设计深入](8)认识.NET Core  1,概述          .NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台.开源”却是其痛点,从16年开 ...

  7. [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建

    [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建 1.概述 读前必备:认识.NET Core 上篇介绍了.NET 新的生态环境:包括.NET Framework..NET ...

  8. [.net 面向对象程序设计深入](31)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)

    [.net 面向对象程序设计深入](31)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...

  9. 201871010116-祁英红《面向对象程序设计(java)》第十四周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https:/ ...

随机推荐

  1. IntelliJ Idea 常用快捷键 列表

    1. -----------自动代码-------- 常用的有fori/sout/psvm+Tab即可生成循环.System.out.main方法等boilerplate样板代码 例如要输入for(U ...

  2. C语言语法 typedef小结

    在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...

  3. 自连接<EntityFramework6.0>

    自引用 public class PictureCategory { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ...

  4. 微信小程序开发—快速掌握组件及API的方法---转载

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

  5. NXP恩智浦P87C51/52/54/58/591芯片解密单片机破解多少钱?

    NXP恩智浦P87C51/52/54/58/591芯片解密单片机破解 芯片解密型号: P87C51x2.P87C52x2.P87C54x2.P87C58x2.P87C591  单片机解密 #####[ ...

  6. HTTP和HTTPS

    HTTP和HTTPS HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS. 默认HTTP的端口号为80,HTTPS的 ...

  7. 【转】《从入门到精通云服务器》第七讲—IAAS、PAAS、SAAS

    Saas.Paas.IaaS这三个词,一直困扰众人很久.就拿字面意思来说,分别是:软件即服务,平台即服务,设施即服务.小编表示这个不往深了讲,真心看不懂,还容易弄混淆.今天我们就来扒一扒这三者的深层含 ...

  8. WINFORM 输出txt文件

    SaveFileDialog saveFile1 = new SaveFileDialog(); saveFile1.Filter = "文本文件(.txt)|*.txt"; sa ...

  9. STM32之DAC君

    如花说得好:呃呃呃.是俗话说得好:有了ADC,怎可少了DAC..我觉得奇怪.今天我开头就直奔主题了.我想了想,总结了一句话:孙悟空纵然有七十二变.无论是变成猫也好,变成狗也罢.始终还是会变回他本身.所 ...

  10. spring和Hibernate整合

    首先导入spring和Hibernate的jar包,以及JDBC和c3p0的jar包, 然后就是Hibernate的XML配置文件,不需要加入映射文件,这里用spring容器管理了. Hibernat ...