Word版可编辑-基于NET结构的软件系统框架的设计与实现精心整理.doc_第1页
Word版可编辑-基于NET结构的软件系统框架的设计与实现精心整理.doc_第2页
Word版可编辑-基于NET结构的软件系统框架的设计与实现精心整理.doc_第3页
Word版可编辑-基于NET结构的软件系统框架的设计与实现精心整理.doc_第4页
Word版可编辑-基于NET结构的软件系统框架的设计与实现精心整理.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于.NET结构的软件系统框架的设计与实现摘要:本文以教务管理系统为例,分析了基于.NET结构的软件系统框架的特点,介绍了采用ADO.NET、实体类、LINQ To SQL、ADO.NET实体框架等四种开发技术实现基于.NET结构的软件系统框架。阐述了开发过程中的存在问题,并介绍了LINQ To SQL、ADO.NET实体框架等微软最新技术。关键词:软件系统框架;LINQ To SQL;ADO.NET实体框架; 三层架构中图分类号:TP311 文献标识码:A0 引言 在构建大型的、复杂的企业级项目时,通常需要大量的代码。考虑到细化开发人员的分工、有利于代码维护和代码复用等因素,通常需要将整个应用分为若干个层次。其中,最流行的是三层架构程序设计方法。分层架构体现了“分而治之”的思想:通过将一个大的复杂的问题分解成许多小的相对简单的问题,然后逐个解决。随着高等学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。高校教务管理工作是高等教育中的一个极为重要的环节,是整个院校管理的核心和基础。面对庞大的信息量,手工处理方式已经很难跟上现代化管理步伐,随着计算机及通讯技术的迅速发展,就需要有教务管理系统来提高教务管理工作的效率。通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。教务管理系统的基本功能模块如图1所示: 图1 教务管理系统的基本功能模块本文以教务管理系统为例,从实际开发的角度来讲述几种在VS.NET 2010环境中的软件系统开发中常见的三层架构模型,以及三层架构项目的开发过程和技术要点,从而让大家轻松实现三层架构项目的开发。1 使用ADO.NET实现软件系统中的框架设计实际上,在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。三层的作用分别如下:表示层:为用户提供交互操作界面,这一点不论是对于Web还是WinForm都是如此,就是用户界面操作。我们网站展示给用户看的界面。业务逻辑层:负责关键业务的处理和数据的传递。复杂的逻辑判断和涉及到数据库的数据验证需要在此做出处理。根据传入的值返回用户想得到的值,或者处理相关的逻辑。数据访问层:见名知意,负责数据库数据的访问。主要为业务逻辑层提供数据,根据传入的值来操作数据库。用ADO.NET实现三层结构应用系统时,DataSet的主要作用是三层之间数据传递的载体。DataView是DataTable的动态数据视图,我们使用DataView的SortRowFilter属性实现数据的排序、过滤。用ADD.NET实现三层结构应用系统时,数据访问层主要使用的类有:SqlConnection类,实现数据库连接。SqlCommand类,执行SQL命令。SqlDataReader类,读取数据。SqlDataAdapter类,执行SQL命令,返回DataSet。DataSet类,封装用户请求数据。用ADD.NET执行带参数的SQL命令时,我们需要使用参数(Parameters)集合的Add方法为SQL命令添加参数,包括参数名称、参数类型。业务逻辑层实现数据传递、处理时,首先引用数据访问层,其次实例化数据访问层对象,最后调用数据访问层功能,并实现数据处理。下面我们具体介绍使用ADO.NET实现教务管理系统中的学生信息维护模块的学生信息加载功能。(1)新建一个空的解决方案:TeacherManagerSys,添加表示层、业务逻辑层、数据访问层,并添加各层之间的依赖:表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。解决方案中的文件结构如图2所示: 图2 教务管理系统解决方案中的文件结构(2)实现数据访问层,关键代码如下: public class StudentInfoService string conStr = Data Source=.;Initial Catalog=eisbook;Integrated Security=True ; public DataSet GetStudentInfo() DataSet ds = new DataSet(); SqlConnection cn = new SqlConnection(conStr); cn.Open(); string sql = select 学号,姓名,班级编号,性别,年级,政治面貌编号,民族编号,籍贯编号,身份证号,学籍编号 from 学生信息; SqlDataAdapter ad = new SqlDataAdapter(sql, cn); ad.Fill(ds); return ds; (3)实现业务逻辑层代码,关键代码如下:using TeacherManagerSysDAL;public class StduentInfoManager StudentInfoService studentService = new StudentInfoService(); public DataView GetStudentInfo() DataView dvstudent = new DataView(); dvstudent.Table = studentService.GetStudentInfo().Tables0; return dvstudent; (4) 设计表示层界面及代码,最终运行结果如图3所示: 图3 “学生信息维护”运行效果图2 使用实体类实现软件系统中的框架设计在第一节中,我们使用了DataSet实现了在三层结构中各层之间的数据传递。但是在面对对象软件的开发中,我们使用DataSet开发三层结构有许多局限:DataSet不具备良好的面向对象(OO)特性,使用起来不够直观、方便;对DataSet中的数据进行查找时容易出错。例如:我们要查询DataSet中一个表的某个值时,必须指定行索引与列名,这只是一个简单的,如果稍微复杂一点就需要遍历所有的行集。由于DataSet的核心结构与数据库的核心结构完全相同,所以它把数据结构完全暴露在表示层和业务逻辑层,增加了安全隐患。本节我们使用实体类实现软件系统中的框架设计。使用实体类的主要好处来自一个简单的事实,即实体类是完全受我们控制的对象,它具有面向对象的基本特征。我们可以自由地向实体类中添加行为(如:判断是否为空,如果为空指定默认值等,这只一个简单的扩展)。(1)实体类的实现实体类是现实实体在计算机中的表示。它贯穿于整个架构,负担着在各层次及模块间传递数据的职责。下面我们看看实体类的定义,所谓实体类,简单地说就是描述一个业务实体的“类”,业务实体直观一点理解就是整个应用系统业务所涉及的对象(例如:我们教务管理系统中的、学员信息、班级、成绩、年级等)都是业务实体,从数据的存储来讲,业务实体就是存储应用系统信息的数据表,我们将每一个数据表中的字段定义成属性,并将这些属性用一个类封装这个类就称为“实体类”,如图4所示。图4 Admin实体类(2)使用实体类构建三层结构业务实体可以认为属于业务逻辑层。当然,如果将应用层次划分得更细致一点,可以将业务实体单独作为一层称为实体层。表示层、业务逻辑层、数据访问都依赖于实体层。各层之间数据的传递主要是实体对象(业务信息封装在实体对象中)。这样,三层结构表述如下:表示层:位于最外层,离用户最近,用于显示数据和接受用户输入的数据,为用户提供一种交互式操作界面。表示层一般为Windows应用程序或Web应用程序。业务逻辑层:是表示层和数据访问层之间通信的桥梁,主要负责数据的传递和处理,例如数据有效性的检验、业务逻辑描述相关功能。业务逻辑层通常为类库。数据访问层:主要实现对数据的保存和读取操作。数据访问,可以访问关系数据库、文本文件或是XML文档。数据访问层通常为类库。业务实体层,简称为实体层。实体类,简单地说是描述一个业务实体的类,业务实体直观一点理解就是整个应用系统业务所涉及的对象,从数据存储来讲,业务实体就是存储应用系统信息的数据表,我们将每一个数据表中的字段定义成属性,并将这些属性用一个类封装,这个类就是实体类。下面我们具体使用实体类使用实体类和三层结构教务管理系统中的框架设计,具体步骤为:新建一个空的解决方案:TeacherManagerSys,添加表示层、业务逻辑层、数据访问层及业务实体,并添加各层之间的依赖:表示层依赖于业务逻辑层及业务实体,业务逻辑层依赖于数据访问层及业务实体,数据访问层依赖于业务实体。在业务实体中,为了便于开发和管理,我们将定义的实体类与数据库中的表对应,用数据库中表的名称来命名实体类,如民族表,对应到实体类NativePlace:public class NativePlace string 籍贯编号; public string 籍贯编号1 get return 籍贯编号; set 籍贯编号 = value; string 籍贯; public string 籍贯1 get return 籍贯; set 籍贯 = value; 与第一节类似,表示层、业务逻辑层、数据访问层代码基本相同,在此不再表述。3 使用LINQ实现软件系统中的框架设计长期以来,开发社区形成以下格局:面向对象与数据访问两个领域长期分裂,各自为政,编程语言中的数据类型与数据库中的数据类型形成两套体系。例如:C# 中字符串用 string 表示,SQL 中字符串用 NVarchar、Varchar、Char等表示。SQL 编码体验落后:没有智能感应,没有严格意义上的强类型和类型检查。SQL 和 XML 都有各自的查询语言,而对象没有自己的查询语言。LINQ( Language Integrated Query )即语言集成查询,是一组语言特性和API,使得你可以使用统一的方式编写各种查询。查询的对象包括XML、对象集合、SQL Server 数据库等等。LINQ 主要包含以下三部分:LINQ to Objects 主要负责对象的查询、LINQ to XML 主要负责 XML 的查询、LINQ to ADO.NET 主要负责数据库的查询。而LINQ to ADO.NET主要包含:LINQ to SQL、LINQ to DataSet、LINQ to Entities。LINQ架构如图5所示: 图5 LINQ架构如图与第1节、第2节不同,我们重新构建三层结构。如图6所示: 图6 使用LINQ的三层结构软件模型我们这样做的目的是:(1)三层结构不允许在表示层中使用任何有关数据访问的内容,因此表示层中不能使用LINQ语法直接去访问数据,即便是已经对象化的;(2)之所以把LINQ语句放在逻辑层是因为,LINQ语法能够与C#混合使用,与传统的TSQL语言有很大不同,而且把它放在逻辑层,能够更加方便的处理业务上的规则。与此同时该层访问的并非数据实体,所以仍然是建立在数据访问层之上的层;(3)在数据访问层由VS2010自动建成,将数据对象化,使我们可以使用LINQ语法与访问它。表示层的主要功能是:(1)使用LINQ把数据展示给用户;(2)INQ将用户请求数据传递到业务逻辑。业务逻辑层的主要功能是:(1)传递IQueryable;(2)对IQueryable中的数据进行处理。数据访问层的主要功能是:(1)将数据库中的数据转化为IQueryable中,(2)将IQueryable中的数据保存到数据库中。下面我们具体使用LINQ和三层结构实现学生信息管理系统实体。 下面我们使用LINQ和三层结构具体实现教务管理系统中的登录功能。具体步骤如下:(1)与第一节类似,新建一个空的解决方案:TeacherManagerSys,添加表示层、业务逻辑层、数据访问层,并添加各层之间的依赖:表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。(2)在数据访问层中添加TeachDatadbml:选中数据访问层,右击“添加”、“新建项”, “添加新项”对话框中选择“LINQ to SQL类”,输入TeachData.dbml,单击“添加”。(3)配置数据源:在“服务器资源管理器”中选择“添加连接”,并指定教务管理系统“eisbook”数据库,把“eisbook”数据库中的用户类型表等数据表拖到 LINQ to SQL 的设计器中。(4)在数据访问层添加代码,实现用户登录:TeachDataDataContext context = new TeachDataDataContext(); public bool Login(string userName, string userPwd) var user= from userInfo in context.用户类型 where userInfo.LoginId.Equals(userName) & userInfo.Loginpwd.Equals(userPwd) select userInfo; if (user.Count() = 1) return true; else return false; (5)编写业务逻辑层代码。using TeacherManagerSysDAL;using TeacherManagerSysDAL;public bool Login(string userName, string userPwd) UserService userSer = new UserService(); return userSer.Login(userName, userPwd); (6)编写表示层代码: using TeacherManagerSysBLL; UserManager userMana = new UserManager(); private void btnLogIn_Click(object sender, EventArgs e) bool f = userMana.Login(txtLogInId.Text.Trim(), txtLogInPwd.Text.Trim(); if (f = true) MainForm mainForm = new MainForm(); mainForm.Show(); this.Hide(); else MessageBox.Show(用户名或密码错误!); 通过上述编码,利用LINQ和三层结构实现了用户登录功能,对比利用实体类,代码简单很多。下面我们继续使用LINQ和三层结构实现教务管理系统的其他功能。4 使用实体框架实现软件系统中的框架设计实体框架是ADO.NET中的一组支持开发面向数据的软件应用程序技术。实体框架使开放人员可以采用特定于域的对象和属性的形式使用数据,而不必自己考虑存储这些数据的基础数据库表和列,大大提升了数据访问代码的通用性、可读性和编程效率。实体框架(Entity Framework)全称为ADO.NET Entity Framework 实体框架,是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储架构编程)来创建数据访问应用程序。目标是降低面向数据的应用程序所需的代码量并减轻维护工作。数据建模通常将数据模型分为3个部分:概念模型、逻辑模型和物理模型。基本结构如图7所示: 图7 实体框架基本结构图下面我们使用实体框架和三层结构实现教务管理系统中的课程表维护功能。具体步骤如下:(1)与前几节类似,新建一个空的解决方案:TeacherManagerSys,添加表示层、业务逻辑层、数据访问层,并添加各层之间的依赖:表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。(2)在数据访问层中添加实体数据模型:TeacherManager.edmx。选中数据访问层,右击“添加”、“新建项”,在“添加新项”对话框中选择“ADO.NET实体数据模型”,输入TeacherManager.edmx,单击“添加”。(3)配置数据源:在看到的视图数据模型向导,选择“从数据库生成”,点“下一步”。选择数据库连接,我们创建一个新连接,选择“新建连接”,填写好登陆信息并选择教务管理系统数据库“eisbook”后,点“确定”,再点“下一步”。(4)在出现的对话框中选择数据对象对话框中选择本示例用到的两个数据表:课程表、课程信息表。并确保“在模型中加入外键列”,单击“完成”按钮。经过上述步骤,在数据访问层自动添加了两个实体类:“课程信息”类、“课程表”类,同时在数据访问层自动添加了访问数据库的配置文件App.Config: (5)在数据访问层添加CourtableService.cs类,编写代码,实现课程表的查询、添加、修改、删除等方法,如查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论