本章学习内容:
1.MVC简介
2.MVC和WebForm
3.此系列教程概述
1.MVC简介
MVC 是微软官方提供的以MVC模式为基础的ASP.NETWeb 应用程序框架,它由Castle的MonoRail而来,
日前最新版本是MVC 4.0;配套的最新vs版本是vs2012。
MVC (Model、View、Controller)将一个Web应用分解为:Model、View和Controller。ASP.NETMVC框架提供了一个可以代替ASP.NETWebForm的基于MVC设计模式的应用,但MVC出现的目地绝不是为了代替WebFrom.
MVC设计模式(此处并不是特指asp.net mvc框架 )无论在哪种语言中一直是程序员们推崇而又努力想做到的,它实现了代码之间,代码和界面之间的松耦合,使得开发和修改项目时各自可以最大可能的专注于自己的核心业务逻辑并且和其他诸如前端开发工程师更好的配合,但是事实上在编码时无论经验多么丰富的程序员,你都不能确保你的页面里不会出现一丁点其他层的东西,所以我认为MVC是一个理想标准标准而不是最大准则,所有项目的唯一衡量标准均来自于你的需求,或者说是你的客户。
废话扯得有点远了,MVC简介及发展史百度一下都会得到比我叙述的跟完整的内容,我就不再多说了。声明一下,此系列教程很多会摘自各个博主或者其他网站上的内容,感谢各位提供者,如我会尽可能的标出出处,但是因为MVC我学的时间有点长了,资料也是收集的五花八门并不敢保证,果有作者觉得侵权了请私信或联系我。
2.MVC和WebForm
此处截取的是 作者:深山老林 出处:http://wlb.cnblogs.com/文章
1.传统WebForm开发中存在的一些问题
传统的ASP.NET开发中,微软的开发团队为开发者设计了一个在可视化设计器中拖放控件,编写代码响应事件的快速开发环境。然而,它所带来的负面效应是:
- 由于控件封装了很多东西,开发者很难了解这背后的HTML是如何运作的
- 容易得到一个包含大量ViewState的页面,使得页面尺寸远远超过所需的内容,使得页面的打开速度较慢
- 不容易被测试(个人感觉vs调试功能还是很强大的)
2.什么是ASP.NET MVC
ASP.NET MVC是微软的开发团队基于MVC开发的一个易于被测试的框架。它具有以下特性
- 没有数据回传
- 没有在页面中保存视图状态
- 开发者可以完全掌控页面的呈现过程
- 易于单元测试
- 易于测试驱动开发
- 可扩展、可替换
- 支持WebForm中的有关特性,如:用户控件、母版页、数据绑定、本地化等
- 不在基于文件目录结构,而是将URL映射到控制器中
3 为什么使用ASP.NET MVC?
- 易于进行单元测试
- 易于进行测试驱动开发
- 避免了WebForm中大量的ViewState导致页面文件变得臃肿
4. MVC与三层架构?
- MVC是一种模式
- ASP.NET MVC是一个基于MVC模式的开发框架
- 三层架构是一种架构
至于区别,可以严格的从概念上区分开来。
下图是MVC与三层架构的对应关系
6. MVC与Webform如何抉择?
7. 两种技术并存
- ASP.NET MVC框架只是给开发者提供了开发web应用程序的一种选择,并不是要取代Webform
- 这两种技术各有优缺点,开发者需要根据实际情况,选择对应的技术
- 有时候,可以在同一个项目中混合使用这两种技术
8.ASP.NET MVC与Webform技术的架构图
总结:
看完本文,相信ASP.NET WebForm与ASP.NET MVC的选择相信大家应该可以做到心中有数了,我始终觉得,很多时候并不是什么技术好不好的问题,而是适合不适合不适合的问题或者能否把它用好的问题。
打个比方:如果让千里马犁地,恐怕未必能达到理想的效果,最终可能还会抱怨,什么破马,一点劲都没有。
3.教程总概述
此系列教程我预计会编写一个MVC3的在线商城,包含商品管理,用户管理,新闻管理,留言管理等功能模块(可能不会是完整的商城,不一定会有购买,订单之类的,总之本教程的目地是教会一个Asp.net程序员在MVC3下编码,功能和样式不是本教程追求的目地),将使用vs2010 sp1 和Sqlserver2005完成,应用程序部分,视图部分使用 Razor引擎,数据库访问使用 EF CodeFirst,数据查询使用linq,将会涉及到的知识有MVC3下的数据访问,表单处理,数据验证,母版页,AJAX 的操作,以及介绍陕西“陕北吴旗娃”的MVC3分页控件的使用
或许有人要MVC已经到四了我为什么还在用3,原因一来是因为MVC4是配合的vs2012的,我目前还没用个vs2012,作为一个asp.net程序员实在惭愧,二来MVC1和2差异不大,仍然在使用aspx做视图引擎,我个人不太喜欢,MVC3是一个大的进步, Razor出现了,三是最主要的原因,我学习并且使用的是MVC3,其他的不太熟。
此教程中会有多出借鉴网络上流行的MVC3教程ASP.NETMVC 音乐商店的东西,在此对此作者表示感谢(应该是外国人)。