Web开发新体验:ASP.NET 3.5 MVC架构与实战(含光盘1张)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-19 23:47:15

点击下载

作者:龚赤兵

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Web开发新体验:ASP.NET 3.5 MVC架构与实战(含光盘1张)

Web开发新体验:ASP.NET 3.5 MVC架构与实战(含光盘1张)试读:

前言

微软的开发团队自2007年12月发布了第一个ASP.NET 3.5 MVC预览版本以来,接着分别发布了8个后续的测试版本,终于在2009年3月18日正式发布ASP.NET 3.5 MVC 1.0版本。关于ASP.NET 3.5 MVC今后开发Web应用程序的一个主流技术如果您是第一次听说ASP.NET 3.5 MVC 1.0框架,请认真阅读本书内容,不要错失良机。开发者采用新的ASP.NET 3.5 MVC框架开发Web应用程序,特别有利于Web应用程序的单元测试,可以比较容易地实施测试驱动开发,是今后开发Web应用程序的一个主流技术。学习ASP.NET 3.5 MVC框架,成就自我职业人生ASP.NET 3.5 MVC框架的诞生,将给职场上带来众多全新的Web开发职位。初学者可以在一条全新的起跑线上,挑战IT“老人”,充分享受新技术给新人带来的诸多机遇,成就自我职业人生。国内原创的ASP.NET 3.5 MVC博客网站本书作者跟踪ASP.NET 3.5 MVC技术一年多来,阅读了ASP.NET 3.5 MVC开发团队中的大量英文博客,以及互联网上的众多英文文章,在充分掌握ASP.NET 3.5 MVC框架精髓的基础上,采用ASP.NET 3.5技术,基于多层架构实现了原创的ASP.NET 3.5 MVC博客网站,便于开发者学习、运用ASP.NET 3.5 MVC框架。本书的结构本书分为体验篇、架构篇、实战篇3个部分,体验篇包括第1章至第13章,架构篇包括第14章至第17章,实战篇包括第18章到第23章。图1所示是本书的三大部分的结构。图1 本书的三大部分图2所示是本书体验篇的内容和结构。图2 体验篇部分图3所示是本书架构篇的内容和结构。图3 架构篇部分图4所示是本书实战篇部分的内容和结构。图4 实战篇部分光盘使用说明为了方便读者学习,本书附带一张光盘,光盘或者书中相关软件所需要的运行环境要求如下。● 硬件环境:CPU的主频至少1.6GHz以上,推荐值2.2GHz以上,如果操作系统为WindowsVista,推荐值2.4 GHz以上;内存至少384MB以上,推荐值1024MB以上。● 软件平台:操作系统为Windows XP Service Pack 2、Windows Server 2003 Service Pack 1或者Windows Vista,同时安装Visual Studio 2008专业版软件及ASP.NET MVC 1.0框架。附书光盘中的文件夹结构与内容具体如表1所示。表1 附书光盘中的文件夹结构与内容将本书的源代码复制到硬盘,去掉“只读”属性(否则可能无法正常使用这些源程序),配置好上述相关的开发工具及数据库,更详细的配置方法,请参考书中的具体介绍。本书附赠的源代码都已经过作者编写和测试,仅供读者学习时使用,不能用做其他商业用途。关于作者本书主要由龚赤兵编写,参加写作的人员还有张哲浩、张晓丽、张圣清、龙敏、龚雅、丁汀、刘恭作、丁瑞、王银萍、龚红佳、丁洁珍、刘连清、龚承德、王欢、鲍婧、林华、鲍必贵、韩桃仙、周礼成等,在此一并表示感谢。在本书编写过程中,我们力求精益求精,但难免存在一些错误和不足之处,如果读者使用本书时遇到问题,可以发邮件联系我们(spencergong@yahoo.com)。编 著 者咨询电话:(010)88254160 88254161-67电子邮件:support@fecit.com.cn服务网址:http://www.fecit.com.cn http://www.fecit.net通用网址:计算机图书、飞思、飞思教育、飞思科技、FECIT第1篇体验篇第1章 初识ASP.NET 3.5 MVC开发第2章 路由进阶第3章 HtmlHelper控件解析第4章 自定义GridView控件开发第5章 自定义视图引擎第6章 图表开发第7章 大、中型ASP.NET 3.5 MVC项目开发第8章 过滤器解析、开发第9章 控制器与视图之间的数据传递第10章 jQuery视图开发第11章 多项目混合开发第12章 单元测试第13章 网站部署第一章 初识ASP.NET 3.5 MVC开发在ASP.NET 3.5 MVC框架下开发Web应用程序,与传统的Web Forms技术不同,它需要分别开发相关的模型、控制器和视图,还需要理解URL路由的基本概念和使用方法。本章实现了在ASP.NET 3.5 MVC框架下,NorthWind数据库中Categories数据表内容的显示、修改、添加及详细页面,以便初学者认识ASP.NET 3.5 MVC的开发流程。说明了如何构建模型、如何实现控制器及如何创建对应的视图,还特别讲解了URL路由的简单知识和应用。本章要点:● ASP.NET 3.5 MVC概述● 初创ASP.NET 3.5 MVC应用项目● URL路由1.1 ASP.NET 3.5 MVC概述1.1.1 为什么使用ASP.NET 3.5 MVC框架1.Web Forms开发难以测试在传统的ASP.NET应用开发中,微软的开发团队为开发者设计了一个较为完整、基于Web Forms的开发环境,使得构建Web应用相对容易,开发人员只需在一个可视化设计器中拖放控件,然后在表单中设置相关属性即可;开发人员通过编写代码来响应事件,使得对于程序逻辑的操作也变得非常直观。然而在Web Forms中,微软构建了一个非常复杂的引擎,从而给页面的执行过程带来了许多的负面效应。开发者很难了解这背后的HTML是如何运作的,由于编程代码与HTML语言共处于同一页面,所以对于页面设计人员来说非常不友好;同时,如果没有合理控制ViewState的话,很容易得到一个包含大量ViewState的页面,使得该页面的尺寸远远超过所需的内容,最终页面打开的速度异常缓慢;随着Web应用越来越复杂化,不容易测试也越来越成为实际应用开发中的一个棘手问题。2.ASP.NET 3.5 MVC开发易于测试微软的开发团队于2007年12月发布的第一个ASP.NET 3.5 MVC预览版本以来,分别发布了8个后续的测试版本,终于在2009年3月18日正式发布ASP.NET 3.5 MVC 1.0版本。新的ASP.NET 3.5 MVC框架,避免了很多Web Forms所带来的复杂性,没有数据回传,没有在页面中保存视图状态,开发者可以完全掌控页面的呈现全过程,使用模型、视图及控制器将Web应用划分到不同的组件中,有利于开发人员与设计人员的分工,提高开发效率,同时也提高了程序的可维护性和扩展性,特别是有利于Web应用程序的测试,可以比较容易地实施测试驱动开发。3.两种Web开发技术并存需要说明的是,ASP.NET 3.5 MVC框架只是给开发者提供了开发Web应用程序的一种选择,而绝不是替代传统的Web Forms技术,这两种技术在不同的应用场景中,具有不同的优、缺点,开发者需要根据自己的实际情况,选择对应的技术,甚至在同一个项目中混合使用这两种技术。ASP.NET 3.5 MVC框架与Web Forms技术的架构图如图1-1所示。图1-1 ASP.NET 3.5 MVC框架与Web Forms技术的架构图从图1-1中可以看出,ASP.NET 3.5 MVC框架与Web Forms技术是建立在ASP.NET 3.5基础上的两种平行技术,是微软今后同时发展的两种Web开发技术,需要支持的.NET框架为3.5版本,并且还需要安装SP1更新。1.1.2 基本概念MVC(Model View Controller)模式是一种较为广泛应用的结构设计模式,MVC设计模式将一般的应用程序根据功能的不同,划分为3个主要部分,它们分别是模型、视图及控制器。ASP.NET 3.5 MVC框架基于MVC设计模式,并提供非常方便的测试功能,开发者利用ASP.NET 3.5 MVC框架,借助ASP.NET所提供的母版页及成员管理等技术,可以开发扩展性高、测试容易的Web应用程序,是今后ASP.NET应用的另外一个主要方向。1.模型、视图、控制器所谓模型,就是在MVC设计模式中需要被显示的数据。在通常情况下,该模型需要从数据库中读取数据、保存模型的状态等,提供数据的访问方法及数据的维护。例如,对于SQL Server中数据库NorthWind的表Products来说,一个Product对象就是一个模型,该对象需要读取数据库中的信息,并对该数据表进行查询、添加、修改等操作。对于一个比较小型的应用程序而言,模型也许只是概念上的,假如一个应用程序需要读取数据,然后显示在用户界面上,而在该应用程序中并不存在一个物理上的数据模型或者相关的类,那么此时被读取的数据就是模型。所谓视图,就是用来显示模型中数据的用户界面。对于数据表Products来说,在一个界面中显示该数据表的详细信息,该界面就是数据表Products的一个视图,一般来说,视图就是HTML页面。所谓控制器,就是用来处理对用户的输入或者交互命令,以便改变模型的状态,选择适当的视图来显示对应模型的数据。2.MVC之间的相互关系图1-2说明了ASP.NET 3.5 MVC中模型、视图及控制器之间的相互关系。图1-2 ASP.NET 3.5 MVC各组件间的关系从图1-2中可以看出,当用户在浏览器中输入浏览地址,到获得页面的反馈结果,一般需要经过以下5个步骤。(1)当用户在浏览器中输入浏览地址,发出页面的请求时,实际上就是向控制器发出相关的命令。(2)控制器接收用户的请求命令之后,向模型请求获得相关的数据。(3)模型将对应的数据返回给控制器。(4)控制器将有关数据发送到指定的视图。(5)指定的视图呈现被指定的数据。从上述的5个步骤中可以知道,控制器在其中扮演着非常重要的角色,控制器不仅处理用户的请求,还实现与模型之间的交互,对指定的视图发送相关的命令,在实际的ASP.NET 3.5 MVC应用开发中,开发者的主要工作就是实现控制器的编码。1.1.3 ASP.NET 3.5 MVC框架的特点1.易于单元测试在ASP.NET 3.5 MVC框架中,通过模型、视图和控制器,很好地分离了用户输入逻辑、业务逻辑和界面显示逻辑,因此非常容易实现Web应用程序的单元测试,开发者还可以使用任何与.NET框架兼容的其他测试方法,在ASP.NET 3.5 MVC框架的源码中,包括大量的单元测试代码,可供开发者学习和借鉴。2.容易实施测试驱动开发开发者可以使用ASP.NET 3.5 MVC框架实施测试驱动开发,事实上,ASP.NET 3.5 MVC框架本身在开发过程中就是采用的测试驱动开发的。3.可扩展、可替换ASP.NET 3.5 MVC框架是可扩展的、可被替换的。ASP.NET 3.5 MVC框架中的组件可以被替换或者个性化,例如可以使用其他的视图引擎、URL路由策略等。4.支持Web Forms中的有关特性在ASP.NET 3.5 MVC框架中,强大的URL映射组件使得开发者可以开发极其广泛并且可搜索URL的应用程序;在视图模板中支持各种当前的Web Forms页面(.aspx)、用户控件(.ascx)及母版页(.master),还可以使用嵌套母版页、内联表达式、数据绑定、本地化等。在ASP.NET 3.5 MVC 框架中,还支持现有的Web Forms特性,如基于窗体和基于Windows的成员、角色管理、数据缓存等。5.URL被映射到控制器在传统的ASP.NET应用程序中,URL通常被映射为保存在磁盘上的一个文件(例如.aspx文件),而在ASP.NET 3.5 MVC应用程序中,URL不再被映射为一个文件,URL首先被映射到一个控制器类中,该控制器处理用户的输入,选择适当的模型,获得相关数据,然后调用视图组件显示指定的数据,并返回到用户界面。1.2 初创ASP.NET 3.5 MVC应用项目在VisualStudio2008中,选择“文件”“新建”“项目”命令,打开如图1-3所示的“新建项目”对话框。图1-3 “新建项目”对话框在“新建项目”对话框中,选择项目模板“ASP.NET MVC Web Application”,设置项目的名称为“MvcApplication1”,然后单击“确定”按钮,此时ASP.NET 3.5 MVC框架就会弹出一个“Create Unit Test Project”对话框,如图1-4所示。图1-4 “Greate Unit Test Project”对话框在图1-4中,选择“No, do not create a unit test project”单选按钮,表明不创建单元测试项目,然后单击“OK”按钮,ASP.NET 3.5 MVC框架就会创建一个基本的ASP.NET 3.5 MVC应用项目,如图1-5所示。图1-5 ASP.NET 3.5 MVC应用项目运行上述MvcApplication1网站,打开如图1-6所示的启动界面。图1-6 启动界面在图1-6中,如果单击导航菜单中的“About”链接,就会打开如图1-7所示的About界面。图1-7 About界面1.2.1 约定的目录结构通过项目模板“ASP.NET MVC Web Application”创建MvcApplication1网站时,根据ASP.NET 3.5 MVC框架的约定,MvcApplication1网站将模型、视图和控制器组件及其他内容分别安放在不同的项目目录中,以便开发者维护与管理,MvcApplication1网站的目录结构如图1-8所示。图1-8 ASP.NET 3.5 MVC应用项目目录结构从图1-8中可以看出,数据库文件仍然存放在App_Data文件夹中;Content文件夹则存放静态文件,如样式文件、图片等;Scripts文件夹则存放JavaScript文件。1.Models文件夹模型组件一般存放在Models文件夹中,例如LINQ to SQL类或者ADO.NET Entity Data Model就可以存放在该目录中,该目录还可以存放有关数据访问操作的一些类、对象的定义等。2.Views文件夹视图组件一般存放在Views文件夹中,可以存放的文件类型包括.aspx页面、.ascx控件及.master母版页等。这里需要说明的是,对于每一个控制器,在Views文件夹中都有一个与控制器名称相对应的目录。例如,存在一个控制器HomeController,那么在Views文件夹中,就必须创建一个Home(控制器HomeController名称的前面部分)的目录,这样当ASP.NET 3.5 MVC框架通过控制器HomeController加载相关的视图时,就会自动寻找Views/Home目录下的相关.aspx页面。3.Shared文件夹对于视图组件中的公用部分,可以创建一个名称为“Shared”的文件夹,该目录不属于单个的控制器,而是属于所有的控制器,在Shared中可以存放母版页、CSS样式表等文件。4.Controllers文件夹控制器组件一般存放在Controllers文件夹中,控制器的命名约定采用XXXController的方式。另外需要说明的是,在ASP.NET 3.5 MVC框架中,使用了Global.asax文件中的后置代码文件Global.asax.cs,并在该文件的Application_Start()方法中设置了URL路由,以及相关的路由逻辑。打开Global.asax.cs文件,Application_Start()方法中的实现代码,见代码清单1-1。代码清单1-1 Application_Start()方法中的实现代码在上述代码中,定义了两个URL路由,第8行定义了可以忽略的路由配置,也就是说,不需要路由处理程序去处理这些路由,而第10行则设置了一个默认的路由。在ASP.NET 3.5 MVC框架中,还需要通过配置文件Web.config注册专门的HTTP模块,在httpModules节中,注册了UrlRoutingModule类,用于解析URL的路由,这是使用ASP.NET 3.5 MVC框架或者传统的ASP.NET程序的根本区别。UrlRoutingModule模块注册的实现代码,见代码清单1-2。代码清单1-2 UrlRoutingModule模块注册的实现代码从上述代码中可以看出,第2行添加了一个名称为UrlRoutingModule的HTTP模块,正是注册了该模块,ASP.NET程序就会使用ASP.NET 3.5 MVC框架,将页面的请求转换为URL路由,并调用相关控制器中的相关方法,实现指定视图的输出。1.2.2 执行过程1.UrlRoutingModule模块入口当执行基于ASP.NET 3.5 MVC框架的MvcApplication1网站时,根据浏览器中的URL地址,该URL地址首先被传递到上述设置的UrlRoutingModule模块,该模块解析该URL地址,然后选择相关的URL路由,并得到对应的IHttpContext对象来处理该URL路由。在默认情况下,该IHttpContext对象就是MvcHandler对象。通过MvcHandler对象,选择相关的控制器来处理用户的请求。因此,UrlRoutingModule模块和MvcHandler对象是基于ASP.NET 3.5 MVC框架网站运行的入口点,主要实现以下3项功能:● 选择适当的控制器。● 获得指定控制器的一个实例化对象● 调用指定控制器中的相关方法。表1-1说明了在ASP.NET 3.5 MVC应用项目中页面请求的执行过程。表1-1 ASP.NET 3.5 MVC页面请求的执行过程从表1-1中可以看出,当请求一个基于ASP.NET 3.5 MVC框架的网站页面时,主要包括5个步骤,它们分别是创建RouteTable、URL路由、执行MvcHandler、执行Controller和执行View()方法,下面详细说明这5个步骤。2.5个执行步骤在传统的ASP.NET应用程序中,每一个被请求的页面都对应着文件系统中的一个文件,否则就会出现错误。这些页面事实上都被表示为一个类,而该类实现了IHttpHandler接口,每当一个页面被请求时,就会调用该类中的ProcessRequest()方法,执行ProcessRequest()方法之后,就会将指定的内容返回到浏览器中。在基于ASP.NET 3.5 MVC框架的网站中,每一个被请求的页面都被映射到相应的控制器中的相关方法,控制器负责将指定的内容返回到浏览器中。需要说明的是,多个页面可以被映射到同一个控制器中的不同方法。在ASP.NET 3.5 MVC框架中,页面到控制器的映射是通过路径表(Route Table)而实现的,对于每一个应用程序有一个路径表。路径表通过RouteTable.Routes属性表示,在上述的代码清单1-1中,路径表中添加了1个路由对象,而路由对象负责实现URL到处理器的映射,该路由对象实现URL到MvcRouteHandler的映射,将具有{controller}/{Action}/{id}模式的URL映射到MvcRouteHandler。需要说明的是,URL路由类库位于命名空间System.Web.Routing之中,与ASP.NET 3.5 MVC框架的命名空间System.Web.MVC是独立的,因此可以在非ASP.NET 3.5 MVC框架的网站中使用URL路由功能。当请求一个基于ASP.NET 3.5 MVC框架的网站页面时,在Web.config配置文件中所配置的UrlRoutingModule模块解析该URL,并获得相关的RouteData对象,然后创建HttpHandler的实例化对象MvcHandler。在执行MvcHandler时,调用其中的ProcessRequest()方法,执行该ProcessRequest()方法,从而创建一个控制器的实例化对象。在执行Controller时,调用其中的Execute()方法,在该方法内部通过反射原理实现对指定其他方法的调用,在调用的方法中会执行View()方法,从而将指定页面的内容返回到浏览器中。1.2.3 构建模型在ASP.NET 3.5 MVC框架中,模型主要实现应用程序中的数据访问和业务逻辑,按照约定,这些模型类均存放在Models文件夹中,如果要显示NorthWind数据库中的Categories数据表,则需要创建ADO.NET实体数据模型。在“解决方案资源管理器”窗口中的“MvcApplication ①”项目内的“Models”文件夹上单击鼠标右键,在弹出的快捷菜单中选择“添加”“新建项”命令,打开如图1-9所示的“添加新项”对话框。图1-9 “添加新项”对话框在图1-9中,选择“ADO.NET Entity Data Model”模板,设置实体数据模型的名称为“Northwind.edmx”,然后单击“添加”按钮,打开如图1-10所示的对话框。所示的实体数据模型向导——“选择模型内容”对话框。在图1-10中,选择“从数据库生成”,表明ADO.NET实体框架从数据库直接生成实体数据模型,然后单击“下一步”按钮,打开如图1-11所示的“选择您的数据连接”对话框。图1-10 “选择模型内容”对话框图1-11 “选择您的数据连接”对话框在图1-11中,选择Northwind数据库的连接字符串,并设置相关的实体连接字符串,单击“下一步”按钮,就会打开如图1-12所示的“选择数据库对象”对话框。在上述的“选择数据库对象”对话框中,根据需要可以选择数据表,也可以选择视图,还可以选择存储过程,这样ADO.NET实体框架就会自动生成这些数据库对象的实体数据模型。图1-12 “选择数据库对象”对话框这里只选择数据表“Categories”,如图1-13所示,然后单击“完成”按钮,ADO.NET实体框架即可生成该数据表所对应的实体数据模型,如图1-14所示。图1-13 选择相关数据表图1-14 实体数据模型1.2.4 控制器在ASP.NET 3.5 MVC框架中,控制器有着非常重要的作用,控制器处理用户的请求,将用户请求的URL路由,分发到控制器中的相关动作方法,而不是文件系统中某个对应的真实文件,这是ASP.NET 3.5 MVC应用程序与传统的Web Forms应用程序的区别之一。1.默认的HomeController类打开Controller文件夹下的HomeController.cs文件, ASP.NET 3.5 MVC框架默认创建了HomeController的实现代码,见代码清单1-3。代码清单1-3 HomeController的实现代码在上述代码中,控制器的名称必须命名为形如“XXXController”的格式,并且必须实现接口Icontroller,或者继承抽象类Controller类。控制器中所定义的动作方法,处理用户的请求,执行其中相关的代码,例如检索或者更新数据库中的数据,然后选择相关的视图,将内容输出到浏览器中。第1行代码设置了一个过滤器[HandleError],表示如果在执行该控制器中的有关方法出现异常的时候,将会打开友好的错误信息提示页面;在控制器中所定义的动作方法,必须设置为public;如果是一个内部方法,可以在该方法中设置过滤器[NonActionAttribute]。第4行代码定义了一个动作方法Index(),该方法返回的类型是ActionResult。ActionResult是一个抽象类,因此实际的返回类型是该抽象类的子类,ActionResult的子类列表见表1-2。表1-2 ActionResult的子类列表第6行代码设置了ViewData的字典数据,以便将控制器中的指定数据,传递到视图;第6行代码调用Controller类中的View()方法,返回的对象是一个ViewResult的实例化对象,将指定的内容输出到浏览器中。在Controller类中的相关方法与返回对象的列表,见表1-3。表1-3 控制器中的方法与返回对象列表2.修改后的HomeController类本章需要实现Categories数据表的显示、编辑、添加,以及目录详细页面,因此在Home控制器中创建了相关的动作方法Index()、Edit()、Create()及Details(),

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载