上一篇博客,介绍了三层的一些基本理论,但是学习光有理论还是不行滴!马克思不也说过了吗?实践是检验真理的唯一标准!

所谓的三层分为物理上的三层和逻辑上的三层。物理上的三层包括:客户端(PC)、应用服务器、数据库服务器。逻辑上的三层,也就是我们要讨论的,分为表示层、业务逻辑层、数据访问层。实体层,严格的来说不属于三层中的任一层,它是独立于其他三个层次的,只能供其他层次进行引用,但是不能引用其他的三个层次。

下面是数据在三层中的一个具体走向图,这对于我们了解三层的一条线很有帮助。

三层应用原则:

  • DAL只提供基本的数据访问,不包含任何的业务逻辑
  • UI只负责显示和采集用户操作,不包含任何业务相关的逻辑处理
  • BLL负责处理业务逻辑。通过获取UI传来的用户指令,执行业务逻辑,在需要访问数据源的时候,直接交个DAL进行处理。处理完成后,返回必要数据给UI。

实现步骤:

(1)前期准备:

1.根据上一层引用下一层以及实体层在各层的作用,绘制UML图。

2.根据UML图显示的关系,构建三层框架。

3.建立数据库,包含UserInfo表。

(2)代码实现阶段

1.用户界面层(LoginUI):

作用:

  • 向用户展现特定业务数据
  • 采集用户的输入信息和操作

原则:用户至上,兼顾简洁

添加类:frmLogin

namespace LoginUI
{public partial class frmLogin : Form{public frmLogin(){InitializeComponent();}private void btnLogin_Click(object sender, EventArgs e){//UI层将用户输入数据传递给BLL层string userName = txtUserName.Text.Trim();string password = txtPassword.Text;Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();Login.Model .UserInfo user= mgr.UserLogin (userName, password);//UI层返回业务层传递的数据给用户MessageBox.Show("登录用户:" + user.UserName);}

2.业务逻辑层(LoginBLL):

作用:

  • 从DAL获取数据,提供UI显示
  • 从UI获取用户和指令,执行业务逻辑
  • 从UI获取用户和指令,通过DAL写入数据

BLL的职责机制:

UI→BLL→UI

UI→BLL→DAL→BLL→UI

添加类:LoginManager

namespace Login.BLL
{public class LoginManager{public Login.Model .UserInfo UserLogin(string userName,string password){Login.DAL.UserDAO  uDao = new Login.DAL.u ();   //实例化DAL层Login.Model.UserInfo user = uDao.SelectUser(userName, password);//不需要访问数据源,直接执行业务逻辑if (user != null){return user;}else{throw new Exception("登录失败");}}}
}

3.数据访问层(LoginDAL):

作用:SELECT、INSERT/UPDATE、DELETE

添加类:UserDAO

namespace Login.DAL
{public class UserDAO{public Login.Model.UserInfo SelectUser(string userName, string Password){//建立数据库连接string ConnString = @"Server =192.168.24.45;DataBase =Login; User ID =sa ;Password =123";using (SqlConnection conn = new SqlConnection(ConnString)){//执行SQL语句进行查询SqlCommand cmd = conn.CreateCommand();cmd.CommandText = @"SELECT ID,UserName,Password,Email FROM UserInfo WHERE UserName =@UserName AND Password =@Password";//输出查询结果cmd.CommandType = CommandType.Text;//添加两个参数cmd.Parameters.Add(new SqlParameter(@"UserName", userName));cmd.Parameters.Add(new SqlParameter(@"Password", Password));conn.Open();SqlDataReader reader = cmd.ExecuteReader();Login.Model.UserInfo user = null;//读取具体的数据while (reader.Read()){if (user == null){user = new Login.Model.UserInfo();}//读取查询到的数据user.ID = reader.GetInt32(0);user.UserName = reader.GetString(1);user.Password = reader.GetString(2);if (!reader.IsDBNull(3)){user.Email = reader.GetString(3);}}return user; }}           }}

4.实体(LoginModel):

作用:封装数据,使数据在三层中传输 ,更倾向于业务逻辑层

添加类:UserInfo

namespace Login.Model{public class UserInfo{//定义用户属性public int ID { get; set; }public string UserName { get; set; }public string Password { get; set; }public string Email { get; set; }}}

三层架构实战篇—系统登录实例相关推荐

  1. 三层架构—实践篇(.Net登录实例)

    一.框架的搭建 U层引用Model层 B层引用Model层和DAL层 D层引用Model层和数据库连接ImportsSystem.Data.SqlClient 二.UML图 1.类图 U层:Windo ...

  2. 三层架构---理论篇

    What is it? 每当我们接触一个新名词,首先要问问自己"它是什么",这样才会有更强烈的好奇心与求知欲去弄明白它. 三层架构,由它的名字通俗易懂的理解就是三个层次的结构.那么 ...

  3. [ExtJS5学习笔记]第十一节 Extjs5MVVM模式下系统登录实例

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38815923 实例代码下载地址: http://download.csdn.net/d ...

  4. 【爬虫剑谱】二卷4章 实战篇-模拟登录铁路12306网站(滑块验证)

    Python\网络爬虫\Selenium 一.源码 二.实战总结 问题一:不愿意代码模块化(常见于我这种菜狗+懒狗) 三.参考文献 一.源码 from selenium import webdrive ...

  5. 三层架构实现增删的简单实例

    首先建一个web.config的窗体,添加 <appSettings><add key="conn" value="server=.;database= ...

  6. php三层架构erp,基于ERP/MES/PCS三层架构的现代集成制造系统模型

    数据集成是实施MES的基础将生产管理层的生产运行,产品质量.原料和产品输送.动力能耗等数据进行汇总和处理,使下层生产过程的实时信息和上层企业资源管理等的各类信息都在MES层中融合,并通过信息集成形成优 ...

  7. MVC模式与三层架构

    文章目录 什么是MVC模式 MVC架构程序的工作流程 什么是三层架构 什么是系统架构 什么是三层架构 各层之间的引用关系 MVC 与三层架构的对应关系 总结 什么是MVC模式 MVC,即 Model ...

  8. java 三层架构_java三层架构详解

    三层架构模式介绍 三层架构模式: 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer).业务逻辑层(Bu ...

  9. java ee 三层架构_JavaEE——三层架构模式介绍

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 三层架构模式介绍 三层架构模式: 三层架构(3-tier a ...

最新文章

  1. 4GL之Non-SCROLLING CURSOR
  2. 哈尔滨商业大学计算机与信息工程学院地址,计算机与信息工程学院
  3. 从小护士到微软中国总经理,逆风飞扬的“打工皇后”吴士宏的传奇人生
  4. cannot create file怎么解决_内核问题解决方法记录
  5. 阿里大数据分析与应用(part7)--机器学习平台PAI
  6. mysqlbinlog恢复误删数据
  7. Vue中 $ref 的用法
  8. android 调用restful,android调用springmvc写的restful
  9. RecordAccumulator分析
  10. OpenSSH 服务器的 20 个最佳实践
  11. 【渝粤教育】国家开放大学2018年春季 7067-22T康复护理学 参考试题
  12. MJRefresh自定义刷新动画
  13. 申万一级行业日指数_2017年申万一级行业分类表
  14. matlab比较判断简写,MATLAB一词来自( )的缩写。
  15. LeetCode-21. 合并两个有序链表_JavaScript
  16. springcloud阿里巴巴五大组件
  17. python画正多边形_少儿python编程之画正多边形代码优化教程
  18. 今天,发鸡腿了!!!
  19. 淘淘商城---8.10
  20. css 全屏显示一张图片_css 如何让图片全屏的问题

热门文章

  1. 【C 语言】多级指针 ( 在函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )
  2. 【EventBus】EventBus 使用示例 ( 最简单的 EventBus 示例 )
  3. 网卡的7种bond模式
  4. HotSpot 虚拟机的算法实现
  5. Leetcode题解(20)
  6. IE11与Cognos怪谈
  7. C# 获取USB设备信息
  8. 告别2013,迎接2014
  9. Listview 的顶部动态广告位的实现
  10. - -(我最近的开发..)