ASP.NET MVC软件架构模式在学生实训管理系统的应用

2015-01-29 02:57:54丁春莉
电子设计工程 2015年13期
关键词:视图应用程序管理系统

陈 辉,丁春莉,孙 悦

(陕西交通职业技术学院 陕西 西安 7100180)

软件架构模式[1](Design pattern)是一套比较通用的软件开发流程和代码编写规范,也是很多编程设计人员的代码设计经验总结。使用软件架构模式的目的是为了有效的组织程序架构,提高代码的可重用性、保证代码可靠性。

目前有多种软件构建模式被开发者使用,例如三层框架模式、Struts模式和MVC开发模式,其中MVC开发模式是Trygve Reenskaug提出的一种开发模式,最早出现在Smalltalk中,后来普遍用于Java开发中,近年来基于Java的Web开发中的主流开发模式都是基于MVC的软件架构模式。在Java的开源框架中,著名的Struts架构就是MVC模式典型应用。由于MVC软件架构模式的优秀特性,微软也在VS2008的ASP.NET的开发中开始支持ASP.NET MVC开发模式,该模式是ASP.NET WebForms后的又一种开发方式。它提供了一系列优秀特性,使ASP.NET开发人员拥有了另一个选择。

在.NET平台下的ASP.NET MVC解决方案,不但具备ASP.NET的易用性,而且也继承了MVC的优秀架构,大大降低了开发复杂度,JavaWeb开发框架Struts要更直观,更容易上手。也对Ajax技术有更好的支持[2]。

ASP.NET MVC要优于Java平台上的Struts和Struts2。使用Struts实现MVC时,除了要写一堆ActionForm、Action和ActionResult外,还需要进行各种复杂的xml映射配置文件。Struts2虽然不用再写ActionForm,并且降低了侵入度 (其实Struts2和Struts关系不大,而基本可以认为是WebWork的后续版本),但是仍无法避免xml配置文件。

微软提出的.NET框架,是基于微软开发集成工具Visual Stdio中应用的开发架构,可以只用在微软的主流开发语言C#、J#、VB等中。可以比较方便跨平台移植,具有较高的开发效率、部署简单及支持软件自动更新等特点,逐渐成为各类系统开发工具的首选[3]。我院开发学生实训管理系统系统中应用了MVC开发技术,重复的利用这种技术的分层开发的特点,开发小组分工合作,开发效率较以往项目提高了30%以上。并且开发完成的项目的代码质量较高,软件也具有较好的健壮性。

1 MVC软件架构模式

MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为3个基本部分:模型(Model),视图(View)和控制器(Controller),基本结构如图 1所示。

图1 MVC模型的基本结构Fig.1 Basic structure of the MVCmodel

MVC框架组件的基本功能如下[4]:

1)模型对象的部分应用程序实现的逻辑应用程序的数据域,封装应用程序状态,并呈现应用程序的功能。通常,模型对象检索和模型状态存储在一个数据库中。例如,一个产品对象可能会从数据库中检索信息,操作它,然后写回产品的更新信息表在SQL Server数据库。

2)视图是显示的组件应用程序的用户界面(UI)。视图通常可以表示模型,并且可以向控制器发送用户的输入,允许控制器选择不同的视图进行操作。通常,这个UI创建从模型数据。 一个例子将是一个产品表的编辑视图显示文本框,下拉列表,根据当前状态的复选框产品对象。

3)控制器的组件处理用户交互,使用模型,并最终选择一个视图显示UI的呈现。 在MVC应用程序中,视图只显示信息;控制器处理和响应用户输入和交互。例如,控制器处理query-string值,并将这些值传递给模型,进而可能使用这些值来查询数据库。

MVC模式可以帮助您创建单独的应用程序应用程序的不同方面(输入逻辑、业务逻辑和UI逻辑),同时提供这些元素之间的松散耦合。3个主要组件之间的松散耦合的MVC应用程序也促进并行开发。

采用MVC的软件设计模式的目的是关注点分离,不同的开发人员可以专注于架构中的不同位置,例如,一个开发人员可以在视图中,第二个开发人员可以使用控制器逻辑,和第三个开发人员可以专注于业务逻辑的模型。MVC架构主要的优点集中在以下几个方面[5-6]:

首先,采用这种模式可以将数据与业务逻辑从界面层中分离出来,多个视图可以同时共享一个模型,这样可以极大提高代码的重用,提高编程的效率。在开发中可以更好的进行分工,有利于提高软件的开发质量。

第二,在视图和控制器中封装的业务逻辑,与具体的底层数据库没有直接的关联,只有模型层封装了对具体数据库访问的逻辑,如果进行数据库移植就,就只要改变模型中具体的访问代码,无需改变视图和控制器,因此可以提高程序的可维护性。

2 学生实训管理系统的软件构架和系统设计

在学生实训管理系统是一个基于B/S结构的WEB应用程序,主要功能是对学生上机实训的作业发布管理、作业提交管理、作业考评管理、考勤管理、在线考试管理等功能。该应用开发的目标主要是为了在实训机房中系统地管理实训整个过程,改变以往教师每次布置作业后学生完成练习后提交作业,这样的过程相互不关联,没有系统管理的过程,不能很好地评估一门课程在整个学期中实训的情况(包括学生实训考勤、教师的布置的上机任务和学生的上机提交作业等等)。整个系统采用基于MVC4框架的ASP.NET进行开发,开发环境采用Visual Studio 2010,后台数据库使用SQL Sever2005。系统的软件构架如图2所示。

图2 学生实训管理系统的软件架构Fig.2 Students practice management system software architecture

在学生实训管理系统软件设计中,采用MVC构架进行系统设计,首先进行系统分析,设计的步骤是从底层开始,首先设计是完成数据访问设计,在此基础上进行模型的设计和实现,然后以此为基础设计控制器,最后完成视图的设计。系统的功能模块如图3所示。

图3 系统功能模块图Fig.3 System functional block diagram

根据系统功能需求分析,划分了相应的系统功能模块,在vs2010中使用ASP.NET MVC4框架创建WEB应用程序进行开发,系统框架物理结构图如4所示。

3 MVC系统架构实现

3.1 Model实现

Model对象表示实体类,在ASP.NET MVC框架中,模型是负责应用程序或业务逻辑的应用部件,模型类并不直接处理HTTP的请求,也不生成HTTP的输出,模型通常是使用数据库访问类获取所需要的数据,并对数据根据需要执行相应的业务逻辑,并将数据提交给控制器[7]。

在学生实训管理系统开发中,首先创建模型类的抽象基类Entity,在Entity中封装了数据库访问的代码,主要的模型类包括:

图4 系统框架物理结构图Fig.4 System framework of physics charts

1)学生(Student)

2)教师(Teacher)

3)实训作业对象(TrainWork)

4)实训考试试卷(TrainPaper)

5)学生成绩(StudentScore)

这些模型类与数据库的表相对应。主要用来对数据库相应的数据表进行操作。基本数据库操作包括数据库表的增、删、改、查操作,在Entity类中添加4个抽象方法,模型类实现Entity抽象类的虚拟方法。对具体的数据表进行操作。

3.2 控制器的实现

控制器是程序的中枢,在程序中连接模型和视图,起到承上启下的作用,复制对用户的输入进行响应,根据用户的不同输入,执行相应的行为,调研模型中的业务逻辑代码,最后将结果返回给用户,控制器主要是复制数据的传送,根据业务逻辑的执行结果,决定转向不同的视图,给用户呈现不同的结果[8]。

根据程序的功能,需要对控制器进行规划设计。本程序中包括用户登陆、作业发布、作业提交、成绩发布、在线考试等模块,每个模块需要一个控制器类,在类中实现该模块所需的控制器方法。以作业发布模块控制器为例,设计如下:

将控制器和Action的框架设计以后,有助于了解网站与用户的交互,控制器与视图之间的信息传递。完成控制器和模型的设计之后,就可以进行设计的设计。

3.3 视图的实现

视图的作用是提供一个数据显示和与用户交互的窗口,在MVC中可以使用Action创建视图页面,通透Visual Studio中的“新增视图”功能,可以创建HTML页面。以这样的HTML页面为基础进行后续的开发,可以简化页面编写的工作。

在设计视图之前,通常需要设计母版页面,这种母版页面是一个模板,在页面中通常添加一些在网站中某一类页面共有的一些要素,例如LOGO,版权信息等等。在实训管理系统的作业浏览控制器WorkPubController中,包含Index、WorkList、WorkDetail 3 个 Action,每个 Action 中,控制器的作用是定位并执行Action方法,并确保它能正确执行;获取Action方法所需的参数并传递给它;捕获Action方法执行期间出现的错误;提供“WebFormViewFactory”类以便生成ASP.NET页面类型的视图。每个Action方法对应一个视图,使用VS2010可以自动创建Action对应的视图。例如,在本项目中,创建的TrainWorkDetail视图,采用实训作业对象(TrainWork)模型创建强类型视图,将传递TrainWork对象给视图模板作为它的模型类。

本项目采用在MVC4中的Razor引擎创建视图,Razor的两大主要功能是模板文件和动态编译器。ASPX的视图引擎依靠<%和%>来调用C#指令。而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活更简洁。 Razor引擎语法设计如下:

使用使用MVC模式进行系统开发,最大的优点就是便于团队开发和良好的重用性,例如在系统设计中开始设计了实训作业浏览视图,在后期根据需要,可以显示指定日期段的实训作业视图,其中模型类和初始视图不需要进行修改,只要增加一个新的指定日期段的实训作业视图就可以实现新的额功能。在这种模式下,视图、控制器和模型之间的关系示意图如图5所示。

图5 视图、控制器和模型之间的关系示意图Fig.5 View,controller and model schematic diagram

4 结论

通过在学生实训管理系统ASP.Net平台的MVC设计模式,开发小组深刻的体会到了这种开发模式相比较普通三层开发模式的优越性,特别是对合作开发的便捷性是其他开发模式不能比拟的。目前学生实训管理系统已经在我院的实训室应用了一个学期,使用效果良好,深受实训教师的好评,通过本项目的开发,开发小组也深刻的理解了这种开发模式的优越性,为今后的系统开发提供了良好的借鉴。

[1]甄镭.NET与设计模式[M].北京:电子工业出版社,2005.

[2]倪芳.基于MVC的电子商务系统的设计与实现[D].厦门:厦门大学,2014

[3]曹国民,陈根才,施文幸.基于.NET平台的电力生产管理系统建模与实现[J].计算机工程与设计,2008,29(1):170-172.CAOGuo-min,CHEN Gen-cai,SHI Wen-xing.Based on the.NET platform modeling and realization of electric power management system [J].Computer engineering and design,2008,29(1):170-172.

[4]黄保翕.ASP.NET MVC4开发指南[M].北京:清华大学出版社,2013.

[5]刘亮,霍剑青,郭玉刚,等.基于MVC的通用型模式的设计与实现[J].中国科学技术大学学报,2010,40(6):635-640.LIU Liang,HUO Jian-qing,GUO Yu-gang,et al.MVC-based design and implementation of general purpose pattern[J].Journal of China University of science and technology,2010,40(6):635-640.

[6]莫勇腾.深入浅出设计模式[M].北京:清华大学出版社,2006.

[7]伍海波,匡静,朱承学,等.基于MVC的教学资源管理系统的设计与实现[J].计算机技术与发展,2014,24(7):214-217.WU Hai-bo,KUANG Jing,ZHU Cheng-xue,et al.Teaching resources management system based on MVC design and implementation[J].Computer Technology and Development,2014,24(7):214-217.

[8] 候捷,陈硕.Stanley B.lippman.C#Primer(中文 版)[M].武汉:华中科技大学出版社,2003.

猜你喜欢
视图应用程序管理系统
基于James的院内邮件管理系统的实现
删除Win10中自带的应用程序
电脑报(2019年12期)2019-09-10 05:08:20
基于LED联动显示的违停管理系统
5.3 视图与投影
视图
Y—20重型运输机多视图
现代兵器(2017年4期)2017-06-02 15:59:24
SA2型76毫米车载高炮多视图
现代兵器(2017年4期)2017-06-02 15:58:14
海盾压载水管理系统
中国船检(2017年3期)2017-05-18 11:33:08
基于RFID的仓储管理系统实现
关闭应用程序更新提醒
电脑迷(2012年15期)2012-04-29 17:09:47