您好,欢迎访问三七文档
数据库工程之三层架构本章要点三层架构表示层UI业务逻辑层BLL数据访问层DAL自定义数据库操作类非三层架构程序分析:Example_1程序分析:Example_2容易遭到SQL注入攻击带参数化的命令对象1.数据库访问和用户登录判断逻辑放在一起实现2.用户界面层直接调用数据访问实现3.整个系统功能放在同一项目中实现非三层架构:三层架构数据库用户界面业务逻辑数据访问非三层架构软件模型数据库数据访问业务逻辑用户界面三层架构软件模型当数据库或用户界面发生改变时需要重新开发整个系统当数据库或用户界面发生改变时不需要重新开发,只做简单调整即可三层架构的基本原理服务员只管接待客人厨师只管烹炒客人要的美食采购员只管按客人需求采购肉,海鲜,蔬菜他们各负其责共同协作为客人提供美食饭店顾客服务员厨师采购员服务员厨师采购员为什么需要三层架构离职、请假其他服务员代替离职、请假离职、请假其他厨师代替其他采购员代替服务员厨师采购员三层架构软件模型表示层业务逻辑层数据访问层软件系统饭店什么是三层架构表示层(UI)业务逻辑层(BLL)数据访问层(DAL)数据库为用户提供界面负责关键业务的处理和数据传递实现数据库访问服务员厨师采购员程序分析:Example_3表示层(UI):为用户提供一种交互式操作界面表示层的作用根据用户的具体需求,为每个功能模块部署输入控件、操作控件和输出控件,并调用业务逻辑层中类的方法实现功能。业务逻辑层(BLL)是表示层与数据访问层之间的桥梁,负责数据处理、传递。表示层数据访问层业务逻辑层的作用为用户的每个功能模块,设计一个业务逻辑类。此时,需要利用相关的数据访问层类中,记录操作方法的特定集合,来实现每个逻辑功能。数据访问层(DAL)数据库用户请求数据ADO.NETSQL命令实现对数据的保存和读取操作//数据库连接方法privatestaticSqlConnectioncon(){returnnewSqlConnection(DataSource=localhost;InitialCatalog=AddressList;IntegratedSecurity=SSPI;);}//调用存储过程进行登录数据的判断的方法……数据访问层的作用使用ADO.NET中的数据操作类,为数据库中的每个表,设计数据访问类。类中实现:记录的插入、删除、单条记录的查询、记录集的查询、单条记录的有无判断等基本的数据操作方法。对于一般的管理信息软件,此层的设计是类似的,包含的方法也基本相同。此层的任务是:封装每个数据表的基本记录操作,为实现业务逻辑提供数据库访问基础。层之间的调用关系数据访问层的类,直接访问数据库,实现基本记录操作。业务逻辑层的类,调用相关的数据访问类,实现用户所需功能。表示层:部署控件后,调用业务逻辑层的类,实现功能。三层架构的优点将应用程序的功能分层后,对于固定的DBMS,数据访问层基本可以不变一旦用户的需求改变,首先修改业务逻辑层,界面层稍做改动即可。这种做法使程序的可复用性、可修改性,都得到了很好的改善,大大提高了数据库工程的效率。三层之间依赖关系表示层业务逻辑层数据访问层三层之间的数据传递方向业务逻辑层数据访问层表示层客户请求客户请求响应数据响应数据如何搭建三层架构如何搭建表示层、业务逻辑层、数据访问层?如何实现各层之间的相互依赖?我们将整个实现过程分为以下步骤搭建三层架构步骤1、搭建表示层(创建一个Windows应用程序)2、搭建业务逻辑层(类库)3、搭建数据访问层(类库)4、添加各层之间的相互依赖现在我们逐层搭建三层架构搭建表示层2、在弹出的“新建项目“窗口中,选择Windows窗体应用程序选择语言种类项目类型创建解决方案MySchool输入项目名称MySchoolUI选择项目生成路径1、文件新建项目:创建一个C#新项目搭建业务逻辑层和数据访问层2、在弹出的“添加新项目“窗口中,选择“类库”选择语言种类项目类型项目名称:MySchoolBLL1、解决方案MySchool添加新建项目添加各层之间的相互依赖:添加表示层对业务逻辑层依赖1、右键单击“引用”选择“添加引用”2、选择“项目”,选中“MySchoolBLL”单击确定添加业务逻辑层对数据访问层的依赖与此类似完成对逻辑层的引用通用类库和实体类一般情况下,三层架构除了基本的界面层、业务逻辑层和数据访问层之外,还有2个项目,即Common项目和Model项目。Common项目中一般放的是通用类,如一些共性的通用辅助类和工具方法,如数据校验、缓存处理、加解密处理等,为了让各个层之间复用,也单独分离出来,作为独立的模块使用。Model项目中存放的是实体类,来实现数据对象实体和方法分离,以便在多个层中传递。通用的三层架构模型为什么需要实体类数据库它不具备OO的优点实现数据检索比较繁琐、易出错它使数据架构暴露在业务逻辑层和表示层为了消除以上局限性我们需要使用实体类DataSet将表中的每个字段抽取为类的字段(注意类型匹配),并封装成属性,设计构造函数,来将表抽取为类。这种类就称为实体类。这个抽取过程称为对象关系映射(ORM)。什么是实体类管理员数据表简单地说就是描述一个业务实体的类,例如:管理员信息管理员信息对应的实体类对象关系映射ObjectRelationalMapping,简称ORM,是为了解决面向对象的类与关系数据库的表之间,存在的不匹配的现象,通过使用描述对象和关系之间映射的元数据,在程序中的类对象,与关系数据库的表之间建立持久的关系,用于在程序中描述数据库表。本质上就是将数据从一种形式转换到另外一种形式。为什么需要实体类从OOP思想考虑它是完全受控制的对象它具有面向对象的基本特征它可以自定义行为它消除了关系数据和对象之间的差异它为我们在关系数据库和对象之间架起一座桥梁为什么需要实体类解析实体对象构建实体对象返回行集处理窗体表示层表示层后台代码业务逻辑层数据访问层数据库用户请求传递参数展示数据返回请求数据操作调用存储过程返回解析实体对象构建实体对象或集合如何使用实体类一般情况下,在Model项目中,为数据库的每个表,都设计一个相应的实体类,这样,就相当于对每个表实体,在.NET程序中,都可以通过类对象来应用。在上面介绍的3层中,通常都会用到实体类对象。三层架构中的实体类:表示层如何使用实体类12三层架构中的实体类:业务逻辑层如何使用实体类业务逻辑层实体对象实体对象12表示层数据访问层三层架构中的实体类:数据访问层如何使用实体类数据库12作业:参照“实现代码.doc”补充完成以下步骤实现实体层新增项目MySchoolModel添加其它项目对实体项目的引用添加数据表对应的实体类编写实体类实现数据访问层实现业务逻辑层实现表示层数据编写实体类在“MySchoolModel”项目上单击右键选择“添加”新建项类名称添加User.cs实现实体层表示层业务实体业务逻辑数据访问层实现三层对实体的依赖总结并思考画出登录系统中各层之间的调用关系.三层架构中各层之间相互依赖是如何实现的?数据访问层的主要职责是什么?表示层的主要职责是什么?实体类在三层架构中的主要作用是什么?使用自定义的数据库操作类数据库操作可以分为下面四种:对数据库进行无连接的查询操作,返回多条记录.实现:DataAdapter.fill()+DataSet对数据库进行有连接查询操作,返回多条记录.实现:Command类的ExecuteReader();从数据库中检索单个值.实现:Command类的ExecuteScalar()对数据库执行更新操作实现:Command类的ExecuteNonQuery()在具体项目中,我们对这些类或方法的调用会有自己的一些特殊要求,如传入的参数要求,返回记录的个数要求等。因此为了方便程序调用,提高编程效率,往往在以上这些类和方法的基础上,编写一个自己的数据库操作类,把对数据库操作的方法封装成上面四种,这个操作类一般叫做“DBHelper”。程序分析:通讯录管理系统Example_4本章小结掌握三层架构的思想表示层UI业务逻辑层BLL数据访问层DAL掌握自定义数据库操作类作业□将程序压缩到一个文件(ZIP或RAR格式)中,用你的学号命名,上传到cstfs.gdufs.edu.cn□Deadline:2015-11-16
本文标题:三层架构1
链接地址:https://www.777doc.com/doc-2779611 .html