版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、HCCE 2010HCCE 2010课程体系介绍课程体系介绍第一章第一章 企业级开发中搭建三层架构企业级开发中搭建三层架构课程地位课程地位课程目标课程目标u学习内容n三层架构的原理n使用实体类对象在三层架构之间传递数据n实现高效的数据访问层n特性、序列化和反序列化、反射nWindows服务n异常处理和单元测试u学习目标n能够搭建三层架构的系统n能够创建高效的数据访问层n能够使用实体类对象在三层架构之间传递数据n能够使用系统提供的特性,并自定义特性n能够使用序列化保存对象状态,使用反序列化构建对象n能够使用反射动态调用方法n能够创建和监视Windows服务n能够使用VSTS工具进行单元测试u实战
2、项目n综合项目:固定资产管理系统本章内容本章内容u理解三层架构的优点u三层架构中各层之间的逻辑关系和各自功能u使用三层架构搭建项目u使用DataSet作为业务实体本章目标本章目标u能够使用三层架构搭建项目框架u能够使用DataSet在三层间传递数据1.1.三层架构概述三层架构概述u现实生活中的肉类食品加工厂的场景这样做有什么好处呢?1.1 为什么需要三层架构?为什么需要三层架构?为什么需要三层架构?u顾客到商场购买肉食品u商场负责接待购买肉食品的顾客u商场从食品加工工厂批量购入食品u食品加工厂为商场提供肉食品u食品加工厂从屠宰场获取原材料u兔子在场负责提供原材料给食品加工厂 食品加工企业将整个
3、企业业务分为三部分来实现,这样做的好处是:其中一个环节发生变化,不会影响到整个企业的业务,只需要其他环节略微变化即可为什么需要三层架构?为什么需要三层架构?u没有使用三层架构时的用户登录:private void btnLogin_Click(object sender, EventArgs e) if (InputValidate()/输入验证通过输入验证通过 string message = ; if (UserValidate(txtUsername.Text.Trim(), txtPassword.Text.Trim(),ref message) /登录成功登录成功 else /登录失
4、败登录失败 MessageBox.Show(message); 为什么需要三层架构?为什么需要三层架构?u用户要求添加身份认证:业务逻辑改变以后,会带来什么问题?private void btnLogin_Click(object sender, EventArgs e) if (InputValidate()/输入验证通过输入验证通过 string message = ; /方法调用多传递了一个参数方法调用多传递了一个参数 if (UserValidate(txtUsername.Text.Trim(), txtPassword.Text.Trim(),cboRole.Text.Trim()
5、, ref message) /登录成功登录成功 else MessageBox.Show(message); 1.2 1.2 三层架构是什么?三层架构是什么? 三层架构是基于模块化程序设计的思想,为实现分解应用程序的需求,而逐渐形成的一种标准模式的模块划分方法。三层架构包含:表现层(UI):UserInterface数据访问层(DAL):Data Access Layer业务逻辑层(BLL):Business Logic Layer三层架构是什么?三层架构是什么?优点一:不必为了业务逻辑上的微小变化而导致整个程序的修改,只需要修改商业逻辑层中的一个函数或一个过程优点二:增强了代码的可重用性优
6、点三:便于不同层次的开发人员之间的合作u三层架构的优点三层架构的优点: : 三层架构是什么?三层架构是什么?u表现层(UI):主要实现和用户的交互u业务逻辑层(BLL) :用于对上下交互的数据进行逻辑处理u数据访问层 (DAL) :用于实现与数据库的交互和访问将业务实体与业务方法分离,作为一个单独的层将一些会重用的方法封装在独立的类里,使代码重用性更强三层架构各层的功能:三层架构各层的功能:1.3 1.3 三层架构各层之间的关系三层架构各层之间的关系表示层业务逻辑层数据访问层u各层之间存在依赖关系:表现层依赖业务逻辑层,业务逻辑层依赖于数据访问层三层架构各层之间的关系三层架构各层之间的关系表现
7、层将用户的请求发送给业务逻辑层,业务逻辑层通过数据访问层来处理数据,然后接受到数据访问层处理的数据,再通过一定的业务规则处理返回给用户u三层架构的数据流向三层架构的数据流向小结小结1 1回顾前面的食品加工厂案例,说出食品加工厂在三层架构里位于哪一层?三层架构一定是三个项目吗?2.2.如何搭建三层架构?如何搭建三层架构?创建表现层创建数据操作层 创建业务逻辑层创建业务实体建立依赖关系u搭建三层架构有五个步骤2.1 2.1 创建表现层创建表现层 u先创建一个空白解决方案创建表现层创建表现层u在解决方案里添加一个WinForm程序:WinUI2.2 2.2 创建数据操作层创建数据操作层 u在解决方案
8、里添加一个C#类库项目:SqlServerDAL2.3 2.3 创建业务逻辑层创建业务逻辑层 u在解决方案里添加一个C#类库项目:BLL2.4 2.4 建立业务实体建立业务实体 u在解决方案里添加一个C#类库项目:Model2.5 2.5 建立三层之间的依赖关系建立三层之间的依赖关系表现层(UI)依赖于业务逻辑层(BLL)依赖于数据访问层(DAL)业务实体(Model)依赖于依赖于依赖于 建立三层之间的依赖关系建立三层之间的依赖关系u右键Model项目,点“生成”。生成成功以后,右键SqlServerDAL项目下的“引用”,选择“添加引用”命令 添加引用后的效果建立三层之间的依赖关系建立三层之
9、间的依赖关系u为业务逻辑层添加对于数据访问层的依赖。建立三层之间的依赖关系建立三层之间的依赖关系思考:数据访问层主要是用来访问数据库并且得到数据,那么保存数据的方式有很多种,比如保存到DataReader中,保存进DataSet中,保存进List中等,你要把数据保存进哪里呢?如果界面层显示数据用ListView控件,那么你的数据访问层用什么来保存数据更方便?如果界面层显示数据用DataGridView控件,那么你的数据访问层用什么来保存数据更方便?建立三层之间的依赖关系建立三层之间的依赖关系三层架构里表现层可以直接引用数据操作层吗?三层架构里允许重复引用吗?小结小结2 2三层架构包含哪三层?三
10、层架构各层之间如何依赖?搭建三层架构的步骤是哪几步?3.3.使用使用DataSetDataSet在三层之间传递数据在三层之间传递数据实体对象的类型DataSetEntity Class如何三层架构里使用如何三层架构里使用DataSetDataSet传递数据传递数据 创建数据访问层的方法,填充DataSet 创建业务逻辑方法获取DataSet的方法,得到DataSet对象表现层里通过业务逻辑层的业务方法获取DataSet对象,呈现给用户。u如何三层架构里使用如何三层架构里使用DataSetDataSet传递数据传递数据3.1 3.1 创建数据访问层的方法创建数据访问层的方法public clas
11、s CustomerDAL SqlConnection connection = new SqlConnection(server=.;database=CRM;uid=sa;pwd=180705); public DataSet GetAllCustomers() DataSet dsCust = new DataSet(); SqlDataAdapter daCust = new SqlDataAdapter(select * from Customers, connection); daCust.Fill(dsCust, Customers); return dsCust; 数据访问层里
12、添加的数据访问方法,返回DataSet 配置文件使用配置文件使用u一般程序在升级时有可能会更改连接数据库的字符串,在不修改源代码的原则下可以使用配置文件来定义连接数据库的字符串,具体步骤如下:n在UI层添加新建项,在弹出的选择框选择应用程序配置文件n在配置文件中,有规定好了的节点,那么我们在节点中添加子节点,在ConnectionStrings节点中添加,这样如果程序升级我们只需要改变url的值即可n在DAL层添加引用.net中的System configurationn在DBHelper中导入命名空间System.Configuration,获取URL的代码为: String urlurl=
13、 =ConfigurationManager.ConnectionStrings“url的名字.ToString();.ToString();关于关于DBHelperDBHelper的设计可以让的设计可以让URLURL是静态的变量,那么是静态的变量,那么DBHelperDBHelper也是静态的类也是静态的类,在该类的静态构造方法中为静态变量赋值,在该类的静态构造方法中为静态变量赋值3.2 3.2 创建业务逻辑层的方法创建业务逻辑层的方法public class CustomerBLL/数据访问类的实例数据访问类的实例 CustomerDAL cust = new CustomerDAL();
14、/业务逻辑方法,通过调用数据访问层的数据访问方法获取所有客户的业务逻辑方法,通过调用数据访问层的数据访问方法获取所有客户的/信息信息 public DataSet GetCustomers() return cust.GetAllCustomers(); 业务逻辑层里添加的业务方法,获取数据访问层里返回的DataSet,并将传递给表现层3.3 3.3 表现层获取数据表现层获取数据private void CustomerFrm_Load(object sender, EventArgs e)CustomerBLL cust = new CustomerBLL();/业务逻辑类的实例业务逻辑类的实例DataSet dsCust = cust.GetCustomers();/调用业务逻辑类的方法调用业务逻辑类的方法/结果在结果在DataGridView显示显示dgvCustomer.DataSource = dsCust.Tables0; 小结小结3 3uDataSet作为业务对象在三层里每一层之间传递数据,所以每一层里都需要引入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季初中新生军训 军事常识与国防法规教学方案
- 防爆开关柜行业2026年创新驱动发展研究报告
- 2026年秋季初中新生军训 军训标兵事迹宣讲教学方案
- 2025年河南现代康养职业学院高职单招职业技能考试题库附完整答案详解【名师系列】
- 2025年四川汽车职业学院单招综合素质考试题库(突破训练)附答案详解
- 2027年泗河商贸职业学院高职单招职业适应性测试考试题库附完整答案详解【名师系列】
- 2027年湖南都市职院高职单招职业适应性测试考试模拟试卷及参考答案详解(新)
- 2025年陕西现代装备职业学院高职单招职业适应性测试考试模拟试卷附答案详解(培优B卷)
- 2024年上海长三角职业学院单招职业技能考试模拟试卷及答案详解【新】
- 2024年湖南衡山职业学院高职单招职业技能考试题库必考附答案详解
- 堤防工程施工规范
- 《PLC应用项目工单实践教程》课件 模块7 S7-1500系列PLC顺序控制设计法的应用
- 泛海三江JB-QGL-2100JB-QBL-2100JB-OTL-2100火灾报警控制器联动型
- 2024-2025学年湖北省武汉市部分重点中学高二上学期期末联考数学试卷(含答案)
- 公路改扩建工程安全风险辨识与防控表
- 陌生拜访话术流程
- 公交司机未关车门保证书
- GB/T 4706.15-2024家用和类似用途电器的安全第15部分:皮肤及毛发护理器具的特殊要求
- 代订机票合同
- GB/T 228.1-2021金属材料拉伸试验第1部分:室温试验方法
- 福建省2013年考试录用公务员招考职位表
评论
0/150
提交评论