浅谈三层架构
来源:互联网 发布:网络平台服务许可 编辑:程序博客网 时间:2024/05/21 21:37
1、三层结构开发模式
三层结构式基于模块化程序设计的思想,为实现分解应用程序的需求,而逐渐形成的一种标准模式的模块划分方法。
2、为什么要用三层结构
个人理解:采用分层增强了类和类之间的独立性,在团队合作开发的过程中能大大提高了开发的速率;在后期的维护工作中更容易;在程序员写代码的过程中,不会因为某个小小的需求的改变而大整整个系统模块,只需要改有问题的那一层就好了,比如说当数据库要改变的时候,只需要调整数据库就好了,不需 要重新开发,只做一些简单的调整即可。但是三层也有缺点就是执行速度不够快,所以说并不是所有的系统都要用三层架构去实现。
3、三层架构分类
三层架构划分为表现层(UI,user interface)、业务逻辑层(BLL,Business Logic Layer)、数据访问层(DAL,Data Access Layer),这样有利于系统的开发、维护、部署,实现了“高内聚,低耦合”。采用分层方法,把问题划分开一个一个解决,易于控制,易于延展,易于分配资源。
4、三层结构的概念以及之间的关系
概念
表示层位于最上层,用于显示和接收用户提交的数据,为用户提供交互式的界面。表示层一般为Windows窗体应用程序或Web应用程序。
业务逻辑层是表示层和数据访问层之间沟通的桥梁,主要负责数据的传递和处理。
数据访问层主要实现对数据的读取、保存和更新等操作。
关系
下图是各层的工作流程
在三层结构中,各层之间相互依赖,表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。
5、如何搭建三层结构?
创建
打开VS2012,新建一个解决方案,新建一个类库LoginSolution,命名为LoginDAL,如下图
添加一个类库,业务逻辑层
创建一个WinForm窗体,UI表示层
代码
Model层
namespace MyBookShop.Models{ public class User { public User() { } //编号属性 public int id; public int Id { //属性id的get和set方法 get { return id; } set { id = value; } } //登录名属性 private string loginId; //属性loginId的get和set方法 public string LoginId { get { return loginId; } set { loginId = value; } } //密码属性 private string loginPwd; //loginPwd属性的get和set方法 public string LoginPwd { get { return loginPwd; } set { loginPwd = value; } } //姓名属性 private string name; //属性name的get和set方法 public string Name { get { return name; } set { name = value; } } }}
业务逻辑层BLL
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MyBookShop.DAL;using MyBookShop.BLL;using MyBookShop.Models;namespace MyBookShop.BLL{ public class UserManager { //登录验证 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 { validUser = null; return false; } } }}
数据访问层DAL
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using System.Data.SqlClient;namespace MyBookShop.DAL{ public class UserService { //根据登录名查询用户信息 public static User GetUserByLoginId(string LoginId) { string sql = "select * from Users where LoginId=@LoginId"; using (SqlDataReader reader = DBHelper.GetReader(sql, new SqlParameter("@LoginId", LoginId))) { if (reader.Read()) { //找到该用户信息后,将其保存到User对象中,并返回该对象 User user = new User(); user.id = (int)reader["Id"]; user.LoginId = (string)reader["LoginId"]; user.LoginPwd = (string)reader["LoginPwd"]; reader.Close(); return user; } else { reader.Close(); //未找到该用户,返回null return null; } } } }}
表示层UI
界面
namespace LoginUI{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnLogin_Click(object sender, EventArgs e) { string userName = txtUserName.Text.Trim(); string password=txtPassword .Text; Login.BLL.UserManager mgr = new Login.BLL.UserManager(); Login.Model .User user=mgr.UserLogin(userName, password); MessageBox.Show("登录用户:" + user.UserName); } }}
6、实体类
把数据表或其它持久化数据的格式映射成的类,就是实体类。
对实体类的理解:
1)与数据库里面表做对应,一个实体类对应一张表,这样与数据库交互时就可以一一对应,对数据库进行操作
2)把常用的字段封装到一起,为我们在关系数据库和对象之间架起一座桥梁
3)避免U层,B层,D层互相引用,交叉引用
4)实体类用来传输数据的业务数据模型
5)实体类不用知道其他三层的存在
- 浅谈.NET三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈 三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈“三层架构”
- 浅谈三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈三层架构
- 浅谈MVC三层架构
- 浅谈.NET三层架构-转载
- 浅谈三层架构(1)
- Dijit可视化组件——Tree(一)
- ubuntu手工安装Nvidia官方显卡驱动
- xcode 4.5 创建项目
- Dead Man's Island——3、The Photograph
- linux内核及驱动开发中有关__init,__exit和__initdata的用法
- 浅谈三层架构
- 内存那点事(二)原始社会
- Linux下的socket文件传输
- java实现的简易线程池框架源码
- JavaSE第八十讲:监听器、事件、事件源、事件注册深度剖析
- XWINDOW无法启动的解决
- Redis作者谈Redis应用场景
- struts2中重定向中文参数乱码梳理
- Linux下的udp广播与接收程序 包含序列号