三层架构思想课件

上传人:我*** 文档编号:145128918 上传时间:2020-09-16 格式:PPT 页数:23 大小:583.50KB
返回 下载 相关 举报
三层架构思想课件_第1页
第1页 / 共23页
三层架构思想课件_第2页
第2页 / 共23页
三层架构思想课件_第3页
第3页 / 共23页
三层架构思想课件_第4页
第4页 / 共23页
三层架构思想课件_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《三层架构思想课件》由会员分享,可在线阅读,更多相关《三层架构思想课件(23页珍藏版)》请在金锄头文库上搜索。

1、,三层架构编程,提问,三层结构都有哪三层?,系统架构,三层结构 表示层 业务逻辑层 数据访问层,分层的理念:将相似的内容放到一起去处理,开发人员可以只关注整个结构中的其中某一层,可以很容易的用新的实现来替换原有层次的实现,三层结构的经典案例:PetShop,模型层,模型层 表示层需要访问实体对象的属性值。 业务层需要通过实体对象处理业务逻辑。 数据层也需要通过实体对象读写数据库。 模型是数据载体。 命名 项目名: GoNowModels 命名空间:GoNow.Models 类名:图书表Books图书类Book 实体类通常冠以Serializable特性,以保证实体传输的可靠性,外键的处理,数据

2、库中有主外键关系,模型层怎么表示? 比如用户表和状态表。 状态字段是用户表的外键。 两种方式: 为实体类添加状态id属性,存储状态id。 为实体类添加状态属性,存储状态对象。,示例,用户类的模型 用户需要有登录名、密码、状态等属性 状态表存储状态名称 用户的状态属性使用状态对象,public UserState UserState get return this.userState; set this.userState = value; ,处理外键的代码,Serializable() public class User /字段 public User() /构造函数 /常见属性 public

3、 UserState UserState/用户状态-外键 get return this.userState; set this.userState = value; ,小结,编写实体类UserRole并更新User类相关属性 类关系图如下,答案:UserRole类,数据访问层,数据访问层 所有与数据库交互的操作 数据表的增、删、查、改操作 数据访问层不做逻辑判断 命名 项目名:GoNowDAL 命名空间:GoNow.DAL 类名:图书表Books图书数据访问类BookService,代码比较,比较两段代码 代码1 代码2 在每一个对象的数据库访问类中: 数据库连接反复出现 数据库连接打开和关

4、闭反复出现 执行Sql语句的方法相似 返回记录集的方法相似,根据面向对象思想,是否可以减少这些重复劳动?,DBHelper类,我们将常用方法提取出来,作为DBHelper类 该类包含了:,建立数据库连接,执行Sql的方法 (存储过程sql语句),返回记录集,返回Reader,返回结果,创建数据访问层的类,创建UserService类 Create方法 Retrieve方法 Update方法 Delete方法,bool AddUser(User user),IList GetAllUsers( ) User GetUserById(int id) IList GetUsersBySql(stri

5、ng sql),bool DeleteUserById(int id),bool UpdateUser(User user),增加一个用户的方法,public static bool AddUser(User user) string sql = INSERT USERS (loginid, loginpwd, name, address, phone, mail, userroleId,UserStateId) + VALUES (LoginId,LoginPwd,Name,Address,Phone,Mail, RoleId,UserStateId); SqlParameter para

6、= new SqlParameter new SqlParameter(LoginId,user.LoginId), ; DBHelper.ExecuteCommand(sql, para); return true; ,组合SQL语句,参数赋值,调用DBHelper类中的方法进行处理,小结,模型层为什么要标记为可序列化? 模型层的作用? 数据访问层的功能? 编写User的数据访问类的查、改、删方法。,示例:User的数据库访问类,业务逻辑层,业务逻辑层 是表示层与数据访问层的桥梁, 负责逻辑的判断,业务处理、数据传递。 不在表示层访问数据库,数据更加安全。 命名 项目名:GoNowBLL 命

7、名空间:GoNow.BLL 类名:图书表Books图书业务逻辑层类BookManager,用户登录的业务逻辑方法,public static bool Login(string loginId, string loginPwd, out User validUser) User user = UserService.GetUserByLoginId(loginId); if (user = null) validUser = null; return false; if (user.LoginPwd = loginPwd) validUser = user; return true; else

8、 validUser = null; /密码错误 return false; ,表示层,表示层的设计给客户最直接的体验。 页面风格和布局,美观大方。 页面操作符合逻辑,讲究用户体验 。 注意风格统一。,表示层负责内容的展现和与用户的交互。 可以进行变量范围的验证。 不做业务逻辑判断。 不做与数据库交互的处理。,用户管理模块,首先根据数据库创建模型层。 包括用户的实体类以及相关联的类。 创建数据访问层用户管理类。 包括增删查改方法。 设计相关页面,并编写事件代码。 新用户注册。 用户登录。 用户信息修改。 创建业务逻辑层处理类。 根据需要,添加相关方法。,示例1,用户登录 创建页面。 编写事件处

9、理代码,包括验证输入。 创建业务逻辑层方法,调用数据访问层相关方法处理。,演示示例:用户登录,用户注册的确认事件代码, User user = new User(); user.LoginId = this.txtLoginId.Text; user.UserState = new UserState(); user.UserState.Id = 1; if (UserManager.AddUser(user) this.ltMain.Text = alert(注册成功!请继续购物 ); window.location=./default.aspx; else this.ltMain.Text

10、 = alert(用户名已使用!请重新选择!); ,实例化User类,对类相关属性进行赋值,默认值,硬编码,业务层进行相关判断和处理,弹出脚本提示 小技巧:在控件上输出脚本,小结,编写图书模块相关实体类和数据层、业务层的类。 图书有id、作者、标题、分类、出版社、描述、ISBN(简化)。 出版社有id、名称。 分类有id、名称。 编写图书、出版社、分类的实体类。 编写图书的数据层增删查改方法。 编写图书业务层的查询所有的方法。,演示示例:图书模块相关类,总结,数据访问层常见的方法有哪几种? 页面要显示一个表的内容,可否直接使用ADO.NET连接数据库,为什么? 业务逻辑层的方法来自哪部分的需求?,谢谢观赏!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号