当前位置:文档之家› 4三层架构设计

4三层架构设计


22
四、什么是三层架构
• 业务逻辑层
//……………… 业务逻辑层包含业务对象本身以及应用于它们的规则 switch (type) { 利用业务规则对业务对象编码 case "管理员": — 从‚用户界面‛层接受请求。 loginPwd = GetAdminLoginPwd(loginID); 用户请求数据 用户请求数据 break; — 根据相关的业务规则处理请求。 case “客户": — 从‚数据访问‛层获取数据或将数据发送到‚数据访问‛ loginPwd = GetUserLoginPwd(loginID); break; — 将处理结果传递回‚表示层‛。 } 是表示层与数据访问层之间的桥梁,负责数据处理、传递 //…………………
项目模拟/实战训练 第四部分 架构设计-三层架构
1
本讲内容
一、软件架构 二、分层架构 三、为什么需要三层架构 四、什么是三层结构 五、.net中搭建三层结构 六、实体类及其实现
2
一、软件架构
• 遵循软件工程的思想
3
一、软件架构
• 架构一词来源于建筑
4
一、软件架构
• 系统分析 = 需求捕获+需求分析+架构设计
1、难以适应,需求变化 2、不易维护 3、安全性差 4、……
19
三、为什么需要三层结构
• 两层结构:
用户界面 业务逻辑 数据访问 两层结构软件模型
数据库
当数据库或 用户界面发 生改变时需 要重新开发 整个系统 当数据库或 用户界面发 生改变时不 需要重新开 发,只做简 单调整即可
• 三层结构:
用户 界面 业务 逻辑 数据 访问
34
六、实体类及其实现
表示层
表示层后台代码
用户请求 处理窗体
业务逻辑层 数据访问层
传递参数 请求数 据操作 解析实体对象 数据库
构建实体对象
返回
调用存储过程 返回行集
返回 展示数据 解析实体对象
构建实体对象或集合
35
六、实体类及其实现
• 从OOP思想考虑 –它是完全受控制的对象 –它具有面向对象的基本特征 –它可以自定义行为 –它消除了关系数据和对象之间的差异
表示层
业务逻辑层
数据访问层
2
39
六、实体类及其实现
数据访问层如何使用实体类
1
数 据 库
2
40
六、实体类及其实现
1、在解决方案上单击右键选择‚添加‛ 新建项 目
41
六、实体类及其实现
2、在 ‚实体项目上‛项目上单击右键选择‚添加‛ 新 建项
3、依次添加其他的类
42
六、实体类及其实现
4、编写实体类
需求
架构设计
架构
思维过程乱 不能系统有序进行 思维……
6
二、分层架构
• 企业级应用软件都是分层的
数据库层 用户 显示逻辑层 两层应用架构
• 两层:客户端、数据库服务器端
7
二、分层架构
商务 逻辑 层 用户 表示逻辑层 数据库层 三层应用架构
典型的三层架构
8
二、分层架构
商务 逻辑 层 用户 表示逻辑层
数据 库
三层结构软件模型
20
四、什么是三层结构
服务员 表示层 为用户提供 交互操作界面
厨师
业务逻辑层
负责关键业务的 处理和数据传递
采购员 数据访问层
实现数 据库访问
数 据 库
21
四、什么是三层架构
• 表示层
为用户提供一种交互式操作界面
— — — — — — — — 管理用户界面的呈现和行为 显示数据 捕获数据 数据验证检查 为用户提供任务指南 向‚业务规则‛发送用户输入 从‚业务规则‛接收结果 向用户显示错误
服务层
数据库层 N层应用架构
超过三个独立的代码层,叫做N层(多层)应用
9
二、分层架构
• 分层的优势 分离逻辑思维的需要 团队或多语言开发的需要 重用业务逻辑层与数据层的需要
10
二、分层架构
注意:不要弄混逻辑与物理
• 使用多层是逻辑设计 • 打包和放置是物理设计
11
三、为什么需要三层结构
逻辑判 断实现
16
三、为什么需要三层结构
public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) { //……………………. // 查询是否存在匹配的用户名和密码 管理员信息数据访问 // 查询用sql语句 string sql = string.Format( "SELECT COUNT(*) FROM Admin WHERE LogInId='{0}' AND LogInPwd='{1}'", txtLogInId.Text txtLogInPwd.Text ); 客户信息数据访问 //………. // 查询用sql语句 用户登录实现方法 string sql = string.Format( "SELECT COUNT(*) FROM Users WHERE LogInId='{0}' AND LogInPwd='{1}'",txtLogInId, txtLogInPwd); }
实体类
它是业务的基础、数据传递的载体,它与其他项目的依赖关系是什么?
43
六、实体类及其实现
5、实现三层对业务实体的依赖
表示层
业务实体
业务逻辑
数据访问层
44
七、实现分层 – 实现表示层
1、在‚表示层‛项目上单击右键选择‚添加‛ 新建项 2、在‚添加新项‚对话框中选择‛Windows 窗体‛ 3、按需求添加所需窗体,并编辑窗体
27
五、.net中如何搭建三层结构
• 如何搭建表示层、业务 逻辑层、数据访问层? • 如何实现各层之间的相 互依赖?
28
五、.net中如何搭建三层结构
• 搭建步骤
1、搭建表示层 2、搭建业务逻辑层 3、搭建数据访问层 4、添加各层之间的相互依赖
29
五、.net中如何搭建三层结构
1、文件 新建 项目 :创建一个新项目 2、在弹出的‚新建项目‛窗口中,选择Windows应用程序
创 建 表 示 层
30
五、.net中如何搭建三层结构
1、文件 新建 项目 :创建一个新项目
2、在弹出的‚新建项目‛窗口中,选择类库
创 建 业 务 逻 辑 层
31
五、.net中如何搭建三层结构
1、文件 新建 项目 :创建一个新项目 2、在弹出的‚新建项目‚窗口中,选择类库
创 建 数 据 访 问 层
32
五、.net中如何搭建三层结构
添加表示层对业务逻辑层依赖
1、右键单击‚引用‛,选择‚添加引用‛ 2、选择‚项目‛,选中‚逻辑层‛单击 确定
添加业务逻辑层对数据访问层的依赖与此类似
33
关键问题
• 三层结构中各层之间相互依赖是如何实现的? • 数据访问层的主要职责是什么? • 表示层的主要职责是什么?
24
四、什么是三层架构
• 三层之间依赖关系
表示层
业务逻辑么是三层架构
• 三层之间的数据传递方向
表示层
客 户 请 求 响 应 数 据
业务逻辑层
客 户 请 求
响 应 数 据
数据访问层
26
关键问题
• 为什么要实现分层? • 三层结构与两层结构的区别是什么? • 业务逻辑层的主要功能是什么?
17
三、为什么需要三层结构
• 两层结构
用户界面 业务逻辑 数据访问
数据库
两层结构软件模型
当数据库或 用户界面发 生改变时需 要重新开发 整个系统
18
三、为什么需要三层结构
结论是:
1、数据库访问和用户类型判断逻辑放在一起实现 2、用户界面层直接调用数据访问实现 3、整个系统功能放在同一项目中实现
两层结构的局限性:
15
三、为什么需要三层结构
public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) { int count = 0; // 数据库查询的结果 bool result = false; // 返回值,是否找到该用户 // 查询是否存在匹配的用户名和密码 if (loginType== "管理员") // 判断管理员用户 { //数据访问实现代码…………………. } else if (loginType == "客户") { //数据访问实现代码………………….. 用户登录实现方法 } return result; }
• 需要三层结构的原因
饭店
顾客 服务员 厨师 采购员
服务员只管接待客人 厨师只管烹炒客人要的美食 采购员只管按客人需求购买肉,海鲜,蔬菜 他们各负其责共同协作为客人提供美食
12
三、为什么需要三层结构
离职、请假 离职、请假 离职、请假
服务员
厨师
采购员
其他采 购员代替
其他服 务员代替
其他厨 师代替
13
23
四、什么是三层架构
• 数据访问层
//…………. 执行从数据库获取数据或向数据库发送数据的命令。 conn.Open(); 在.NET中利用来实现 SqlDataReader objReader = objCommand.ExecuteReader(); if (objReader.Read()) { 从‚业务规则‛层接收请求,构建SQL语句,从数据库获取 — 数 据 库 SQL 命令 用户请求数据 userlist.Add(objReader["LoginPwd"]); 数据或向其发送数据。 userlist.Add(objReader["UserStateId"]); } 使用存储过程获取数据,并可选用 向数据 — objReader.Dispose(); 库发送数据。 实现对数据的保存和读取操作 conn.Close(); — 将数据库查询结果返回到‚业务规则‛层。 //……………..
相关主题