詹喆 胡宗海 姚程宽 曹立勇
【摘 要】随着互联网的高速发展,人们对Web应用开发的要求越来越高。MVC设计模式在满足界面要求的同时,使软件的计算模型独立于界面,为大型可扩展的Web应用开发提供了结构化的模型。本文以笔记管理为例,研究了基于ASP.NET MVC模式的系统开发,展示出该技术架构对页面开发模式的影响,更强调使用传统HTML,轻量化了Web开发,使系统运行效率得到了提升。
【关键词】ASP.NET;MVC;软件开发
中图分类号: TP311.52文献标识码: A文章编号: 2095-2457(2019)13-0065-003
DOI:10.19694/j.cnki.issn2095-2457.2019.13.030
Notebook Management System Based on ASP.NET MVC Mode
ZHAN Zhe HU Zong-hai YAO Cheng-kuan CAO Li-yong
(Dept. of Common Basic, Anqing Medical College, Anhui Anqing 246052, China)
【Abstract】With the rapid development of the Internet, people have higher and higher requirements for Web application development. MVC design pattern not only meets the interface requirements, but also makes the software computing model independent of the interface, which provides a structured model for the development of large scalable Web applications. This paper takes note management as an example, studies the system development based on ASP.NET MVC mode, demonstrates the impact of the technical framework on the page development mode, emphasizes the use of traditional HTML, lightweight Web development, and improves the efficiency of the system.
【Key words】ASP.NET; MVC; Software Development
0 引言
在互聯网时代,越来越多的应用趋向Web化(基于B/S模式的Web开发),桌面软件正在慢慢屈居次席。传统Web开发使用原生HTML标签与ECMAScript(JavaScript)与服务器端进行通信,服务器端调用CGI(Common Gateway Interface 通用网关接口)为请求进行服务,随着系统规模与复杂度的不断增长,这种传统开发方式暴露出性能与开发效率上的严重不足,无法满足现代Web系统开发的需要。Microsoft公司在2000年,效仿用于桌面软件开发的WinForm技术,推出了名为ASP.NET WebForm的开发技术,首次在Web开发中应用了“事件驱动”开发模型(Event Driven Development)。WebForm是一种类似桌面软件的开发技术,屏蔽掉了传统开发模式中HTTP协议的“无状态”导致的难以理解的问题,使开发效率得到了极大的提高。2007年,Microsoft公司推出ASP.NET MVC开发技术,将著名的MVC软件开发模式应用到了Web开发中,Model-Controller-View的模式将Web的整体架构分为了三个各司其职的组件。
1 ASP.NET MVC 简介
ASP.NET是微软专门针对MVC架构推出的Web开发框架,作为新一代的Web开发框架,它旨在替代ASP.NET Web Form。它良好地结合了MVC架构的高效和清晰、敏捷开发中最新潮的技术和思想与ASP.NET平台中的优良部分。
在ASP.NET MVC中,模型、视图与控制器,有了更加具体的展示。
模型代表是一系列业务相关实体的类。就像操作数据的代码一样,业务实体一般将存储在数据库中的这些数据封装起来,并执行领域相关的业务逻辑,它就像数据访问层一样,使用Entity Framework等ORM工具,辅以业务逻辑相关的代码对数据进行操作。视图在ASP.NET MVC中是一种动态生成HTML的模板,ASP.NET MVC保证了有一些视图是无法展示在界面上的,例如母版页等。控制器在ASP.NET MVC中命名以Controller结尾,负责处理模型数据以及展示视图,图1展示了基于ASP.NET MVC的笔记项目的基本结构。
与ASP.NET Web Form不同,ASP.NET MVC在项目的开发模型上是一套崭新的模型。
(1)ASP.NET MVC上不存在Web Form中一个页面对应一个后台CS代码文件的逻辑,取而代之的是让模板视图(CSHTML)专门进行界面展示,使一个视图可以给多个控制器使用。
(2)没有了Web Form中的界面设计器,在设计界面时,无法实时看到界面布局效果,如果要浏览界面效果,只能在浏览器中查看。
(3)取消了服务器控件,无法通过属性设计器针对事件进行编程,取而代之的是使用原生HTML标签。
(4)Web Form中文件所处的物理位置即页面的URL链接,而在ASP.NET MVC中,不存在URL对应某文件的概念,URL统一由独立的路由组件进行管理,通过路由寻找对应的视图与控制器,图2展示了ASP.NET MVC中的默认路由组件。
(5)由于抛弃服务器控件,回归到传统的无状态HTTP开发模式,不需要保存页面的状态,节省了空间,使页面传输性能得到了提高。
(6)对单元测试支持良好。由于框架中的核心类都是面相接口的,于是我们可以很容易地通过创建模拟接口行为的测试类,将每一个对象或函数单独测试,而不需要运行整个站点进行测试。
2 ASP.NET MVC与MVC模式开发
ASP.NET MVC基于MVC架构进行构建,对MVC的支持是内建的,可以说没有MVC,就没有ASP.NET MVC框架。下面以笔记管理为例,展示ASP.NET MVC中的MVC模式开发。
2.1 Model构建
在ASP.NET MVC的开发中,大多使用Code First这一方式进行开发,它使用“约定”式编程,先写出模型类,然后利用EF框架根据模型类在数据库中构建出相应的表。这一节我们依然以IdentityDB为例,展示Model组件的构建,以及如何根据Model生成数据库中的表。
如下图3所示,我们编写出了相应的模型类,并利用.NET提供的Attribute特性给相应的字段添加了相关约束条件。
接着在我们的数据库生成Context中添加该模型以及需要的其他模型类的DbSet,使ADO.NET Entity Framework能够在程序运行时自动地向数据库中添加相应的表。
接着我们运行程序,这时数据库中会相应地生成表,图5展示了Note表的表结构,其中表属性与Note模型类中所定义的字段约束一致。
此时使用如下代码即可以对数据库中的Note表进行操作,例如增加操作,删除操作,修改操作,与搜索操作。此后在项目中即可以方便地使用ADO.NET Entity Framework来操作Model。
AppIdentityDbContext _db=new AppIdentityDbContext();
Note note=new Note();
_db.Notes.Find(id);//搜索操作
_db.Notes.Remove(note);//删除操作
_db.Notes.Add(note);//增加操作
_db.Entry(note).State=EntityState.Modified;//更新操作
_db.SaveChanges();
2.2 View構建
视图负责向用户展示界面,并提供输入元素使用户可以输入相关信息,以笔记管理系统中的笔记添加页面为例,如图6所示。
Note视图代码片段如图7所示。
如上图代码所示,model代表当前视图所引用的模型,该模型由控制器传输到视图中,视图接着可以从Note模型中的相应字段数据,展示在界面上,同时,还可以在界面上输入元素中修改数据,通过提交行为提交到相应的控制器,由控制器将所修改数据写回到模型中,并将模型保存回数据库中。
2.3 Controller构建
控制器负责定义程序相关的行为,可以将模型数据发送到相应的视图中,也可以从视图中收集用户数据,更新相关模型,并写回数据库。
在笔记编辑页面中,我们可以在输入元素中输入文字,然后通过“保存”按钮提交页面数据到相应控制器,如图8代码片段所示,点击后页面将提交到Html.BeginForm()指定的Controller,在这里,所提交到的Controller默认情况下与视图所在的文件夹同名,即NoteController,对应的Controller中的方法与视图同名,即Create。
提交到相应的控制器后,控制器通过方法所传参数获取到用户所作的修改,然后将修改更新到模型中,如图9所示,随后控制器将模型更新回数据库。
3 结束语
本文对ASP.NET MVC开发技术的主要技术架构进行了剖析,分析了技术中所采用的架构与设计模式等,并相应地在笔记管理页面中应用了该技术,以展示出该技术架构对页面开发模式的影响。ASP.NET MVC由于需要开发人员自行使用代码对页面进行布局,使得开发人员需要对CSS、HTML等技术有着比较好的掌握。从运行效率上看,ASP.NET MVC由于更强调使用传统HTML,轻量化了Web开发,页面源代码没有过多多余或者重量级的HTML标签数据,使得系统运行效率得到了提升。
【参考文献】
[1]周文红.基于ASP.NET MVC框架的Web应用开发[J].计算机与现代化,2013(10):197-199.
[2]林乐逸.基于ASP.NET MVC和实体框架的软件项目管理平台[D].上海交通大学,2012.
[3]卢俊玮,常琳,陈昀锟.MVC模式与ASP.NET MVC框架的技术研究[J].电脑知识与技术,2010,6(19):5160-5162.
[4]叶红卫.基于ASP.NET MVC框架的Web设计[J].河北北方学院学报(自然科学版),2009,25(06):61-65.
[5]李园,陈世平.MVC设计模式在ASP.NET平台中的应用[J].计算机工程与设计,2009,30(13):3180-3184.
[6]林庆,朱翠苗,郑广成,贾洪艳,吴旻.基于ASP.NET的MVC设计模式的研究[J].计算机工程与设计,2008(01):167-169.
[7]徐朝辉,樊银亭.MVC设计模式在.NET三层结构开发中的研究和实现[J].北京电子科技学院学报,2007(02):70-73.
[8]龚薇华,王晨光,俞欢军.基于MVC模式和.NET的公司内部管理信息系统设计[J].计算机工程与设计,2007(09):2142-2144.
[9]陈晓丹,郑毅.ASP. NET开发环境下的WebForm与MVC 设计模式[J].武汉工程职业技术学院学报,2009,39-40.
[10]Adam Freeman.Pro ASP.NET MVC 5[M].Apress,2013.
[11]林乐逸.基于ASP_NETMVC和实体框架的软件项目管理平台[D].上海:上海交通大学,2013.
[12]杨晓吟.ASP.NET MVC架构与Web开发分析[J].自动化与仪器仪表,2018(07):32-35+38.