1 MVC 概述以及 ASP. NET MVC
1. 1 MVC 概述
MVC 最早是在 1979 年由现挪威奥斯陆大学教授 Trygve Reenskaug 提出的,并应用于当时广泛使用的程序设计语言 Smalltalk 中,其主要目的就在于简化软件开发的复杂度,以一种概念简单却又权责分明的架构来撰写更模块化,可维护性更高的程序代码.因此,MVC 并不是一种程序语言,而是开发时所使用的一种"框架"( 架构) .MVC 框架中使软件开发分为三个主要单元: Model( 模型) 、View( 视图) 、Controller( 控制器) ,其定义和之间的关系如图 1:
1. 2 ASP. NET MVC
在 MVC 中有一个非常重要的概念"关注分离点"( Separation Of Concerns) ,就是指你在项目开发时可以只关注当前的对象,不用担心受到同项目中其它对象的干扰.微软长久以来致力于发展开发工具,希望能降低开发上的负担,因此基于 MVC 这种优秀的软件开发架构微软推出了 ASP. NETMVC,并且从第一版以来 ASP. NET MVC 就以微软公众授权开放源代码,同时 ASP. NET MVC 最大的优势就是可以通过 Visual Studio 这个庞大的开发平台来进行项目开发,而且 ASP. NET MVC 拥有非常清楚的关注分离点架构.所以,ASP. NET MVC 既拥有 MVC 优秀的架构又可以使用 Visual Studio 来建立、调试、维护开发项目,这使得对 Visual Studio 比较熟悉的人可以更容易分析和掌握 ASP. NETMVC 的核心技术.
2 ASP. NET MVC 中的数据处理
一个开发应用程序的项目中,数据的处理是最基础也是最核心的内容,ASP. NET MVC 也不例外.
首先我们要明确的一点是在 ASP. NET MVC 中,Model 负责所有与数据有关的工作,例如: 新增、删除、更改、查询等,同时 Model 的独立性非常高,所以它可以更好的专注于如何有效地提供数据访问机制、数据格式验证、商业逻辑验证等工作.
其次,当我们创建好数据模型,初次运行应用程序项目后 ASP. NET MVC 将会自动在对应的 APP_Data 目录下产生一组默认的数据库文档( * . mdf 或* . ldf) ,文档的命名规则为 aspnet - 项目名称 -日期时间. mdf,而整个项目的数据处理就是对这些数据文档的处理.
3 如何在 ASP. NET MVC 下开发数据层
微软的开发工具一向功能强大,这可以极大地降低项目开发上的负担,但在开发过程中却造成了开发人员过度依赖开发工具,反而降低了对数据库原理、网络原理、面向对象程序设计等基础知识的学习欲望.所以,充分掌握 ASP. NET MVC 下的数据库构成方式和技术特点并且能够适当调整 ASP.
NET MVC 自动生成的项目框架才能最终得到符合开发者需求的软件.
由于 ASP. NET MVC 还是基于面向对象的程序设计,因此在 Model 层上最好采用 ORM( ObjectRelational Mapping) 信息访问技术来开发.ORM 可以将结构化的关系型数据库映射成面向对象模型,在 ASP. NET MVC 中的具体体现也就是 Entity Framework.在选择采用了 Entity Framework 还是其它 ORM 开发技术后,根据项目的不同情况我们可以使用以下三种不同的数据库开发模式来进行数据库的开发:
1) 数据库优先开发模式数据库优先开发就是先进行数据库设计,以数据库里定义的数据结构为主体和依据来进行应用程序的开发.
2) 模型优先开发模式模型优先开发模式是指在 ORM 架构中先创建对象模型,应用程序的开发则依据这些对象模型,当要访问数据库时( 在 ASP. NET MVC 中) 通过 Entity Framework 数据提供者的协助就可以自动生成对应的 SQL 语句并创建完整的数据库.
3) 程序代码优先开发模式( Code first)这是一种比较新颖的开发模式,它是让开发人员直接根据项目需求先写出相关的类和属性代码也就是应用程序所需要用到的数据模型,然后通过 ORM 框架的管理再转换为实体模型.这种方法可以避免因为开发人员对数据库操作不熟悉而导致开发效率降低.
在当前较新版本的 Visual Studio 开发环境中 ASP. NET MVC 和 Entity Framework 都已经升级到第五版本,它们尤其强化了程序代码优先的开发模式.如图 3 所示,这是一段创建留言板用户信息数据模型的代码,当代码正确运行后这段程序将会在数据库中创建一个名为 UserInfo 的表格,这就和在数据库开发平台下创建数据表是一样的.当所有项目当中的要用到的数据模型都创建完毕,实际也就意味着我们已经完成了项目数据库的建立.
4 ASP. NET MVC 下的 Code first 数据库开发后的数据迁移问题
在使用 Code first 生成数据库后当数据库发生更改时,运行程序就会出现数据已更改的问题,这时可以删除数据库重新生成解决但是之前的数据就无法保留,为了保留之前的数据库数据,我们需要使用到 Code first 数据迁移.
首先,如果需要更改数据结构,必须是先更改 Model 类,然后使用 Code firs 数据迁移,如果直接先更改了数据库则使用数据迁移会报错.
其次,如果在项目中我们只是引用的 EF5. 0( Entity Framework5) 就不能达到直接安装 EF5 的效果同样无法完成数据迁移,这时我们就需要先安装 EF5. 0 执行此命令"Install - Package EntityFrame-work - Version 5. 0. 0"安装 EF5. 0,安装后 Model 类下会出现 packages. config( 如图 4) .现在我们就可以正常地开始操作数据迁移了.首先执行命令: Enable - MigrationsContextTypeName MovieDBContext开启 Code First 迁移.
5 结语
虽然通过使用 ASP. NET MVC 可以自动完成项目的大部分工作,极大地降低开发人员的工作负担,但对于整个 ASP. NET MVC 中最关键的一个部分 Model 来说,如果我们没有清晰的认识它是如何在 ASP. NET MVC 中运作的,不能很好地对它进行规划,我们也就没有办法做出一个好的 ASP. NETMVC 项目.
参考文献:
[1]李 园,陈世平. MVC 设计模式在 ASP. NET 平台中的应用[J]. 计算机工程与设计,2009,13: 3180 ~3184.
[2]蒋金楠. ASP. NET MVC4 框架揭秘[M]. 北京: 电子工业出版社,2013.
[3]甄 镭. NET 与设计模式[M]. 北京: 电子工业出版被,2005.
[4]黎永良,禚杜武. MVC 设计模式的改进与应用[J]. 计算机工程,2005,31( 9) : 96 ~98.
[5]赵增敏,吴 洁,唐惠康. 基于 Code First 模式的 ASP. NET MVC 应用开发[J]. 制造业自动化,2012,34( 6) : 154 ~156.
[6]孙高毅. 基于. NET 的 ASP. NET MVC 框架研究[D]. 长沙: 中南大学,2009.
[7]吴亚军. 试析 ASP. NET 的 MVC 开发模式 [J]. 电脑编程技巧与维护,2011( 14) : 77 ~78.
[8]陈晓丹,郑 毅. ASP. NET 开发环境下的 WebForm 与 MVC 设计模式[J]. 武汉工程职业技术学院学报,2009,( 06) .doi: 10. 3969 / j. issn. 1671 - 3524. 2009. 02. 011.