论文部分内容阅读
摘 要: 通过对基于.NET的B/S管理系统一般项目的分析,给出了一个基于.NET的原型系统的设计过程。分析了该原型系统的数据库设计、数据层、业务逻辑和Web页面设计。以苏州大学应用技术学院项目实验教学为例,探讨了采用基于该原型系统的实验方法和步骤。
关键词: 原型系统; 实验实训; .NET; 管理系统
中图分类号:TP393.07 文献标志码:B 文章编号:1006-8228(2013)04-60-03
Discussion on .NET development experiment based on projects
He Jun
(School of Computer Science & Technology, Computing Center, Soochow University, Suzhou, Jiangsu 215006, China)
Abstract: Through analysis of .NET B/S management system, a design process which based on .NET prototype system is presented. The prototype system is analyzed by the database design, data layer, the design of business logic and web page. Taking the experimental teaching of Applied Technology College of Soochow University as example, the method and procedure of experiment for this prototype system are discussed in this paper.
Key words: prototype system; training teaching; .Net; management system
1 基于.NET 的B/S管理系统项目分析
基于.NET B/S信息管理系统大多是基于数据库的管理系统,该类系统的开发都有统一的套路:开发语言选择VB或C#,后台数据库选择Sql Server或Access等;体系结构通常为三层架构[1~2]:表示层、应用逻辑层(即中间层)、数据层[3];从开发者的角度看,表示层对应Web页面或用户控件的集合,数据层提供直接操作数据库的全体对象集合,而应用逻辑层提供表示层和数据层之间的访问接口,该层起到承上启下的作用,采用类库方式向上提供访问接口,向下包装数据层接口。基于.NET的B/S管理系统的通用体系结构如图1所示。
三层体系结构是:表示层、应用逻辑层、数据层。在表示层,将各个功能页面划分成许多自定义用户控件或服务器控件,将控件搭建成完整的功能页面,并将数据安全访问和功能操作、设置等验证放在控件中,使用模块表进行管理,其目的是便于装配和安全控制。数据访问及业务逻辑层主要采用微软提供的标准数据应用访问块Application Blocks for .NET。该类库集成数据库的连接、方法重载返回DataSet和DataReader访问数据库、采用Execute或ExecuteScalar等方法重载更新和修改数据库,以及ExecuteXmlReade方法处理XML文档的输入输出。在本原型系统中扩充了标准数据应用访问块的功能,使其能够提供满足数据访问的要求和部分业务逻辑的实现。
在本原型系统中,都使用了数据访问层中的SqlCommand对象调用存储过程去执行数据库操作,很少直接在程序中使用SQL语句执行数据库操作。在一些例子中,可能见不到SqlCommand对象,因为存储过程名直接传递给了数据访问层相应的功能函数,但这仍将导致SqlCommand对象的创建。
2 基于.NET的B/S模式管理系统原型设计
我们选择在Web开发中用的最多的通用权限子系统作为原型系统对学生进行讲解, 通用权限子系统具有通用性,能够方便地集成到其他系统中。我们对数据库设计[4~5]、应用逻辑层和数据层、Web 页面设计、Web菜单设计一系列开发过程给予详细的分析。
2.1 数据库设计
通用权限子系统数据设计如图2所示。
⑴ 用户(User)
User表的作用是提供可访问Web应用系统的登录帐户和密码。用户是有权使用本系统的人。主要字段包括用户ID(UserID)、密码(Password)、用户级别(UserLevel)、用户名(Name),UserID为关键字。
⑵ 组(Group)
Group表的意图是提供对资源的访问权限,不同的组具有不同的访问权限,同一类用户定义为一个组。主要字段包括组名(GroupName)、读取权限(ReadRight)、添加权限(AddRight)、编辑权限(EditRight)、删除权限(DeleteRight)、审核权限(AuditRight)等,GroupName作为关键字。在我们的模型中将用户组分为两类:系统组和自定义组。系统组即系统一开始就设定的组。系统组包括:超级管理员组、普通管理员组、过客组等。
自定义组:由超级管理员用户定义的组。例如,可以定义:全权浏览组、审核组等。
⑶ 用户组成员(UserGroup)
UserGroup表是User表和Group表的关系表。GroupName和UserID是这个表的组合关键字。一个用户可以隶属于多个组。用户与组的多对多联系通过“用户组成员”UserGroup表体现。用户所在组的权限就是该用户所具有的权限。 ⑷ 系统模块(Module)
系统模块表Module是描述一个功能页面、一个菜单项或一个文件等资源的实体。Module表的字段包括模块ID(ModuleID),该字段为关键字、模块名称(ModuleName)、 Aspx或Ascx文件名称或菜单名称(FileName)、模块类型(ModuleType),常用模块类型主要分为菜单项、Web用户控件、Web服务器控件、Web页面、窗口、应用程序文件、资源文件等。
⑸ 用户组模块(GroupModule)
定义每个用户组具有某个模块的访问权限。如果某个用户组对某个模块没有相关记录,则认为该用户组对该模块没有任何权限。该表是Group表和Module表的关系表,GroupName和ModuleID为组合关键字。
2.2 数据层和业务逻辑层的设计
在基于SQL Server数据库的逻辑和物理数据库实现之后,就可用RapidTier等工具软件快速生成具有标准格式的基于VB或C#三层架构的框架源代码。我们采用RapidTier工具自动生成的项目中BuildSolution.bat批处理文件为编译产生源代码文件; InportSPs.bat批处理文件帮助产生Sql存储过程(包括所有表的Insert、Add、Delete和Modify操作)。RapidTier工具产生的三层实现模式如图3所示。
在RapidTier工具产生的解决方案中包括如下三个独立的工程。
⑴ Model工程:该项目中的类为数据实体,类中只包含属性,其属性对应数据库中表的各个字段信息。即数据实体类的实例通常对应表的一条记录,可从数据库提取记录信息到该实体对象,或用该实体对象添加或修改数据库中表的记录。
⑵ DAL工程:该项目为数据访问层,所有的类均从DaoBase基类继承,该基类提供可扩展的数据访问功能,如连接信息、共有属性等。该项目中的每一个类中的接口(即方法)提供一个表的Select、Insert、Update、Delete等数据库操作方法;Select方法通常返回DataTable或DataSet对象; Insert、Update、Delete方法返回Boolean或Integer。对于Insert和Update方法,参数类型为Model项目中的相应数据实体,该项目中实体对象的方法通常被BLL层(业务逻辑层)中的对象调用。底层操作数据库所采用的技术为微软提供的数据应用访问块Application Blocks for .NET,其中SqlHelper类中提供的共享方法直接操作数据库。
⑶ BLL工程:该层为业务逻辑层,为表示层提供访问接口。业务逻辑层控制如字段级的验证,可能还有一些不能在单个列中表示的包含不同实体或概念的更高级的业务规则等,通常都放在该层中。业务逻辑层对象通过访问DAL层中的方法返回DataTable、DataSet或数据实体到表示层。该层中的实体对象不会直接访问数据库。
三个工程的关系是:DAL工程负责直接与数据库中的数据表进行存取操作。BLL工程通过调用DAL工程中的方法来实现对数据库的间接操作,同时添加业务逻辑代码,只有BLL工程可以直接调用DAL工程中的方法,不可以跨层调用(Web即表示层不能直接访问DAL层中的对象)。 Web表示层(或桌面应用程序)通过调用BLL层的方法来实现与用户的交互,同时Web层中对输入数据进行一些初级验证。Model提供数据实体供Web、BLL、DAL三层之间进行数据传递。DAL工程、BLL工程和Model工程均为类库工程,编译后为DLL动态连接库。在ASP.NET中,它们的引用关系是WEB工程引用BLL工程和Model工程即包含Imports Tyqx.BLL和Imports Tyqx.Model语句;BLL工程引用DAL工程和Model工程,其中Tyqx为该项目的名称空间。
2.3 Web页面模版的设计
B/S管理信息系统的页面框架模式如图4所示。
页面采用框架模式,或基于VS2008的母版页方式建立;页面顶部显示系统名称,底部显示版权和其他信息,中间的左边固定显示功能菜单,中间的右边区域为功能页面的操作区。该页面框架模式为通行的B/S信息管理系统的典型界面操作模式。
对于页面的设计,首先我们遵循每个Page对应一张表的CRUD操作,在此基础上增加表关系的查询浏览和统计页面等高级功能页面。
2.4 菜单设计
采用sdmenu菜单开发工具可以非常方便地设计具有优秀界面的Web菜单。sdmenu菜单开发工具界面如图5所示。在选择好菜单模板后,编辑好自己的菜单,然后设置各菜单所对应的超连接页面,再通过该工具中Publish菜单将Java脚本代码直接发布到Web页面中,之后将脚本文件和image图片目录拷贝到Web项目所在的目录下即可。
3 基于原型设计的实验过程
3.1 让学生了解原型设计
教师通过上述原型设计系统中的数据库文档,对于三层开发模式、系统体系架构、Web设计模式、Web界面设计和Web菜单设计等应向学生详尽描述一般项目的开发过程,为了提高学生的动手能力,我们还专门将原型系统的设计过程通过视频软件记录下来,让学生边学边做,起到了良好的教学效果。在.Net综合实验实训课上,我们开发了数套从文档到代码的项目案例,以便学生课后研究并为项目开发提供参考。
3.2 以原型设计为模板,让学生参照进行开发
按照数据库简单明了和与学生有密切关系的原则选择典型项目,如表1所示。
3.3 基础代码的实现
⑴ 从典型项目中任意选择一个项目,根据给定的逻辑表结构和表的关系的文档,让学生在Sql Server 2005中设计好关系数据库; ⑵ RapidTier工具产生基于C#的三层架构原代码项目框架,然后使用Visual Studio S2008打开项目,添加ASP.NET Web应用程序,并添加相应项目的引用;
⑶ 执行RapidTier工具自动生成的InportSPs.bat批处理文件,该批处理文件用来自动建立基于每张表的CRUD操作的存储过程。项目中的数据库操作全部通过存储过程完成,避免在代码中直接使用Sql语句;
⑷ 使用sdmenu菜单开发工具开发相应管理系统的Web菜单;
⑸ 根据给定的原型系统的Web页面模版,让学生设计登录页面、各相应数据表的CRUD操作页面、部分高级功能页面等。
3.4 上交实验项目报告书
学生根据给定的步骤完成项目的开发,然后编写开发过程,完成项目架构->数据库设计->Web菜单->页面设计->代码编写这一系列的过程,让学生将这一系列过程书写成实验项目报告书,作为开发实例递交作业,把作业的成绩核定为占实训总成绩的40%。本实验项目从2009年在苏州大学应用技术学院实施以来,经过调查,有90%的学生反映教学效果非常好,另有10%学生反映原型系统有些简单,与实际项目开发有一定的距离。
4 结束语
采用原型系统的教学方法,与在计算机专业课教学中采用“以任务驱动的教学模式”[8]进行专业实训课教学具有相同的功效,能够使学生真正成为课堂的主体,使教师成为学生学习的引导者。学生由被动接受者转变为主动探究者,可促进学生的独立性,让学生从教师精选出的有限任务中,主动地获得良好的开发体验。“原型系统”教学法在任务的安排、人员分配、项目的功能定义等方面还有待进一步研究和提升。
参考文献:
[1] 黄志军,陈修亮,沈科宇.基于ADO.NET油料装备管理系统多层架构的设计与实现[J].计算机与数字工程,2007.5:167-170
[2] 王海晖,杜卉.基于Visual C#.Net教学研究项目管理系统的开发[J].计算机与数字工程,2006.10:130-132
[3] 赵宏伟,秦昌明.基于B/S 3层体系结构的软件设计方法研究[J].实验技术与管理,2011.7:64-66
[4] 严悍,张宏,许满武.基于角色访问控制对象建模及实现[J].计算机学报,2000.23(10):1064-1071
[5] 蒋玮,胡仁杰.基于角色的访问控制模型在实验室教学管理系统中的应用[J].实验室研究与探索,2007.6:4-6
[6] 皮之军,李建海,于敏等.开放式实验教学模式的研究与探索[J].实验技术与管理,2010.27(5):27-29
[7] 张勇,刘军山,黄启来.实验教学模式创新与课堂教学设计[J].实验技术与管理,2010.27(6):15-17
[8] 田海梅,张燕.基于任务驱动的计算机专业课教学模式[J].实验技术与管理,2011.5:145-147
[9] 毛玉萃,赵植武.校内IT项目实践模式的探索[J].实验室研究与探索,2007.26(3):103-104
[10] 蔡晓.高校实验室MIS分析与设计[J].实验技术与管理,2001.18(6):35-37
关键词: 原型系统; 实验实训; .NET; 管理系统
中图分类号:TP393.07 文献标志码:B 文章编号:1006-8228(2013)04-60-03
Discussion on .NET development experiment based on projects
He Jun
(School of Computer Science & Technology, Computing Center, Soochow University, Suzhou, Jiangsu 215006, China)
Abstract: Through analysis of .NET B/S management system, a design process which based on .NET prototype system is presented. The prototype system is analyzed by the database design, data layer, the design of business logic and web page. Taking the experimental teaching of Applied Technology College of Soochow University as example, the method and procedure of experiment for this prototype system are discussed in this paper.
Key words: prototype system; training teaching; .Net; management system
1 基于.NET 的B/S管理系统项目分析
基于.NET B/S信息管理系统大多是基于数据库的管理系统,该类系统的开发都有统一的套路:开发语言选择VB或C#,后台数据库选择Sql Server或Access等;体系结构通常为三层架构[1~2]:表示层、应用逻辑层(即中间层)、数据层[3];从开发者的角度看,表示层对应Web页面或用户控件的集合,数据层提供直接操作数据库的全体对象集合,而应用逻辑层提供表示层和数据层之间的访问接口,该层起到承上启下的作用,采用类库方式向上提供访问接口,向下包装数据层接口。基于.NET的B/S管理系统的通用体系结构如图1所示。
三层体系结构是:表示层、应用逻辑层、数据层。在表示层,将各个功能页面划分成许多自定义用户控件或服务器控件,将控件搭建成完整的功能页面,并将数据安全访问和功能操作、设置等验证放在控件中,使用模块表进行管理,其目的是便于装配和安全控制。数据访问及业务逻辑层主要采用微软提供的标准数据应用访问块Application Blocks for .NET。该类库集成数据库的连接、方法重载返回DataSet和DataReader访问数据库、采用Execute或ExecuteScalar等方法重载更新和修改数据库,以及ExecuteXmlReade方法处理XML文档的输入输出。在本原型系统中扩充了标准数据应用访问块的功能,使其能够提供满足数据访问的要求和部分业务逻辑的实现。
在本原型系统中,都使用了数据访问层中的SqlCommand对象调用存储过程去执行数据库操作,很少直接在程序中使用SQL语句执行数据库操作。在一些例子中,可能见不到SqlCommand对象,因为存储过程名直接传递给了数据访问层相应的功能函数,但这仍将导致SqlCommand对象的创建。
2 基于.NET的B/S模式管理系统原型设计
我们选择在Web开发中用的最多的通用权限子系统作为原型系统对学生进行讲解, 通用权限子系统具有通用性,能够方便地集成到其他系统中。我们对数据库设计[4~5]、应用逻辑层和数据层、Web 页面设计、Web菜单设计一系列开发过程给予详细的分析。
2.1 数据库设计
通用权限子系统数据设计如图2所示。
⑴ 用户(User)
User表的作用是提供可访问Web应用系统的登录帐户和密码。用户是有权使用本系统的人。主要字段包括用户ID(UserID)、密码(Password)、用户级别(UserLevel)、用户名(Name),UserID为关键字。
⑵ 组(Group)
Group表的意图是提供对资源的访问权限,不同的组具有不同的访问权限,同一类用户定义为一个组。主要字段包括组名(GroupName)、读取权限(ReadRight)、添加权限(AddRight)、编辑权限(EditRight)、删除权限(DeleteRight)、审核权限(AuditRight)等,GroupName作为关键字。在我们的模型中将用户组分为两类:系统组和自定义组。系统组即系统一开始就设定的组。系统组包括:超级管理员组、普通管理员组、过客组等。
自定义组:由超级管理员用户定义的组。例如,可以定义:全权浏览组、审核组等。
⑶ 用户组成员(UserGroup)
UserGroup表是User表和Group表的关系表。GroupName和UserID是这个表的组合关键字。一个用户可以隶属于多个组。用户与组的多对多联系通过“用户组成员”UserGroup表体现。用户所在组的权限就是该用户所具有的权限。 ⑷ 系统模块(Module)
系统模块表Module是描述一个功能页面、一个菜单项或一个文件等资源的实体。Module表的字段包括模块ID(ModuleID),该字段为关键字、模块名称(ModuleName)、 Aspx或Ascx文件名称或菜单名称(FileName)、模块类型(ModuleType),常用模块类型主要分为菜单项、Web用户控件、Web服务器控件、Web页面、窗口、应用程序文件、资源文件等。
⑸ 用户组模块(GroupModule)
定义每个用户组具有某个模块的访问权限。如果某个用户组对某个模块没有相关记录,则认为该用户组对该模块没有任何权限。该表是Group表和Module表的关系表,GroupName和ModuleID为组合关键字。
2.2 数据层和业务逻辑层的设计
在基于SQL Server数据库的逻辑和物理数据库实现之后,就可用RapidTier等工具软件快速生成具有标准格式的基于VB或C#三层架构的框架源代码。我们采用RapidTier工具自动生成的项目中BuildSolution.bat批处理文件为编译产生源代码文件; InportSPs.bat批处理文件帮助产生Sql存储过程(包括所有表的Insert、Add、Delete和Modify操作)。RapidTier工具产生的三层实现模式如图3所示。
在RapidTier工具产生的解决方案中包括如下三个独立的工程。
⑴ Model工程:该项目中的类为数据实体,类中只包含属性,其属性对应数据库中表的各个字段信息。即数据实体类的实例通常对应表的一条记录,可从数据库提取记录信息到该实体对象,或用该实体对象添加或修改数据库中表的记录。
⑵ DAL工程:该项目为数据访问层,所有的类均从DaoBase基类继承,该基类提供可扩展的数据访问功能,如连接信息、共有属性等。该项目中的每一个类中的接口(即方法)提供一个表的Select、Insert、Update、Delete等数据库操作方法;Select方法通常返回DataTable或DataSet对象; Insert、Update、Delete方法返回Boolean或Integer。对于Insert和Update方法,参数类型为Model项目中的相应数据实体,该项目中实体对象的方法通常被BLL层(业务逻辑层)中的对象调用。底层操作数据库所采用的技术为微软提供的数据应用访问块Application Blocks for .NET,其中SqlHelper类中提供的共享方法直接操作数据库。
⑶ BLL工程:该层为业务逻辑层,为表示层提供访问接口。业务逻辑层控制如字段级的验证,可能还有一些不能在单个列中表示的包含不同实体或概念的更高级的业务规则等,通常都放在该层中。业务逻辑层对象通过访问DAL层中的方法返回DataTable、DataSet或数据实体到表示层。该层中的实体对象不会直接访问数据库。
三个工程的关系是:DAL工程负责直接与数据库中的数据表进行存取操作。BLL工程通过调用DAL工程中的方法来实现对数据库的间接操作,同时添加业务逻辑代码,只有BLL工程可以直接调用DAL工程中的方法,不可以跨层调用(Web即表示层不能直接访问DAL层中的对象)。 Web表示层(或桌面应用程序)通过调用BLL层的方法来实现与用户的交互,同时Web层中对输入数据进行一些初级验证。Model提供数据实体供Web、BLL、DAL三层之间进行数据传递。DAL工程、BLL工程和Model工程均为类库工程,编译后为DLL动态连接库。在ASP.NET中,它们的引用关系是WEB工程引用BLL工程和Model工程即包含Imports Tyqx.BLL和Imports Tyqx.Model语句;BLL工程引用DAL工程和Model工程,其中Tyqx为该项目的名称空间。
2.3 Web页面模版的设计
B/S管理信息系统的页面框架模式如图4所示。
页面采用框架模式,或基于VS2008的母版页方式建立;页面顶部显示系统名称,底部显示版权和其他信息,中间的左边固定显示功能菜单,中间的右边区域为功能页面的操作区。该页面框架模式为通行的B/S信息管理系统的典型界面操作模式。
对于页面的设计,首先我们遵循每个Page对应一张表的CRUD操作,在此基础上增加表关系的查询浏览和统计页面等高级功能页面。
2.4 菜单设计
采用sdmenu菜单开发工具可以非常方便地设计具有优秀界面的Web菜单。sdmenu菜单开发工具界面如图5所示。在选择好菜单模板后,编辑好自己的菜单,然后设置各菜单所对应的超连接页面,再通过该工具中Publish菜单将Java脚本代码直接发布到Web页面中,之后将脚本文件和image图片目录拷贝到Web项目所在的目录下即可。
3 基于原型设计的实验过程
3.1 让学生了解原型设计
教师通过上述原型设计系统中的数据库文档,对于三层开发模式、系统体系架构、Web设计模式、Web界面设计和Web菜单设计等应向学生详尽描述一般项目的开发过程,为了提高学生的动手能力,我们还专门将原型系统的设计过程通过视频软件记录下来,让学生边学边做,起到了良好的教学效果。在.Net综合实验实训课上,我们开发了数套从文档到代码的项目案例,以便学生课后研究并为项目开发提供参考。
3.2 以原型设计为模板,让学生参照进行开发
按照数据库简单明了和与学生有密切关系的原则选择典型项目,如表1所示。
3.3 基础代码的实现
⑴ 从典型项目中任意选择一个项目,根据给定的逻辑表结构和表的关系的文档,让学生在Sql Server 2005中设计好关系数据库; ⑵ RapidTier工具产生基于C#的三层架构原代码项目框架,然后使用Visual Studio S2008打开项目,添加ASP.NET Web应用程序,并添加相应项目的引用;
⑶ 执行RapidTier工具自动生成的InportSPs.bat批处理文件,该批处理文件用来自动建立基于每张表的CRUD操作的存储过程。项目中的数据库操作全部通过存储过程完成,避免在代码中直接使用Sql语句;
⑷ 使用sdmenu菜单开发工具开发相应管理系统的Web菜单;
⑸ 根据给定的原型系统的Web页面模版,让学生设计登录页面、各相应数据表的CRUD操作页面、部分高级功能页面等。
3.4 上交实验项目报告书
学生根据给定的步骤完成项目的开发,然后编写开发过程,完成项目架构->数据库设计->Web菜单->页面设计->代码编写这一系列的过程,让学生将这一系列过程书写成实验项目报告书,作为开发实例递交作业,把作业的成绩核定为占实训总成绩的40%。本实验项目从2009年在苏州大学应用技术学院实施以来,经过调查,有90%的学生反映教学效果非常好,另有10%学生反映原型系统有些简单,与实际项目开发有一定的距离。
4 结束语
采用原型系统的教学方法,与在计算机专业课教学中采用“以任务驱动的教学模式”[8]进行专业实训课教学具有相同的功效,能够使学生真正成为课堂的主体,使教师成为学生学习的引导者。学生由被动接受者转变为主动探究者,可促进学生的独立性,让学生从教师精选出的有限任务中,主动地获得良好的开发体验。“原型系统”教学法在任务的安排、人员分配、项目的功能定义等方面还有待进一步研究和提升。
参考文献:
[1] 黄志军,陈修亮,沈科宇.基于ADO.NET油料装备管理系统多层架构的设计与实现[J].计算机与数字工程,2007.5:167-170
[2] 王海晖,杜卉.基于Visual C#.Net教学研究项目管理系统的开发[J].计算机与数字工程,2006.10:130-132
[3] 赵宏伟,秦昌明.基于B/S 3层体系结构的软件设计方法研究[J].实验技术与管理,2011.7:64-66
[4] 严悍,张宏,许满武.基于角色访问控制对象建模及实现[J].计算机学报,2000.23(10):1064-1071
[5] 蒋玮,胡仁杰.基于角色的访问控制模型在实验室教学管理系统中的应用[J].实验室研究与探索,2007.6:4-6
[6] 皮之军,李建海,于敏等.开放式实验教学模式的研究与探索[J].实验技术与管理,2010.27(5):27-29
[7] 张勇,刘军山,黄启来.实验教学模式创新与课堂教学设计[J].实验技术与管理,2010.27(6):15-17
[8] 田海梅,张燕.基于任务驱动的计算机专业课教学模式[J].实验技术与管理,2011.5:145-147
[9] 毛玉萃,赵植武.校内IT项目实践模式的探索[J].实验室研究与探索,2007.26(3):103-104
[10] 蔡晓.高校实验室MIS分析与设计[J].实验技术与管理,2001.18(6):35-37