一. ASP.NET体系css
从事.Net开发以来,最早接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模式,ViewState功不可没,经过的控件的拖拽和绑定,很快就能够搭建出来一个Web项目,其开发速度远胜Java、PHP,当年Web项目并不很重视体验,没有今天响应式,没有各类前端js框架,因此在当年的WebForm,微软是以引觉得豪的。html
该框架毕竟有时代局限性,随着前端的崛起,随着人们对项目体验的提升,随着项目的体量的增大,WebForm在当下强调松耦合、模块化、组件化的时代,略显落后,故微软于2009年推出第一个开源框架,即MVC框架,俗称ASP.Net MVC1,后面又陆续的推出 MVC二、三、四、5。如今最新的跨平台Web开发框架 Core MVC,它隶属于.Net Core框架,而非 .Net FrameWork下。前端
下面用一张图表示一下在Core出现以前,.Net在Web开发即ASP.NET中包含的内容。ajax
简单分析一下:WebPages(没用过哎)、WebForms、MVC均为ASP.NET下的Web开发框架,WebAPI负责构建HTTP常规服务,SignalR负责构建实时服务。数据库
MVC和WebAPI简单对比一下:MVC用来构建网站既关心页面又关心数据,WebAPI只关心数据;MVC经过能够经过Action的名字来接受CURD操做,而WebAPI经过HTTP的访问方式(GET、PUT、POST、DELETE)来表达不一样的CURD操做。服务器
(WebService、WCF、WebAPI、SignalR在后面会有单独的章节详细介绍)框架
二. WebForm和MVC对比模块化
1. WebForm组件化
作过WebForm开发的朋友们应该很清楚,WebForm开发形式主要分为三种:单元测试
①:服务器端控件,即拖拽控件(aspx)
②:通常处理程序(ashx) + html模板
③:html静态页 + ajax + 通常处理程序(ashx)
请求模型:
WebForm的几个臭名昭著的缺点:封装太强,致使开发不灵活;ViewState的无状态;声明周期模型复杂,对于初学者不易于理解。
2. MVC
咱们常常从各类开发工程师(JAVA 、.NET、PHP)口中听到MVC,但不一样人说的MVC貌似相似,但又有区别,那么MVC究竟是什么呢?(相似的还有MVP和MVVM)
1. 从宏观上来讲:MVC是框架分层的一种搭建思想,在最原始的项目中,没有什么框架分层之说,全部的项目代码都在一个层里,这样会致使代码冗杂,耦合性强,项目迭代升级困难,MVC是一种分层思想,将一个项目代码分为几类,分别放到不一样的层里,Model层存储一些数据和业务逻辑,View层处理页面问题,Controller层用来接收人机交互指令。MVC分层思想和传统的三层(数据库访问层、业务逻辑层、表现层)仍是有区别的。
MVC的核心是分离了View和Model(即页面和数据),Controller负责接收和发送指令,交给Model层处理。
2. 从.Net的角度来讲,MVC是微软提供一个Web开发框架,全称ASP.NET MVC,它是传统三层中View层的一种功能细分,一种表现形式而已,与三层没有直接关系。ASP.NET MVC框架中的开发流程围绕:
① Model:存储实体类,实现系统中的业务逻辑。
② View:页面展现(Razor模板),展示给用户。
③ Controller:页面的逻辑处理,用来与用户的交互,处理接受的Http请求。而后从Model中获取相应的数据,转发给View进行页面展现。
补充:经过Controller中的Action,能够充当APP的服务端接口的做用,和WebAPI达到的效果一致,但访问方式是有区别的。
请求模型:
下面列举MVC框架的几个典型的优势:
①:松耦合,M-V-C分工明确,有利于代码的维护。
②:便于Seo优化,能自定义url的生成规则。
③:ASP.NET MVC5是个出色的表现层框架。
④:对单元测试支持友好。
三. ASP.Net MVC 框架
1. 包含的技术
ASP.NET MVC框架,这里以MVC5为例,涉及到的知识有:Model-View-Controller的使用、Area和Global的理解、路由配置、数据传递的方式、AOP思想的体现(4大过滤器),各类Result、Razor语法、HttpContext相关的五大对象、分布视图、特性的补充、Html扩展控件、Bundles压缩js和css的原理、Owin约束、管道模型及MVC的工做原理。
以及最新的Core MVC框架的相关知识。
2. 常见的约定
①:控制器命名一般以Controller结尾。
②:一个控制器对应一个View视图文件夹,经常使用页面都存放在里面。
四. 系列章节
第二节:各类路由约束(动态路由、静态路由、组合路由、正则约束、命名空间约束、区域内路由)
第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)
第四节:MVC中AOP思想的体现(四种过滤器)并结合项目案例说明过滤器的实际用法
第五节:从源码的角度理解MVC中各类Result(ActionResult、JsonResult、JavaScriptResult等)---待补充
第八节:layout和partialView、RenderPartial和Partial、 action和RenderAction(未完成)
第十节:数据批注(DataAnnotationModel)和自定义验证(包括Model级别的验证)
第十三节:HttpHander扩展及应用(自定义扩展名、图片防盗链)
第十五节:HttpContext五大核心对象的使用(Request、Response、Application、Server、Session)
第十六节:利用MVC的扩展完成“一个后台,多套前端页面”的解决方案(未完成)
!