有兴趣的一起来讨论下三层开发模式吧~~

      根据网上查找的资料和自己的理解,下面是我的理解。
      首先我们来看下三层架构的一些基本定义:
      1、什么是三层架构呢?通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
      2、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
      3、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
      4、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增、删、改、查。

                  
        也就是说表现层只能操作、调用业务逻辑层,业务逻辑层直接操作数据访问层。下面自己的一个例子来看下三层结构的组织。
                                  
       在OABLL中的文件调用OADAL中的方法,比如其中一个 用户登录 的结构:

      首先查看OACOMMON中的UserLogin.cs 

UserLogin.cs
 1 /**//// <summary>
 2    /// 用户登录信息
 3    /// </summary>

 4    public class UserLogin
 5    {
 6        私有属性#region 私有属性
 7        private string _sLoginName; //登录用户名
 8        private string _sPassWord; // 登录密码
 9        private string _sCode; //登录验证码
10        #endregion

11
12        公有属性#region 公有属性
13        /**//// <summary>
14        /// 用户登录名
15        /// </summary>

16        protected string sLoginName
17        {
18            get
19            {
20                return this._sLoginName;
21            }

22            set
23            {
24                this._sLoginName = value;
25            }

26        }

27        /**//// <summary>
28        /// 用户登录密码
29        /// </summary>

30        protected string sPassWord
31        {
32            get
33            {
34                return this._sPassWord;
35            }

36            set
37            {
38                this._sPassWord = value;
39            }

40        }

41        /**//// <summary>
42        /// 登录验证码
43        /// </summary>

44        protected string sCode
45        {
46            get
47            {
48                return this._sCode;
49            }

50            set
51            {
52                this._sCode = value;
53            }

54        }

55        #endregion

56    }

      
       数据访问层操作代码UserLogin.cs

UserLogin.cs
 1/**//// <summary>
 2    /// 用户登录数据访问层
 3    /// 所属数据访问层
 4    /// 功能:通过sql语句操作数据库
 5    /// </summary>

 6    public class UserLogin
 7    {
 8        public bool CheckLogin(string sUserName, string sPassWord)
 9        {
10            bool bCheck = false;
11            string cmdText = "Select * from sys_User where U_LoginName='{0}' and U_Password='{1}'";           
12            cmdText = string.Format(cmdText, PGGS.OA.OACOMMON.Common.inSQL(sUserName), PGGS.OA.OACOMMON.Common.md5(sPassWord, 32));           
13            DataSet ds = PGGS.OA.DB.SqlHelper.dataSet(cmdText, "login");
14            if (ds.Tables[0].Rows.Count > 0)
15            {
16                PGGS.OA.OACOMMON.Components.UserData uDT = new PGGS.OA.OACOMMON.Components.UserData();
17                uDT.U_Status = int.Parse(ds.Tables[0].Rows[0]["U_Status"].ToString());
18                bCheck = true;
19            }

20            else
21            {
22                bCheck = false;
23            }

24            return bCheck;
25        }

26        public bool CheckUser(string sUserName)
27        {
28            bool bCheck = false;
29            string cmdText = "Select * from sys_User where U_LoginName='{0}'";
30            cmdText = string.Format(cmdText, PGGS.OA.OACOMMON.Common.inSQL(sUserName));
31            DataSet ds = PGGS.OA.DB.SqlHelper.dataSet(cmdText, "user");
32            if (ds.Tables[0].Rows.Count > 0)
33            {
34                bCheck = true;
35            }

36            else
37            {
38                bCheck = false;
39            }

40            return bCheck;
41        }

42    }

      同理业务逻辑层UserLogin.cs代码:

UserLogin.cs
  1/**//// <summary>
  2    /// 用户登录业务类
  3    /// 所属业务逻辑层
  4    /// 功能:用户登录验证及转向
  5    /// </summary>

  6    public class UserLogin
  7    {
  8        "判断输入的用户名与密码是否对应 bool CheckLogin(string sUserName, string sPassWord)"#region "判断输入的用户名与密码是否对应 bool CheckLogin(string sUserName, string sPassWord)"
  9        /**//// <summary>
 10        /// 判断输入的用户名与密码是否对应
 11        /// </summary>
 12        /// <param name="sUserName">输入的用户名</param>
 13        /// <param name="sPassWord">输入的密码</param>
 14        /// <returns></returns>

 15        public bool CheckLogin(string sUserName, string sPassWord)
 16        {
 17            bool bCheck = false;
 18            PGGS.OA.OADAL.UserLogin dalUserLogin = new PGGS.OA.OADAL.UserLogin();
 19            if (dalUserLogin.CheckLogin(sUserName, sPassWord))
 20            {
 21                bCheck = true;
 22            }

 23            else
 24            {
 25                bCheck = false;
 26            }

 27            return bCheck;
 28        }

 29        #endregion

 30
 31        "判断输入的用户是否存在 bool CheckUser(string sUserName)"#region "判断输入的用户是否存在 bool CheckUser(string sUserName)"
 32        /**//// <summary>
 33        /// 判断输入的用户是否存在
 34        /// </summary>
 35        /// <param name="sUserName">输入的用户名</param>
 36        /// <returns></returns>

 37        public bool CheckUser(string sUserName)
 38        {
 39            bool bCheck = false;
 40            PGGS.OA.OADAL.UserLogin dalUserLogin = new PGGS.OA.OADAL.UserLogin();
 41            if (dalUserLogin.CheckUser(sUserName))
 42            {
 43                bCheck = true;
 44            }

 45            else
 46            {
 47                bCheck = false;
 48            }

 49            return bCheck;
 50        }

 51        #endregion

 52
 53        "与界面表现层的接口,用来判断用户登录 void GetLogin(string sUserName,string sPassWord,string sCode)"#region "与界面表现层的接口,用来判断用户登录 void GetLogin(string sUserName,string sPassWord,string sCode)"
 54        /**//// <summary>
 55        /// 与界面表现层的接口,用来判断用户登录
 56        /// </summary>
 57        /// <param name="sUserName">用户登录名</param>
 58        /// <param name="sPassWord">用户登录密码</param>
 59        /// <param name="sCode">用户登录验证码</param>

 60        public void GetLogin(string sUserName,string sPassWord,string sCode)
 61        {
 62            object checkCode = HttpContext.Current.Session["CheckCode"];
 63
 64            //进行验证码判断
 65            if (checkCode == null || sCode != checkCode.ToString()) 
 66            {
 67                HttpContext.Current.Response.Write("验证码不正确!");
 68                HttpContext.Current.Response.End();
 69            }

 70            //验证码判断成功则转向对用户登录名与密码的判断
 71            else   
 72            {
 73                PGGS.OA.OACOMMON.Components.UserData uDT = new PGGS.OA.OACOMMON.Components.UserData();
 74                //判断用户名是否存在
 75                if (CheckUser(sUserName))
 76                {
 77                    //用户名存在则判断用户名密码是否对应
 78                    if (CheckLogin(sUserName, sPassWord))
 79                    {
 80                        //当前状态0:正常 1:禁止登陆 2:删除
 81                        if (uDT.U_Status == 0)
 82                        {
 83                            HttpContext.Current.Response.Redirect("Default.aspx");
 84                            //HttpContext.Current.Response.Write("正常");
 85                            HttpContext.Current.Response.End();
 86                        }

 87                        else if (uDT.U_Status == 1)
 88                        {
 89                            HttpContext.Current.Response.Write("禁止登陆");
 90                            HttpContext.Current.Response.End();
 91                        }

 92                        else if (uDT.U_Status == 2)
 93                        {
 94                            HttpContext.Current.Response.Write("删除");
 95                            HttpContext.Current.Response.End();
 96                        }

 97                        else
 98                        {
 99                            HttpContext.Current.Response.Write("未知错误");
100                            HttpContext.Current.Response.End();
101                        }

102                    }

103                    else
104                    {
105                        //密码不正确
106                        HttpContext.Current.Response.Write("密码不正确");
107                        HttpContext.Current.Response.End();
108                    }

109                }

110                else
111                {
112                    //用户名不存在
113                    HttpContext.Current.Response.Write("用户名不存在");
114                    HttpContext.Current.Response.End();
115                }

116            }

117
118        }

119        #endregion

120        
121    }


       通过在界面表现层上 点击 “登录” 按钮之后的操作:

1protected void Button1_Click(object sender, EventArgs e)
2        {
3            string sUserName = LoginName.Text.ToString().Trim();
4            string sPassWord = LoginPass.Text.ToString().Trim();
5            string sCode = code_op.Text.ToString().Trim();            
6            PGGS.OA.OABLL.UserLogin bllUserLogin = new PGGS.OA.OABLL.UserLogin();
7            bllUserLogin.GetLogin(sUserName, sPassWord, sCode);
8        }

      这样基本把一个用户登录的三层架构完成了,也不知道这样是否正确。还请大家相互讨论,欢迎大家提供高意见或者建议,谢谢~~~

转载于:https://www.cnblogs.com/caitou/archive/2008/04/09/1145852.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值