三层架构课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

三层架构使用三层结构开发数据库应用系统目标使用三层结构开发项目体会到使用三层结构开发的优势为什么需要三层结构服务员只管接待客人厨师只管烹炒客人要的美食采购员只管按客人需求采购肉,海鲜,蔬菜他们各负其责共同协作为客人提供美食顾客服务员厨师采购员饭店服务员厨师采购员为什么需要三层结构离职、请假其他服务员代替离职、请假离职、请假其他厨师代替其他采购员代替服务员厨师采购员为什么需要三层结构三层结构软件模型表示层业务逻辑层数据访问层软件系统饭店为什么需要三层结构:登录实现部分(LoginForm类)代码我们从三方面对登录实现部分代码进行分析1、界面控件数据绑定实现2、逻辑判断实现3、数据库访问实现首先我们看一下界面部分的关键代码为什么需要三层结构//登录privatevoidbtnLogIn_Click(objectsender,EventArgse){//……………..if(ValidateInput()){//调用用户验证方法isValidUser=ValidateUser(cboLogInType.Text,txtLogInId.Text,txtLogInPwd.Text,refmessage);//如果是合法用户,显示相应的窗体//………………..}}界面层实现为什么需要三层结构publicboolValidateUser(stringloginType,stringloginId,stringloginPwd,refstringmessage){intcount=0;//数据库查询的结果boolresult=false;//返回值,是否找到该用户//查询是否存在匹配的用户名和密码if(loginType==“管理员”)//判断是否是管理员用户{//数据访问实现代码………………….}elseif(loginType==学员){//数据访问实现代码…………………..}returnresult;}逻辑判断实现用户登录实现方法为什么需要三层结构publicboolValidateUser(stringloginType,stringloginId,stringloginPwd,refstringmessage){//…………………….//查询是否存在匹配的用户名和密码//查询用sql语句stringsql=string.Format(SELECTCOUNT(*)FROMAdminWHERELogInId='{0}'ANDLogInPwd='{1}',txtLogInId.TexttxtLogInPwd.Text);//……….//查询用sql语句stringsql=string.Format(SELECTCOUNT(*)FROMStudentWHERELogInId='{0}'ANDLogInPwd='{1}',txtLogInId,txtLogInPwd);}管理员信息数据访问用户登录实现方法通过分析我们得到结论是?学员信息数据访问为什么需要三层结构1、数据库访问和用户类型判断逻辑放在一起实现2、用户界面层直接调用数据访问实现3、整个系统功能放在同一项目中实现结论是:从结论可知,我们开发的两层结构应用系统有哪些局限性?为什么需要三层结构两层结构:三层结构:数据库用户界面业务逻辑数据访问两层结构软件模型数据库数据访问业务逻辑用户界面三层结构软件模型当数据库或用户界面发生改变时需要重新开发整个系统当数据库或用户界面发生改变时不需要重新开发,只做简单调整即可什么是三层结构表示层业务逻辑层数据访问层数据库为用户提供交互操作界面负责关键业务的处理和数据传递实现数据库访问服务员厨师采购员什么是三层结构表示层:为用户提供一种交互式操作界面什么是三层结构业务逻辑层是表示层与数据访问层之间的桥梁,负责数据处理、传递。用户请求数据用户请求数据//………………switch(type){case管理员:loginPwd=GetAdminLoginPwd(loginID);break;case学员:loginPwd=GetStudentLoginPwd(loginID);break;}//…………………什么是三层结构数据访问层数据库用户请求数据ADO.NETSQL命令实现对数据的保存和读取操作//………….conn.Open();SqlDataReaderobjReader=objCommand.ExecuteReader();if(objReader.Read()){studentlist.Add(objReader[LoginPwd]);studentlist.Add(objReader[UserStateId]);}objReader.Dispose();conn.Close();//……………..什么是三层结构三层之间依赖关系表示层业务逻辑层数据访问层什么是三层结构三层之间的数据传递方向业务逻辑层数据访问层表示层客户请求客户请求响应数据响应数据如何搭建三层结构如何搭建表示层、业务逻辑层、数据访问层?如何实现各层之间的相互依赖?要掌握这一切,我们将整个实现过程分为以下步骤搭建三层结构步骤1、搭建表示层(创建一个Windows应用程序)2、搭建业务逻辑层(类库)3、搭建数据访问层(类库)4、添加各层之间的相互依赖现在我们打开VSIDE环境逐层搭建三层结构搭建表示层2、在弹出的“新建项目“窗口中,选择Windows应用程序选择语言种类项目类型创建解决方案输入项目名称MySchool选择项目生成路径1、文件新建项目:创建一个新项目搭建业务逻辑层2、在弹出的“新建项目”窗口中,选择类库选择语言种类项目类型项目名称:MySchoolBLL选择项目路径选择“添入解决方案”1、文件新建项目:创建一个新项目搭建数据访问层2、在弹出的“新建项目“窗口中,选择类库选择语言种类项目类型项目名称:MySchoolDAL选择项目路径选择“添入解决方案”如何将三层中各自独立的项目产生依赖1、文件新建项目:创建一个新项目添加各层之间的相互依赖:添加表示层对业务逻辑层依赖1、右键单击“引用”选择“添加引用”2、选择“项目”,选中“逻辑层”单击确定添加业务逻辑层对数据访问层的依赖与此类似完成对逻辑层的引用为什么需要实体类数据库它不具备OO的优点实现数据检索比较繁琐、易出错它使数据结构暴露在业务逻辑层和表示层为了消除以上局限性我们需要使用实体类DataSet解析实体对象构建实体对象返回行集为什么需要实体类处理窗体表示层表示层后台代码业务逻辑层数据访问层数据库用户请求传递参数展示数据返回请求数据操作调用存储过程返回解析实体对象构建实体对象或集合为什么需要实体类从OOP思想考虑它是完全受控制的对象它具有面向对象的基本特征它可以自定义行为它消除了关系数据和对象之间的差异它为我们在关系数据库和对象之间架起一座桥梁什么是实体类管理员数据表简单地说就是描述一个业务实体的类,例如:管理员信息管理员信息对应的实体类三层结构中的实体类:表示层如何使用实体类12三层结构中的实体类:业务逻辑层如何使用实体类业务逻辑层实体对象实体对象12表示层数据访问层三层结构中的实体类:数据访问层如何使用实体类数据库12完成本章任务的步骤实现业务实体层新增项目MySchoolModels添加其它项目对实体项目的引用添加数据表对应的实体类编写实体类设计用户界面实现数据访问层实现业务逻辑层实现表示层数据绑定实现业务实体层选择语言种类项目类型输入项目名称MySchoolModels选择项目生成路径在解决方案“MySchoolPro”上单击右键选择“添加”新建项目实现业务实体层类名称在“MySchoolModels”项目上单击右键选择“添加”新建项依次添加“Admin.cs、Class.cs、Grade.cs”实现业务实体层它是业务的基础、数据传递的载体,它与其他项目的依赖关系是什么?实体类编写实体类实现业务实体层表示层业务实体业务逻辑数据访问层实现三层对业务实体的依赖设计用户界面3、按需求添加所需窗体,并编辑窗体1、在“MySchool”项目上单击右键选择“添加”新建项2、在“添加新项“对话框中选择”Windows窗体”实现数据访问层2、在“添加新项“对话框中选择”类”类名称如何实现高效的数据访问呢?我们需要掌握using语句的使用新增类有:AdminService.csStudentService.cs1、在“MySchoolDAL”项目上单击右键选择“添加”新建项实现数据访问层:用户登录1、在数据访问实现类中引用业务实体项目命名空间2、实例化SqlConnection对象,实现数据库连接3、实例化SqlCommand对象,执行SQL命令4、实例化SqlDataReader对象,读取数据5、使用实体类传递信息实现业务逻辑层2、在“添加新项“对话框中选择”类”类名称新增类有:LoginManager.cs如何实现业务逻辑功能?1、在“MySchoolBLL”项目上单击右键选择“添加”新建项实现业务逻辑层:用户登录1、在业务逻辑处理类中引用数据访问层、业务实体层命名空间2、实例化数据访问对象3、调用数据访问功能4、实现业务逻辑处理功能实现表示层数据绑定:用户登录1、在窗体后台实现类中引用业务逻辑层、业务实体层命名空间2、实例化业务逻辑处理对象和业务实体对象3、数据绑定4、调用业务逻辑层功能总结三层结构中各层之间相互依赖是如何实现的?数据访问层的主要职责是什么?表示层的主要职责是什么?实体类在三层结构中的主要作用是什么?

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功