三层架构实战篇—系统登录实例

来源:互联网 发布:怎么使用手机淘宝联盟 编辑:程序博客网 时间:2024/04/28 07:28
       上一篇博客,介绍了三层的一些基本理论,但是学习光有理论还是不行滴!马克思不也说过了吗?实践是检验真理的唯一标准!

        所谓的三层分为物理上的三层和逻辑上的三层。物理上的三层包括:客户端(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; }        }    }
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 包上的纽扣坏了怎么办 洗衣服不小心用了色渍净怎么办 洗衣服不小心沾了卫生纸怎么办 麻料裤子扎皮肤怎么办 衣服没洗干净有点发光怎么办 桑蚕丝衣服脏了发光洗不掉怎么办 厨师衣服的油味怎么办 看上夜场的小姐了怎么办 楼卖完了水吧员怎么办 窗帘短了20公分怎么办 白色鞋子沾油了怎么办 面试时没有正装怎么办 宝宝喝了沐浴露怎么办 开实体童装店没人买怎么办 宝宝一岁半了还不会说话怎么办 十个月宝宝不吃辅食怎么办 八个月宝宝不吃米糊怎么办 八个月宝宝不吃辅食怎么办 六个月宝宝不吃米粉怎么办 4个月婴儿积食怎么办 黑色的衣服泛红怎么办 不听劝的人该怎么办 牛仔裙子腰大了怎么办 天猫店铺降权怎么办 淘宝做文胸的标题要怎么办 秋衣弹力衣服松了怎么办 假离婚变成真的怎么办 百家利钱不到账怎么办 皮鞋撑大了怎么办变小 鞋穿着走路掉跟怎么办 浅口帆布鞋大了怎么办 布鞋后鞋跟老掉怎么办 穿坡跟凉鞋容易打滑摔倒怎么办 运动鞋烂了个口怎么办 运动鞋的网烂了怎么办 运动鞋鞋一个一个高一个低怎么办 淘宝预售水果不发货怎么办 淘宝评价忘记晒图了怎么办 参加水果展没有实物怎么办 没做过运营面试怎么办 苹果5s16g内存满了怎么办