1.从AspWebForm过度到AspMVC.ppt
BF-TECH 4.0 DNET 软件开发工程师高薪就业品牌课程版权所有:北风网,ASP.NET 4.5 MVC 开发实战教程讲师:石曼迪,课程大纲,视图开发引擎可复用UI组件路由MVC应用程序架构设计AJAXMVC网站安全移动WEB网站开发客户端优化技术MVC程序部署及实施,第一章:从A Web Form过度到 A MVC,目录,MVC技术背景什么是MVC模式MVC架构说明ASP.NET MVC 4新特性,MVC技术背景,Web架构时代-ASP&PHP&JSP时代-ASP.Net 2.0时代(2004-2005)-AJAX时代(2006-2007)-Flash&Silverlight时代(2007-2008)-ASP.Net MVC时代(2008-2009)-ASP.NET Web API(2012-?),MVC技术背景:ASP&PHP&JSP时代,优点-语法简单-数据访问快捷(全靠ODBC撑着)不足-没有架构概念-显示和数据混编-无法测试,MVC技术背景:ASP.Net 2.0时代,-服务器端空间-皮肤和样式-数据源控件与数据绑定控件-内建若干Services eg:membership,webpart提出主题和控件皮肤概念。提供了分页和排序,可以绑定数据源自动生成数据。webpart可以把某区域的服务器控件组装到某容器里。,MVC技术背景:ASP.Net 2.0时代,优点-开发快捷-部署方便不足-控件导致代码冗余(特别是GridView)-服务器端与用户端交互过于频繁-无单独的UI定制-无法进行完整测试,MVC技术背景:AJAX时代,-自动提交用户数据的时代-良好用户体验的开端时代前端设计师彻底和业务逻辑说再见的时代,他的技术并不新,她就是拿Javascript的xml,http对象模拟请求,这个请求是异步请求,他是通过Javascript引擎中提供的脚本,在用户不知不觉中就提交了数据,这一小技术的开始使得用户体验大大上升。但因为各浏览器之间标准不统一,用起来也不方便,但是今天由于已经封装好了Javascript的类库,因此使用起来非常的方便。,MVC技术背景:AJAX时代,优点-用户体验内容丰富不足-开发和调试内容繁琐-无法进行完整的测试,MVC技术背景:Flash&Silverlight时代,-富有表现力的一代优点-表现力丰富不足-支持资源少-精简的类库,受限大,MVC技术背景:MVC时代,一般认为webforms的缺点大致有以下几个方面:ViewState问题,导致在浏览器和服务端反复来回传递,影响页面呈现的效率页面生命周期:页面生命周期的一部分:连接客户端事件和服务端事件处理代码的机制非常复杂,只有少数的开发人员能够完全掌握并去操控。不能很好的分解关注点,MVC一直贯彻的思想是:约定胜于配置,分解关注点对HTML操控受限,我们知道服务端控件最终也是以HTML的形式呈现,但往往不是我们认为必要的,而且不能很好的应用CSS样式。比如ID为发生变化,当然在4.0里面有了设置ID的呈现模式。Leaky abstraction:直译是抽象泄漏,我不知道怎么翻译合理,我理解的意思是抽象不完全,WebForms试图在任何可能的地方隐藏HTTP和HTML的细节。当我们实现自己的逻辑时,常常容易偏离的抽象,也因此强制我们去对回发机制进行反向工程,或者是很笨拙的去实现生成我们期望的HTML。另外,所有的这些抽象会成为令组件开发人员沮丧的包袱。可测试性弱,MVC技术背景:MVC时代,ASP.NET MVC 解决了这些问题,什么是MVC模式,我们先来看一下普通的WebForm模式下,我们请求一个例如http:/,什么是MVC模式,新建一个MVC项目运行,什么是MVC模式,那么MVC中又是怎么个流程呢:在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问的http:/localhost:2176/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action,什么是MVC模式,Model 是指 要处理的业务代码和数据操作代码View 视图 主要是指的 跟用户打交道 并能够展示数据Controller 看成是 Model和View的桥梁MVC 框架:约定大于配置控制器类命名 以 Contoller结尾:HomeController控制器类将会产生一个 与之同名的 在Views文件夹下的 文件夹:/View/Home控制器里的 Action方法,也可在视图文件夹下生成一个同名的视图,如:Index.cshtml,现场编程,新建MVC项目分析目录含义新建控制器新建视图新建模型,传值,传值,ViewBag,ViewData,TempData区别?ViewBag和ViewData生命周期相同,仅对当前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型。TempData保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。如果我们想读取TempData的值但是又不让它被删除,可以使用TempData.Peek(Key)方法。如果想再保持一次TempData里面的值,可以使用TempData.Keep(Key).,部分视图,RenderBody(),总结,MVC开发优势传值项目创建约定视图展现,学习地址:ASP.NET 4.5 MVC实战教程:http:/,欢迎访问我们的官方网站,