2024年4月19日发(作者:)
第9卷第12期
‘
软件导刊
Vo1.9 NO.12
2010年12月
Software Guide
TWe.2010
基于ASP.NET MVC 2的三层结构
应用系统开发研究与实现
江义火
(泉州信息职业技术学院,福建泉州362000)
摘 要:介绍了MVC设计模式与三层结构及ASP.NET环境下二者之间的关系,同时采用三层结构思想对教学支持
系统进行设计,并以添加课程子功能为例对基于ASP.NET MVC 2进行.NET三层结构Web应用程序开发进行了论
述。
关键词:ASP.NET;MVC;设计模式:三层结构
中图分类号:TP311.131 文献标识码:A 文章编号:1672—7800(2010)12—0018—03
0 引言
濯Mvc^pd on1
:曲Prope e5
} j}用
App
Dat ̄
》 c。 t
ASP.NET MVC 2是微软最新的Web应用程序开发模式。
# l Controllers
n::aModels
它是MVC设计模式在.NET环境下的应用,具有支持丰富的
p: Scripts
、,ie t
路由机制、测试驱动开发(TDD)和团队应用程序开发等优点。
》 Global ̄x
{ 盏web on 9
在MVC 2基础上,采用三层结构思想进行开发,使得系统层
l
次划分更加清晰、功能更易扩展与维护、更有利于团队分工协
图2 ASP.NET MVC 2 Web应用程序项目结构
作。
1.2三层结构
三层结构是指在软件开发过程中,将整个业务应用划分为
1 MVC设计模式与三层结构
表示层、业务逻辑层和数据访问层。表示层提供应用程序的用
户界面,负责与用户交互,根据用户操作,调用业务逻辑层进行
1.1 MVC设计模式
处理:业务逻辑层是应用系统的核心部分,负责处理用户请求,
MVC(Model—View—Controller)模式是Trygve Reenskaug在
实现应用程序逻辑,完成所需要的数据处理,并将处理的结果
上世纪70年代末为开发Smalhalk平台提出的,它包括模型
返回给表示层;数据访问层主要为业务逻辑层提供数据支持,
(Mode1)、视图(View)、控制器(Controller)3个部分。图1所示,
专门与数据库进行交互。三层结构这种分层设计方式,将应用
在MVC模式中。视图是用户看得到,并与之交互的界面.它从
程序功能封装在不同的层上,每一层都可以独立修改,使得系
模型处获得数据.更新由控制器控制。视图不包含任何业务逻
统层次划分清晰。
辑的处理,它只是作为一种输出数据的方式。模型封装了系统
1.3 ASP.NET环境下的MVC 2与三层结构
的核心数据、逻辑关系和业务规则,提供了业务逻辑的处理过
图2所示,在ASP.NET MVC 2 Web应用程序项目时,MVC
程
组件分别存放在不同的目录中,Controllers、Models和Views目
蒿选择菁曩视宝图i霜显 盎示模用户型处请求理 后的结 果ll响 应请求
录分别于存放控制器类、模型类和视图文件。MVC框架要求所
有的控制器类以Controller结尾;模型通常包含有定义业务对
视图 I 状态查询 I 模型
象的类和数据库交互的逻辑;视图主要由ViewPage(.aspx)2 ̄
篓祟塞望会鬈数据传给控制器J
响应模型状态更新 r……
通知更新 ]荔蓄襄星 嵩状态
……~1处理业务流程
其他和呈现视图相关的文件构成。一般情况下,Views目录下
ll通知视图更新状态
一方法调用 ……+事件
子目录用于存放一组相关的视图文件.每一个子目录对应一个
图1 MVC组件的关系和功能
控制器类,且要求子目录名称以控制类名称的前缀命名。
作者简介:江义火(1980一),男,江西上饶人,泉州信息职业技术学院助教,研究方向为.NET软件开发、设计模式。
第12期 江义火:基于ASP.NET MVC 2的三层结构应用系统开发研究与实现
BEGl
・19・
将MVC与三层结构进行对比的话,ASP.NET MVC 2的视
图和控制器.对应于三层结构的表示层,而模型则与三层结构
中业务逻辑层和数据访问层相对应。在ASP.NET MVC 2的基
础上,采用三层结构思想进行Web应用程序设计时,要求对
MVC的模型(Mode1)进行进一步分离,将业务逻辑层、数据访
问层移植到解决方案的其它项目当中。
SELECT@result=C0UNT(-k)FROM tb_Cour¥e
WHERE Name=@courseName AND deleteState=,0 :
IF@resuh>=l一同名课程存在。lfag设为-1,否则设为1
BEGIN
ELSE
SET@fLag=一1;END
BEGIN SET@fLag=1;
_
2三层结构应用系统的设计
图3所示,系统采用三层构架思想对教学支持系统进行设
计,将MVC的模型(Mode1)进行分离,分别移植到其他项目当
中。在创建ASP.NET MVC 2 Web应用程序解决方案(TSS)的基
INSERT INTO tb
Course(Name,…)VALUES(@course・
Name,…);
SELECT@courselD=courselD FROM tbCourse
_
WHERE name=@courseName AND deleteState='0 ;
END
END
础上,添加新建实体层(Mode1)、业务逻辑层(BLL)和数据访问
层(DAL)项目。
3.2创建实体层
在解决方案中添加新建项目作为实体层(TSS.Models),用
于存放与数据库表对应实体类,其中与课程信息表(tb_Course)
所对应的实体类(CourseMode1),主要代码如下:
namespace TSS.Models//部分引用代码省略
{public class CourseModel
图3系统架构示意图
{private int courselD; //课程编号
public int CourselD{get{return courselD;}set{courselD
=value;}}
private stirng name; //课程名称,其他字段省略
public stirng Name{get{return name;}set{name=value;}}
}}
图4添加课程时序图
、
3.3创建数据访问层
图4所示,系统子功能添加课程的时序图:①控制器(Con.
troler)接收用户请求,将视图跳转到课程信息录人视图;再调
添加新建项目作为数据访问层(TSS.DAL),该层采用ADO.
NET技术与数据库服务器进行交互操作。课程访问类
(CourseDAL)对课程信息进行访问和处理,其中ExecAddCourse
()方法用数据库服务器存储过程ProAddCourse,来完成业务逻
用业务逻辑层AddCourse()方法处理用户填写好课程信息:②
业务逻辑层,调用数据访问层的ExecAddCouse()方法,同时进
行异常处理;③数据访问层,调用数据库服务器存储过程
ProAddCourse来执行课程添加操作;④数据库服务器,对课程
信息进行冲突判断和存储处理,处理结果被逐层返回给数据访
问层、业务逻辑层和表示层.最后由控制器控制视图显示处理
情况。
辑层所委托的添加课程操作。CourseDAL类文件的主要代码如
下:
using TSS.Model; //引用实体层,其他引用省略
namespace TSS.DAL
{public class CourseDal{private static stirng cons=DA.connec—
3三层结构应用系统的实现
3.1创建数据库表和存储过程
tionString;//获取连接字符串
public int ExceAddCourse(CourseModel course)
{SqlParameter[]sp=new SqlParameter[10]//新建参数
{new.qlParameter(”@courseName”,SqlDbType.VarChar,20),…
在SQL Server 2008中创建数据库TSSData,添加数据库表
和存储过程。其中,课程信息表tb
Course包括courselD(int,非
—
new SqlParameter(”C ̄lat”,SqlDbType.Int,4,nul1)};//其他参数
省略
空,自增)等12个字段;存储过程ProAddCourse实现添加课程
的功能,选进行冲突判断,再存储数据。存储过程的语句如下:
Create PROCEDURE[dbo].[ProAddCourse]
@courseName NVARCHAR(50), ……一其他参数声明省略
@fLag INT OUTPUT, -- ̄lJ断标示
sp[O].Value=course.Name:…
sp[9].Direction=ParameterDirection.Output;//部分参数赋
值省略
SqlConnection conn=new SqlConnection(cons);//创建连接
SqlCommand cmd=new SqlCommand();//创建command
AS DECLARE@result INT,@courselD VARCHAR(20);
・
20・ 软件导刊 2010矩
cmd.Connection=conn://指定连接
cmd.CommandText=”ProAddCourse”;//存储过程名
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Clear()://参数清空
if(sp!=nul1){foreach(SqlParameter param in sp)
cmd.Parameters.Add(param);}//设置参数
cmd.ExecuteNonQuery();//执行命令
int result=Convert.Tolnt32(cmd.Parameters[index].Value);
cmd.Parameters.Clear(); return result;
}}}
3.4创建业务逻辑层
添加新建项目作为业务逻辑层(TSS.BLL),该层实现对业
务逻辑的封装。课程管理类(CourseManage)处理课程信息,其
中AddCourse()方法通过调用数据访问层的ExceAddCourse()
方法,来完成控制委托的添加课程信息操作,同时对可能产生
的异常进行处理。CourseManage类文件的主要代码如下:
using TSS.DAL; //引用数据访问层,部分引用代码省略
using TSS.Model: //引用实体层
namespace TSS.BLL
{public class CourseManage
{public static int AddCourse(CourseModel course)//静态方法
{int resuh=0;try{CourseDal courseDal=new CourseDal();
result:courseDa1.ExceAddCourse(course);}//调用访问层
catch(Exception ex){_・・//异常处理代码省略}
ifnally{return result;}
}
}f
3.5创建表示层
表示层由MVC设计模式中视图和控制器组成.其中教学
支系统添加课程信息的视图和控制器的实现如下:
(1)创建视图。在Views目录下创建子目录Course,添加课
程信息视图(AddCourse.aspx)。如图5所示,添加控件,进行属
性设置和页面布局。注意规范设置控件ID,因为执行当Post回
送时,控件ID会被传给控制器。
■ ^■ ■t‘● …2 w &
蠊月 一p  ̄bgt,q H^■ :
■■■H %, I埘。
挂 醒精 晨
±7llitfl ̄月…々一… ……9 … ………P一
… 月 ・ t ■ t目 口-目 # t t■
■l●■…一2 0 ~……jo45■ t ■
r
Ⅻ 。
图5添加课程信息视图
(2)创建控制器。在Controllers目录下创建与Course目录
相对应控制器类(CourseController.cs)。在添加课程信息视图
中,点击添加按钮,控制器会捕获,并指定”[AcceptVerbs
(HttpVerbs.Post)]tt代码段后的AddCourse()方法进行处理,页
面中控件的ID一一对应传给方法的参数。AddCourse()方法先
对课程信息实例化,再调业务逻辑层处理,并根据处理结果控
制页面跳转。该控制器类主要代码如下:
…
//部分引用代码省略
using TSS.BLL: //引用业务逻辑项目
using TSS.Model://引用实体类项目 .
namespace rITI1S.Web.Controllers
{public class CourseController:Controller//控制器
{[AcceptVerbs(HttpVerbs.Post)]//响应Post的方法
public ActionResuh AddCourse(string txtCourseNalne,…)
//其他参数省略,注意与视图的控件ID对应 {CourseModel
course=new CourseModel();//课程实例
course.Name=txtCourseName://设置课程名称,其他属性设
置代码省略
ViewData[t.result”]=CourseManage.AddCourse(courselnfo);
//调用业务逻辑层方法
retum View(); //根据ViewData[..result”]值,返回视图
}
4结束语
本文给出了在ASP.NET环境下,一种将MVC 2与三层结
构结合设计方案.此方案可行且具有实际意义。运用此方案构
建的Web三层结构的应用模型,进行大型B/S应用系统设计
和开发,具有结构清晰、易于扩展、便于测试和易于维护和移植
等优点。
参考文献:
f1]徐朝辉,樊银亭.MVC设计模式在ASP.NET应用开发中的研究
和实现[J].微型电脑应用,20o7(10).
[2] ERICH GAMA.设计模式:可复用面向对象软件基础[M].北京:
机械工业出版社.2O00.
【3]CRAIG A BERRY.实用J2EE设计模式编程指南[M].北京:电子
工业出版社.2003.
[4] 涂永忠,邵晨曦,蔡维德,等.影子模式:一种新的用于测试的设
计模式[J].计算机研究与发展,2004(1).
(责任编辑:杜能钢)


发布评论