2023年6月21日发(作者:)
软件2012年第33卷 第11期国际IT传媒品牌基于.NET的MVC网站多层架构分析与设计*焦梦姝,刘波(湖南农业大学 信息科学技术学院,长沙 410128)摘 要:本文以创新实验室成员编写的网站内容管理系统为背景,分析.NET的MVC框架层次结构,理解各层次的组织与协调关系,以团队管理软件TFS2010为基础,利用Visual Stdio2010与SQL Server2008等开发工具实现.NET的MVC网站多层架构设计,进一步提升创新实验室成员之间的协调组织能力,及对MVC设计模式的理解与能力培养。关键词:.NET MVC架构;MVC模式;网站管理中图分类号:TP393 文献标识码:A DOI:10.3969/.1003-6970.2012.11.004The Analysis and Design of Website Multilayer Architecture basedon .NET MVC
JIAO Meng-shu, LIU Bo(Information Science and Technology College of Hunan Agricultural University,Changsha
410128, China)【Abstract】This article’s content is management system website which wrote by innovation lab members, analyzed .NET MVC
framework structure, and understand all levels of organization and coordination relations, with team management software TFS2010 as the
foundation, and used Visual Stdio2010 and SQL Server2008 development tool to achieve .NET MVC website multilayer architecture design,
further enhance innovation laboratory coordinationorganization abilities among the members, and the understanding and ability training for
MVC design pattern.【Keywords】 MVC Framework;Model-View-Controller Design Pattern;Web Site Management 0 引言传统的软件开发大多对数据库的访问、业务逻辑及可视元素等代码进行混编,不但代码风格不美观、可读性差、耦合度高、不易维护、灵活性差、不易扩展,更谈不上软件复用。为了解决这一问题,软件工程方法提出了分层的思想,即将各个功能模块分开,放置在独立的层中,各层之间通过协作来完成整体功能[1]。多层架构模式设计更加规范,代码编写思路更清晰,而且分层设计对于系统的性能、可扩展性、可移植性、安全性等方面提供了有力的保障,而分层设计方法又以MVC设计模式最为经典。他框架模式。1.1分层架构模式的基本组成典型的分层结构开发模式将系统分成3个层次,即数据访问层、业务逻辑层、表示层[2],每个层次彼此联系又彼此独立。1 MVC分层架构模式分层架构模式将系统功能中不同操作进行分类,分别放在不同的类库(层)内,通过隔层之间的类和方法的相互调用实现整体功能操作,每一层的类、方法或组件保持高内聚性,各层之间是一种低耦合的状态,分层架构模式是很多架构模式的基础,可以在分层的基础上设计复杂的多层MVC设计模式或其图1 经典多层结构模式组成图1.2常见的服务模式1.2.1客户端-服务器模型(Client-Server,C/S)。客户端-服务器,表示通过网络连接起来的个人计算机。客户端-服务器也可用于描述两个计算机程序的关系—客户程*基金项目:国家科技部十二五科技支撑计划课题(2011BAD21B03);国家科技部国家星火计划项目(2011GA770001);国家科技部科技支撑计划课题(2012BAD35B04);湖南农业大学东方科技学院2012大学生创新性实验项目(DFCXY201217);湖南农业大学团委制作发明科创项目(201102)支助作者简介:焦梦姝(1993-) 女,湖南长沙市人,学士,方向:计算机应用;刘波(1969-),男,湖南省常德市人,工学博士,硕士生导师,方向:软件工程与数据库技术、农业信息化技术。14焦梦姝 等:基于.NET的MVC网站多层架构分析与设计*序和服务器程序。客户向服务器请求某种服务(比如请求一个文件或数据库访问),服务器满足请求并通过网络将结果传送给客户端。Internet是客户端-服务器架构的一个典型例子。1.2.2浏览器-服务器模型(Browser/Server ,B/S)。B/S模型就是用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。B/S结构简化了客户机的工作,客户机上只需要配置少量客户端软件。基于MVC分层架构设计模式进行。2 多层结构的网站设计思路2.1多层架构总框架设计整个框架包括4个层次,数据表示层(UI)、业务逻辑层(BLL)、实体层(Model)、数据访问层(DAL),每个层次之间彼此联系。通过数据访问层将数据库与程序连接,既能调用数据库中需要的资料,又能将信息独立起来,有利于数据的保存和更改。图2 B/S模型图现在这些服务模式都有分层设计的思想,即将系统的整个业务应用划分为表示层—业务逻辑层—数据访问层,这样有利于系统的开发、维护、部署和扩展。1.3 MVC设计模式的介绍MVC(Model-View-Controller)设计模式,即模型-视图-控制器模式,M指数据模型,V指用户界面,C是控制器,是为那些需要为同样的数据提供多个视图的系统而设计的。它很好的实现了数据层和表示层分离,将系统对象分为三类:Model类主要实现系统的业务逻辑和数据逻辑;View类主要实现系统的显示逻辑;Control类主要实现系统的控制流程。MVC体系保持系统的业务逻辑和数据逻辑、显示逻辑、控制逻辑的相互独立性,从而实现面向业务领域构建业务逻辑和数据逻辑,面向具体的应用领域设计控制逻辑和显示逻辑。在系统业务流程调整时,不必修改或尽可能少的修改业务逻辑和数据逻辑。在业务领域本身的业务规则、算法变化时,只修改Model类组件,从而实现系统组件的独立性。MVC模式分离了数据访问和数据表现[3,4]。图4 MVC多层架构总框架图2.2 .NET平台详细分层架构设计整个程序总共定义了15张表,建表先从实体层开始,进行表的属性定义,然后到数据访问层进行访问类的建立和数据库的调用,最后是存放其他类中操作数据的方法,存放在业务逻辑层的类库中。我们以feedback为例说明建表的过程以及相关代码。建表之后,就是前台和后台的相关模块的页面设计。图5程序详细分层结构图2.3 系统数据库设计在动态网站的设计中,数据库结构设计的好坏将直接影响图3 MVC组件体系结构图本创新实验室所做的网站内容管理系统根据设计需求采取15系统的运行效率和用户的使用效果,数据库设计的好坏是整个系统开发成功与否的关键。本系统在数据库设计过程中把数据焦梦姝 等:基于.NET的MVC网站多层架构分析与设计*库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计[5]。在网络管理系统中,需要存储数据量比较大,而且相对而言比较复杂,所以将数据存储到数据库中再调用会比直接放到网站页面要好很多。表1 数据库实例:EntNetSmart序号1234567891数据库表名tb_advertisingtb_allreviewstb_adbannertb_administratortb_articletb_Channeltb_Contentstb_Downloadstb_Feedbacktb_Linkstb_pictureextensiontb_picturestb_picturesalbumtb_PicturesFieldtb_systemlog图6 系统层次结构图2.4.1人员角色分析管理员通过登录可以进入后台管理,后台管理根据相关的板块分为了不同的管理板块,管理员可以对这些板块进行修改或添加,确保随时更新前台的相关信息。 表2 在线留言表:tb_feedback字段idusernameuserqquserteltitlecontentIslockAddtimeRecontentretime字段名编号用户昵称联系QQ联系电话留言标题留言内容是否审核留言时间回复内容回复时间类型int(+)stringstringstring
string
string
booldateTimestringdateTime?
图7人员角色功能图3 基于MVC多层结构的网站实现3.1板块功能划分内容信息管理系统分为前台和后台,前台和后台建立相应的板块,前后台相衔接。从前台登陆可以进入后台管理,在后台以管理员身份通过一些操作,可以对网站中的数据、信息进行修改更新,前台通过后台的修改而改变显示内容。 2.4 系统层次结构本创新实验室成员根据网站信息管理系统设计要求提出利用多层架构进行系统开发,系统界面设置更加规范,将数据库访问类放在类库中—;使用.cs类存放项目对象数据作为传输载体,放在类库中;另一系列.cs类存放操作数据的方法,存放在类库中;采用页面调用.cs类,.cs类通过实体.cs传输数据由完成数据访问和操作,层次结构如图6所示。16图8 内容管理系统功能图3.2 MVC各层次代码实现(1)实体层:关于表的基本属性的定义,如编号、用户名等焦梦姝 等:基于.NET的MVC网站多层架构分析与设计*字段的类型、名称的定义。 {[Serializable]publicclassFeedback {int _id;string _username;string _usertel;string _userqq;string _title;string _content;bool _islock = false;DateTime _addtime = ;string _recontent = "";DateTime _retime;#region编号主键publicint Id {set { _id = value; }get { return _id; } }#endregion(2)数据访问层:建立访问类,调用存储过程,将数据库中的信息提取出来。#region根据id查询相应在线留言信息ckGetSngFeedbackById(int
id, string Conn) {stringsql = "sp_selSngFeedbackById";SqlParameter value = newSqlParameter("@id",
, 4); = id;ion = ;List
newList
value);ck feedback = ck(); = (reader["id"].ToString());me = reader["username"].ToString();l = reader["usertel"].ToString(); = reader["userqq"].ToString(); = reader["title"].ToString();t = reader["content"].ToString(); = ean(reader["islock"].ToString());e = Time(reader["addtime"].ToString());ent = reader["recotent"].ToString(); = Time(reader["retime"].ToString());(feedback);return feedback; }#endregion(3)数据访问基础类定义数据库的连接,建立数据库与C#的关联。#region数据库连接字符串(来配置),可以动态更改connectionString支持多数据库.Public string getSqlConn(string connValue) {string conn = tionStrings
[connValue].ToString(); return conn; }#endregion4 结束语本文主要以创新实验室小组所做网站内容管理系统为背景,分析基于.NET框架下的MVC设计模式的实现过程,多层架构设计使系统开发更加规范,系统代码更加清晰,配置灵活,同时通过TFS代码管理方法,改进团队代码管理模式,提高团队软件开发质量,为学习软件开发方法打下了很好的基础。 参考文献:[1] Erich G., Richard H., Ralph J., etc. Design
Patterns:Elements of Reusable Object-Oriented software[M].北京:机械工业出版社.2004,10-35[2] 王会娥,王新萍,薛婷婷.面向对象中分层模块化设计的运用[J].软件.2011,32(3): 37-38.[3] 高源晴,庄毅,欧阳森林.基于MVC设计模式的项目管理的研究与应用[J].计算机应用研究,2006,(7):159-160.[4] 邹鹏,尚维,李一军.基于MVC模式的客户关系管理系统设计[J].计算机应用与研究,2005,(2):22-23.[5]钱雪忠;李京.数据库原理及应用(第3版)[M]. 北京:北京邮电大学出版社, 2010,69-100
2023年6月21日发(作者:)
软件2012年第33卷 第11期国际IT传媒品牌基于.NET的MVC网站多层架构分析与设计*焦梦姝,刘波(湖南农业大学 信息科学技术学院,长沙 410128)摘 要:本文以创新实验室成员编写的网站内容管理系统为背景,分析.NET的MVC框架层次结构,理解各层次的组织与协调关系,以团队管理软件TFS2010为基础,利用Visual Stdio2010与SQL Server2008等开发工具实现.NET的MVC网站多层架构设计,进一步提升创新实验室成员之间的协调组织能力,及对MVC设计模式的理解与能力培养。关键词:.NET MVC架构;MVC模式;网站管理中图分类号:TP393 文献标识码:A DOI:10.3969/.1003-6970.2012.11.004The Analysis and Design of Website Multilayer Architecture basedon .NET MVC
JIAO Meng-shu, LIU Bo(Information Science and Technology College of Hunan Agricultural University,Changsha
410128, China)【Abstract】This article’s content is management system website which wrote by innovation lab members, analyzed .NET MVC
framework structure, and understand all levels of organization and coordination relations, with team management software TFS2010 as the
foundation, and used Visual Stdio2010 and SQL Server2008 development tool to achieve .NET MVC website multilayer architecture design,
further enhance innovation laboratory coordinationorganization abilities among the members, and the understanding and ability training for
MVC design pattern.【Keywords】 MVC Framework;Model-View-Controller Design Pattern;Web Site Management 0 引言传统的软件开发大多对数据库的访问、业务逻辑及可视元素等代码进行混编,不但代码风格不美观、可读性差、耦合度高、不易维护、灵活性差、不易扩展,更谈不上软件复用。为了解决这一问题,软件工程方法提出了分层的思想,即将各个功能模块分开,放置在独立的层中,各层之间通过协作来完成整体功能[1]。多层架构模式设计更加规范,代码编写思路更清晰,而且分层设计对于系统的性能、可扩展性、可移植性、安全性等方面提供了有力的保障,而分层设计方法又以MVC设计模式最为经典。他框架模式。1.1分层架构模式的基本组成典型的分层结构开发模式将系统分成3个层次,即数据访问层、业务逻辑层、表示层[2],每个层次彼此联系又彼此独立。1 MVC分层架构模式分层架构模式将系统功能中不同操作进行分类,分别放在不同的类库(层)内,通过隔层之间的类和方法的相互调用实现整体功能操作,每一层的类、方法或组件保持高内聚性,各层之间是一种低耦合的状态,分层架构模式是很多架构模式的基础,可以在分层的基础上设计复杂的多层MVC设计模式或其图1 经典多层结构模式组成图1.2常见的服务模式1.2.1客户端-服务器模型(Client-Server,C/S)。客户端-服务器,表示通过网络连接起来的个人计算机。客户端-服务器也可用于描述两个计算机程序的关系—客户程*基金项目:国家科技部十二五科技支撑计划课题(2011BAD21B03);国家科技部国家星火计划项目(2011GA770001);国家科技部科技支撑计划课题(2012BAD35B04);湖南农业大学东方科技学院2012大学生创新性实验项目(DFCXY201217);湖南农业大学团委制作发明科创项目(201102)支助作者简介:焦梦姝(1993-) 女,湖南长沙市人,学士,方向:计算机应用;刘波(1969-),男,湖南省常德市人,工学博士,硕士生导师,方向:软件工程与数据库技术、农业信息化技术。14焦梦姝 等:基于.NET的MVC网站多层架构分析与设计*序和服务器程序。客户向服务器请求某种服务(比如请求一个文件或数据库访问),服务器满足请求并通过网络将结果传送给客户端。Internet是客户端-服务器架构的一个典型例子。1.2.2浏览器-服务器模型(Browser/Server ,B/S)。B/S模型就是用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。B/S结构简化了客户机的工作,客户机上只需要配置少量客户端软件。基于MVC分层架构设计模式进行。2 多层结构的网站设计思路2.1多层架构总框架设计整个框架包括4个层次,数据表示层(UI)、业务逻辑层(BLL)、实体层(Model)、数据访问层(DAL),每个层次之间彼此联系。通过数据访问层将数据库与程序连接,既能调用数据库中需要的资料,又能将信息独立起来,有利于数据的保存和更改。图2 B/S模型图现在这些服务模式都有分层设计的思想,即将系统的整个业务应用划分为表示层—业务逻辑层—数据访问层,这样有利于系统的开发、维护、部署和扩展。1.3 MVC设计模式的介绍MVC(Model-View-Controller)设计模式,即模型-视图-控制器模式,M指数据模型,V指用户界面,C是控制器,是为那些需要为同样的数据提供多个视图的系统而设计的。它很好的实现了数据层和表示层分离,将系统对象分为三类:Model类主要实现系统的业务逻辑和数据逻辑;View类主要实现系统的显示逻辑;Control类主要实现系统的控制流程。MVC体系保持系统的业务逻辑和数据逻辑、显示逻辑、控制逻辑的相互独立性,从而实现面向业务领域构建业务逻辑和数据逻辑,面向具体的应用领域设计控制逻辑和显示逻辑。在系统业务流程调整时,不必修改或尽可能少的修改业务逻辑和数据逻辑。在业务领域本身的业务规则、算法变化时,只修改Model类组件,从而实现系统组件的独立性。MVC模式分离了数据访问和数据表现[3,4]。图4 MVC多层架构总框架图2.2 .NET平台详细分层架构设计整个程序总共定义了15张表,建表先从实体层开始,进行表的属性定义,然后到数据访问层进行访问类的建立和数据库的调用,最后是存放其他类中操作数据的方法,存放在业务逻辑层的类库中。我们以feedback为例说明建表的过程以及相关代码。建表之后,就是前台和后台的相关模块的页面设计。图5程序详细分层结构图2.3 系统数据库设计在动态网站的设计中,数据库结构设计的好坏将直接影响图3 MVC组件体系结构图本创新实验室所做的网站内容管理系统根据设计需求采取15系统的运行效率和用户的使用效果,数据库设计的好坏是整个系统开发成功与否的关键。本系统在数据库设计过程中把数据焦梦姝 等:基于.NET的MVC网站多层架构分析与设计*库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计[5]。在网络管理系统中,需要存储数据量比较大,而且相对而言比较复杂,所以将数据存储到数据库中再调用会比直接放到网站页面要好很多。表1 数据库实例:EntNetSmart序号1234567891数据库表名tb_advertisingtb_allreviewstb_adbannertb_administratortb_articletb_Channeltb_Contentstb_Downloadstb_Feedbacktb_Linkstb_pictureextensiontb_picturestb_picturesalbumtb_PicturesFieldtb_systemlog图6 系统层次结构图2.4.1人员角色分析管理员通过登录可以进入后台管理,后台管理根据相关的板块分为了不同的管理板块,管理员可以对这些板块进行修改或添加,确保随时更新前台的相关信息。 表2 在线留言表:tb_feedback字段idusernameuserqquserteltitlecontentIslockAddtimeRecontentretime字段名编号用户昵称联系QQ联系电话留言标题留言内容是否审核留言时间回复内容回复时间类型int(+)stringstringstring
string
string
booldateTimestringdateTime?
图7人员角色功能图3 基于MVC多层结构的网站实现3.1板块功能划分内容信息管理系统分为前台和后台,前台和后台建立相应的板块,前后台相衔接。从前台登陆可以进入后台管理,在后台以管理员身份通过一些操作,可以对网站中的数据、信息进行修改更新,前台通过后台的修改而改变显示内容。 2.4 系统层次结构本创新实验室成员根据网站信息管理系统设计要求提出利用多层架构进行系统开发,系统界面设置更加规范,将数据库访问类放在类库中—;使用.cs类存放项目对象数据作为传输载体,放在类库中;另一系列.cs类存放操作数据的方法,存放在类库中;采用页面调用.cs类,.cs类通过实体.cs传输数据由完成数据访问和操作,层次结构如图6所示。16图8 内容管理系统功能图3.2 MVC各层次代码实现(1)实体层:关于表的基本属性的定义,如编号、用户名等焦梦姝 等:基于.NET的MVC网站多层架构分析与设计*字段的类型、名称的定义。 {[Serializable]publicclassFeedback {int _id;string _username;string _usertel;string _userqq;string _title;string _content;bool _islock = false;DateTime _addtime = ;string _recontent = "";DateTime _retime;#region编号主键publicint Id {set { _id = value; }get { return _id; } }#endregion(2)数据访问层:建立访问类,调用存储过程,将数据库中的信息提取出来。#region根据id查询相应在线留言信息ckGetSngFeedbackById(int
id, string Conn) {stringsql = "sp_selSngFeedbackById";SqlParameter value = newSqlParameter("@id",
, 4); = id;ion = ;List
newList
value);ck feedback = ck(); = (reader["id"].ToString());me = reader["username"].ToString();l = reader["usertel"].ToString(); = reader["userqq"].ToString(); = reader["title"].ToString();t = reader["content"].ToString(); = ean(reader["islock"].ToString());e = Time(reader["addtime"].ToString());ent = reader["recotent"].ToString(); = Time(reader["retime"].ToString());(feedback);return feedback; }#endregion(3)数据访问基础类定义数据库的连接,建立数据库与C#的关联。#region数据库连接字符串(来配置),可以动态更改connectionString支持多数据库.Public string getSqlConn(string connValue) {string conn = tionStrings
[connValue].ToString(); return conn; }#endregion4 结束语本文主要以创新实验室小组所做网站内容管理系统为背景,分析基于.NET框架下的MVC设计模式的实现过程,多层架构设计使系统开发更加规范,系统代码更加清晰,配置灵活,同时通过TFS代码管理方法,改进团队代码管理模式,提高团队软件开发质量,为学习软件开发方法打下了很好的基础。 参考文献:[1] Erich G., Richard H., Ralph J., etc. Design
Patterns:Elements of Reusable Object-Oriented software[M].北京:机械工业出版社.2004,10-35[2] 王会娥,王新萍,薛婷婷.面向对象中分层模块化设计的运用[J].软件.2011,32(3): 37-38.[3] 高源晴,庄毅,欧阳森林.基于MVC设计模式的项目管理的研究与应用[J].计算机应用研究,2006,(7):159-160.[4] 邹鹏,尚维,李一军.基于MVC模式的客户关系管理系统设计[J].计算机应用与研究,2005,(2):22-23.[5]钱雪忠;李京.数据库原理及应用(第3版)[M]. 北京:北京邮电大学出版社, 2010,69-100
发布评论