欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

三层架构

程序员文章站 2022-03-14 10:13:41
...

1. 三层结构

多层结构划分方式:物理/逻辑
两层/三层结构

(客户PC;应用服务器;数据库服务器)

两层 三层
三层架构 三层架构

物理上的三层:显示层、业务层、数据层
逻辑上的三层:UI、BLL、DAL

在应用程序开发中,数据库DB作为存储介质,UI、BLL、DAL三层是需要设计者完成的。
三层架构

1.1 显示层UI

1.1.1 UI的作用 1.1.2 UI设计原则 1.1.3 UI中常用的技术
向用户展现特定的业务数据; 用户至上,兼顾简洁。 Windows Form:Form、Control
采集用户的输入信息和操作. ASP.NET :aspx、ascx、master、html

三层架构

1.2 业务逻辑层BLL

1.2.1 BLL的作用 1.2.2 BLL的职责机制
从DAL中获取数据,以供UI显示用 UI->BLL->UI
从UI中获取用户指令和数据,执行业务逻辑 UI->BLL->DAL->BLL->UI
从UI中获取用户指令和数据,通过DAL写入数据源
namespace Login.BLL
{
    public class LoginManager
    {
        public Login .Model.UserInfo UserLogin (string userName,string password)
        {
            //BLL要引用DAL类,才能访问DAL
            Login.DAL.UserDAO uDao = new 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);//更新成绩+10
                return user;
            }
            else
            {
                throw new Exception("登录失败");
            }
        }
    }
}

1.3 数据访问层DAL

1.3.1 DAL的作用 1.3.2 DAL中常用的技术
从数据源加载数据(select) ADO.NET+SQL语句
向数据源写入数据(Insert、Update) 访问SQL Server数据库时Linq to SQL
从数据源删除数据(Delete) 访问SQL Server数据库时Linq to SQL
namespace Login.DAL
{
    class DbUtil
    {
        public static string ConnString = @"Server=LJM; Database=Login; User ID=sa; Password=123456";        
    }
}
namespace Login.DAL
{
    public class ScoreDAO
    {
        public void UpdateScore(string userName, int value)
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))   //有了using之后,connection就可以自动关闭了
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"INSERT INTO SCORES(UserName,Score) Values(@UserName,@Score)";
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Score", value));

                conn.Open();//不需要Close
                cmd.ExecuteNonQuery();               
            }         
        }
    }
}

2. 为什么使用三层架构?

不需要使用三层结构的情况:业务逻辑简单,没有真正的数据存储层,也就不需要数据访问层

需要使用三层结构的情况:当业务复杂到一定程度的时候,有数据存储层和数据访问层。

3.总结

其实使用三层结构,就是一个解耦的过程,目的就是降低层与层之间的依赖。上述也说了当业务复杂到一定程度时候,可使用三层结构,也就是说三层结构系统架构复杂,不适用于小型的项目使用。还有大家有没有觉得业务逻辑层就是个中介者,访问了UI,找DAL。