“3W1H法”浅析三层架构
前言:
在学习UML的时候,为了更加深刻的理解类图和包图,就提前学习了一些“三层”的知识,当时还没有面向对象的语言基础,只是大概的知道而已,并没有深入的去研究。
现在经过了C#,设计模式,VB.NET的学习,与“面向对象”进行了多次碰撞,这次就是用C#语言做了一个运用三层的小Demo,下面就详细的介绍一下三层的“3W1H”。
一、what
首先我们先来看第一个“W”,什么是三层架构?
二、why
三、where
四、how
namespace Login.DAL
{public class UserDAO{public Login.Model.UserInfo SelectUser(string userName,string password){using(SqlConnection conn=new SqlConnection (DbUtil.Connntring )){SqlCommand cmd = conn.CreateCommand();cmd.CommandText = @"SELECT ID,UserName,PWD,EmailFROM USERS WHERE Username=@Username AND PWD=@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;}}}
}
2、DAL层的DbUtil类,用于连接数据源的。
namespace Login.DAL
{public class DbUtil{public static string Connntring = @"Server=AZZ-PC;Database=AZZ_Charge;User ID=sa;Password=123456";}
}
3、BLL层的LoginManager类。
namespace Login.BLL
{public class LoginManager{public Login.Model.UserInfo UserLogin(string userName,string password){Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();Login.Model.UserInfo user=uDao.SelectUser(userName, password);if (user !=null ){Login.DAL.ScoreDAO sDao=new Login.DAL.ScoreDAO();sDao.UpdateScore(userName,10);return user;}else{throw new Exception ("登陆失败。");}}}
}
4、Model实体中的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; }}
}
5、UI层,收集用户输入的信息,并做简单的判断。
namespace LoginUI
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btnLogin_Click(object sender, EventArgs e){//IDbConnection conn = new SqlConnection("c......");//IDbCommand cmd = conn.CreateCommand();//cmd.CommandText = "Select UserName Form USERS WHERE";//cmd.ExecuteReader();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);MessageBox.Show("登陆用户:" + user.UserName);}}
}
五、小结
“3W1H法”浅析三层架构相关推荐
- 浅析三层架构与MVC模式的区别
浅析三层架构与MVC模式的区别 三层架构介绍: (点击链接即可见三层架构) MVC模式介绍: MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(co ...
- 三层架构与设计模式思想部署企业级数据库业务系统开发
1. 三层架构介绍 1.1关于架构 架构这个词从它的出现后,就有许许多多的程序员.架构师们激烈地讨论着它的发展,但是架构一词的出现,却是随着三层架构的出现才出现的.当然,目前应用三层架构开发也正是业界 ...
- 【软件架构】三层架构
三层架构 三层架构简介 三层架构的必要性 经典两层架构 三层架构 三层架构逐层浅析 表示层 业务逻辑层 数据访问层 三层架构层间关系 层间依赖关系 层间数据流向 三层架构与实体类 需要实体类的理由 实 ...
- 【JavaWeb】之MVC三层架构
[JavaWeb]MVC三层架构 前言 一.JavaBean 1.JavaBean的概念 2.JavaBean的特征 3.JSP访问JavaBean的语法 二.MVC三层架构 1.MVC简介 2.Mo ...
- MyBatis-架构概述,什么是框架,三层架构,JDBC
MyBatis 框架-第1章 框架概述 1. 软件开发常用结构 1.1 三层架构 三层架构包含的三层: 界面层(User Interface layer).业务逻辑层(Business Logic L ...
- java从入门到精通二十四(三层架构完成增删改查)
java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...
- 黑马程序员-三层架构介绍
---------------------- Windows Phone 7手机开发. .Net培训.期待与您交流! ---------------------- 三层架构介绍 1关于架构 架构这个词 ...
- 从三层架构说起,谈谈对历史项目的小改造
项目背景说明 最近接手一个 "老" 项目的需求修改,项目整体基于 .net core 3.1 平台,以传统的三层架构为基础构建.了解需求后,逐步对原有项目框架进行大概的了解,主要是 ...
- JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用)
JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用) 文章目录 JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用) 环境搭建 ...
- 一个简单实用的,基于EF的三层架构
到底什么样的框架才是好框架呢?或许不同人有不同的看法.我个人觉一个好的框架,最重要的要是简单实用,能快速适开发,可维护性高(不会出现复制黏贴的代码),并能快速响应各种业务场景的变化的框架,同时性能不会 ...
最新文章
- URAL - 1902 Neo-Venice
- ROS系统——部署OpenVINO版Nanodet超轻量目标检测器
- 为什么python不报错不出结果_python的坑货ConfigParser类读取文件失败不报错
- Day3--js--可恶之变量声明提升大法.。。
- boost::sort模块实现spreadsort 浮点排序示例
- 进程、线程和协程的区别和联系(TX)
- 浅谈基于Linux的Redis环境搭建
- 中国自古以来经历了三种官员选拔制度
- Redis系列四、redis的五种数据结构和相关指令之List
- 中国数据库OceanBase登顶之路
- php将图片导入,php中图片文件的导入,上传与下载
- 飞机订票系统的html模板,飞机订票系统程序设计
- python3 compile_python3.2的pycompile
- atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?
- 安全漏洞问题6:SQL注入
- NYOJ题目37-回文字符串
- VC之fseek函数、ftell函数和rewind函数
- 普中开发板白屏_普中开发板送的12864为什么程序写进去,屏幕不显示?
- 基于java客户关系管理系统
- linux压缩一个tar.xz文件,Linux下解压tar.xz格式压缩文件