三层架构 订阅
三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。 [1]  三层架构区分层次的目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。 [2] 展开全文
三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。 [1]  三层架构区分层次的目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。 [2]
信息
优    点
降低层与层之间的依赖 标准化 [1]
外文名
3-tier architecture [3]
分    类
表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL) [1]
中文名
三层架构 [3]
目    的
“高内聚,低耦合”的思想 [2]
应    用
应用服务器、应用客户端等 [1]
三层架构含义
三层架构主要是指将业务应用规划中的表示层 UI、数据访问层 DAL 以及业务逻辑层 BLL,其分层的核心任务是“高内聚低耦合”的实现。在整个软件架构中,分层结构是常见和普通的软件结构框架,同时也具有非常重要的地位和意义。这种三层架构可以在软件开发的过程中,划分技术人员和开发人员的具体开发工作,重视核心业务系统的分析、设计以及开发,提高信息系统开发质量和开发效率,进而为信息系统日后的更新与维护提供很大的方便。 [4] 
收起全文
精华内容
下载资源
问答
  • 三层架构
    千次阅读
    2021-12-31 10:58:43

    java三层架构


    什么是三层架构呢?

    三层架构就是为了符合“高内聚,低耦合”的思想,把各个功能模块划分为“表示层(UI)业务逻辑层(BLL)数据访问层(DAL)三层架构,额外还有一层实体类(Model),作为数据传递的载体,在各层之间传递数据。

    首先了解什么是三层?
    UI(表现层): 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

    BLL:(业务逻辑层): UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

    DAL:(数据访问层): 与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)
    在这里插入图片描述
    举例:
    img
    他们之间的联系:
    服务员:只负责接待客人
    厨师:只负责做菜
    采购员:只负责采购
    他们各负其职,服务员不用了解厨师如何做菜,不用了解采购员如何采购食材;厨师不用知道服务员接待了哪位客人,不用知道采购员如何采购食材;同样,采购员不用知道服务员接待了哪位客人,不用知道厨师如何做菜。

    为什么使用三层架构?

    使用三层架构的目的:解耦!!!

    同样拿上面饭店的例子来讲:

    (1)服务员(UI层)请假——另找服务员;厨师(BLL层)辞职——招聘另一个厨师;采购员(DAL)辞职——招聘另一个采购员; (2)顾客反映:

    • 1、你们店服务态度不好——服务员的问题。开除服务员;
    • 2、你们店菜里有虫子——厨师的问题。换厨师;

    任何一层发生变化都不会影响到另外一层!!!

    三层架构的优势和劣势

    优势:

    • 1,结构清晰、耦合度低
    • 2,可维护性高,可扩展性高
    • 3,利于开发任务同步进行, 容易适应需求变化

    劣势:

    • 1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
    • 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码
    • 3、增加了代码量,增加了工作量
    更多相关内容
  • 本系列文章所示范的项目基于传统三层架构进行分层,基于工作职责和Maven结构进行模块划分。本文将对传统三层架构和对应的领域模型架构、以及每个模块的职责进行简单的说明。下图即示范项目的模块结构:传统三层架构...
  • 本套课程将对基于ASP.NET三层架构在线购物商城系统【成品】的代码部分进行讲解,该系统主要基于Visual Studio 和SQL Server进行开发,主要通过ASP.NET三层架构进行设计(三层部分由动软实现),系统功能较全面,适合...
  • 主要为大家详细介绍了ASP.NET三层架构,如何实现三层架构,本文为大家揭晓,感兴趣的小伙伴们可以参考一下
  • 开发业务应用角度对程序的划分,其分层逻辑来源于“高内聚低耦合”的思想,在开发中针对这种有三层架构和五层架构
  • 用asp.net的三层架构做的登录,注册,适合新手练习 用asp.net的三层架构做的登录,注册,适合新手练习
  • 用C#开发的三层结构酒店管理系统 @ 用C#开发的三层结构酒店管理系统 @ 用C#开发的三层结构酒店管理系统 @ 用C#开发的三层结构酒店管理系统 @
  • 10、结构如下 11、 生成model 12、在dal中引用model 13、选择model引用 14、看一下 15、dal还可以引用其他类库,如DBUtility 16、数据库帮助类库 17、model不引用任何类库 18、底层类库在上层类库中被引用 ...
  • MVC 三层架构

    2021-01-20 02:28:17
    目录MVC 三层架构1. 分层简介2. 包目录结构3. 数据访问层4. 流程图5. 综合案例:用户信息列表展示a. 主要需求b....三层架构即改造了 MVC 以后的架构,也就是 MVC 架构的升级版,MVC 基本结构详见:MVC 模
  • 主要对Java三层架构的概念、作用等进行了介绍,需要的朋友可以参考下
  • MVC三层架构

    2019-03-14 08:51:52
    MVC三层架构基础介绍简单来说,Design Patten 就是一个常用的方案。 在我们的开发过程中,经常会遇到一些相同或者相近的问题,每次我们都会去寻找一个新的解决方法,为了节省时间提高效率,我们提供一些能够解决这些...
  • JAVA MVC三层架构 代码生成器.JAVA根据数据库表反向工程生成 MVC三层架构 代码的生成器
  • Delphi XE7开发入门教程之DataSnap三层架构篇-第一部分预览.pdf
  • 三层架构

    千次阅读 多人点赞 2018-08-09 11:54:14
      说到三层,先来说一说两层结构。两层结构将界面展示、业务逻辑、数据访问等都写到一起,如果用户需求变化,就需要对整个项目进行大量修改,系统的维护和升级极其不利;而且界面层直接访问数据库,还会有安全隐患...

    为什么要用三层

      说到三层,先来说一说两层结构。两层结构将界面展示、业务逻辑、数据访问等都写到一起,如果用户需求变化,就需要对整个项目进行大量修改,系统的维护和升级极其不利;而且界面层直接访问数据库,还会有安全隐患。结构如下图所示:
    这里写图片描述
      所以基于两层结构的局限性,三层结构就出现了。三层结构符合“高内聚、低耦合”的特点,每个层职责明确。利用分层,降低了层间依赖,使系统的耦合更加松散,从而使系统更加容易维护和复用。
      比如:如果需求有变化,只需要更改相应的业务逻辑层;或者要改变数据库的时候,只需要将原来的数据访问层替换掉或者增加新的就可以了,而不需要牵扯到整个项目。
      三层架构虽好,但是也不是每个项目都必须采用这种结构,三层结构用于比较复杂的大型系统,如果系统比较小,则没必要将问题复杂化。

    何为三层

    这里写图片描述
    三层由显示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)组成。
    1.显示层(UI)
      职责:①向用户展示特定的业务数据
         ②采集用户的信息和操作
      原则:用户至上,兼顾简洁

    2.业务逻辑层(BLL)
      职责:① 从UI中获取用户指令和数据,执行业务逻辑
         ②从UI中获取用户指令和数据,通过DAL写入数据源
         ③从DAL中获取数据,以供 UI 显示用
      机制:① UI –> BLL –> UI
         ② UI –> BLL –> DAL –> BLL –> UI

    3.数据访问层(DAL)
      作用:跟数据源打交道
      职责:①执行对数据的操作(增删改查)

    4.数据对象层
      数据对象层包含了项目需要使用的数据对象,用数据对象来传递数据,它避免了各个层的交叉引用。
      一般一个表对应一个数据对象。

    引用关系

    上图已经展示了它们三者之间的引用关系。UI层–> BLL层 –> DAL层,而它们都引用数据对象层。

    代码展示

    下面以一个登录的小例子,展示一下三层是如何具体使用的。
    UI层:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void btnLogin_Click(object sender, EventArgs e)
        {
            //获取输入的用户名和密码
            string userName = txtUserName.Text.Trim();
            string userPassword = txtPassword.Text;
    
            Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
            //调用B层的登录方法,从B层返回user的信息
            UserInfo user = mgr.Login(userName, userPassword);
    
            MessageBox.Show("登录用户:" + user.UserName);
        }
    }

    BLL层:

    public class LoginManager
    {
        public UserInfo Login(string userName,string password)
        {
            //实例化UserDao
            UserDAO uDao = new UserDAO();
            //调用UserDao的查询用户方法
            UserInfo user = uDao.SelectUser(userName, password);
    
            //如果用户存在,就调用ScoreDao的更新积分方法,给用户加10积分;否则就抛出异常
            if (user != null)
            {
                ScoreDAO sDao = new ScoreDAO();
                //调用ScoreDao的更新积分方法
                sDao.UpdateScore(userName, 10);
                return user;
            }
            else
            {
                throw new Exception("登录失败。");
            }
        }
    }

    DAL层:

    public class UserDAO
    {
        /// <summary>
        /// 查询用户是否存在并返回用户信息
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        public UserInfo SelectUser(string userName,string password)
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
    
                //获取执行的SQL语句 或表名 或存储过程名
                cmd.CommandText = @"SELECT ID,UserName,Password,Email
                                    FROM USERS WHERE UserName=@UserName AND Password=@Password";
                //指示执行的是存储过程还是sql语句,默认执行语句
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Password", password));
    
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
    
                UserInfo user = null;
                while (reader.Read())
                {
                    if (user == null)
                    {
                        user = new 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;
            }
        }
    }
    public class ScoreDAO
    {
        /// <summary>
        /// 更新用户积分
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="value">要增长的积分</param>
        public void UpdateScore(string userName,int value)
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
    
                //查询Scores表中是否已有用户信息
                cmd.CommandText = @"SELECT * FROM Scores WHERE UserName =@UserName";                
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Score", value));
    
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();                
    
                //如果Scores表中用户积分已存在就在原来的基础上加10份;否则就插入新的用户积分数据
                if (reader.Read())
                {
                    //在用户原有积分基础上加10分
                    cmd.CommandText = @"UPDATE Scores SET Score+=10 WHERE UserName = @UserName";
                    //关闭reader
                    reader.Close();
                    //执行SQL语句
                    cmd.ExecuteNonQuery();
                }
                else
                {
                    reader.Close();
                    //插入新的用户积分数据
                    cmd.CommandText = @"INSERT INTO SCORES(UserName,Score) Values(@UserName,@Score)";
                    cmd.ExecuteNonQuery();
                }
            }                        
        }
    }
    展开全文
  • Web开发之三层架构

    千次阅读 多人点赞 2022-04-09 15:58:00
    顺序访问原则 三层架构(三层模式) 三层架构的划分(哪三层) 三层架构的理解 实体层 三层架构的原则 三层架构的特征 为什么需要使用三层架构 三层架构与两层架构的区别 面向接口编程 案例:使用三层架构实现用户登录...

    目录

    前言

    正文内容 

    分层与分层模式

    分层

    分层模式

    为什么需要分层模式

    分层开发的优势

    分层的特点

    分层的原则

    1.封装性原则

    2.顺序访问原则

    三层架构(三层模式) 

    三层架构的划分(哪三层)

    三层架构的理解

    实体层 

    三层架构的原则

    三层架构的特征

    为什么需要使用三层架构

    三层架构与两层架构的区别

    面向接口编程

    案例:使用三层架构实现用户登录


    前言:

    在企业进行Web项目的开发时,主要会考虑到以下几点:

    1.系统的耦合性(紧密度):企业比较注重
    耦合性:藕断丝连,系统的每个部分都有联系
    比如:如果用户系统和订单系统之间的耦合性很高,那么一旦用户系统出问题了,订单系统也会出现问题,同时,用户系统和订单系统的耦合性太高,也会影响系统的拓展性业务的拓展性。所以,项目各个部分之间的耦合性太高对系统来说是不好的
    2.系统的拓展性
    3.代码的可读性(容易被看懂):对程序员比较重要
    4.业务的扩展性

    📝可以了解到,耦合性太高对系统的开发、升级、维护都会造成影响,所以,为了降低这种耦合性(解耦),通常会在开发时采用分层模式,这种架构模式中常见的有本期重点讲的三层架构

    📣📣:三层架构即三层模式,所以在讲三层架构之前,先来了解一下分层与分层模式


    正文内容: 

    分层与分层模式

    分层

    • 将解决方案的组件分隔到不同的层中
    • 在同一个层中组件之间保持内聚性
    • 层与层之间保持松耦合

    分层模式

    • 分层模式是最常见的一种架构模式
    • 分层模式是很多架构模式的基础

    为什么需要分层模式

    这是由于JSP在开发过程中存在弊端:

    业务处理的代码与JSP代码混在一起,不易于阅读,不易于代码维护,比如:

    分层开发的优势

    • 复用代码
    • 职责划分清晰
    • 分离开发人员的管制
    • 无损替换(哪一部分出现问题直接使用一个新的这个部分,丢弃有问题的部分)
    • 降低了系统内部的依赖程度

    分层的特点

    • 每一层都有自己的职责
    • 下一层不知道上一层的存在,仅完成自身的功能,不关心结果如何使用
    • 上一层不用关心下一层的实现细节,上一层通过下一层提供的对外接口来使用其功能
    • 上一层调用下一层的功能,下一层不能调用下上一层的功能
    • 每一层仅知道其下一层的存在,忽略其他层的存在

    分层的原则

    1.封装性原则

    • 每个层次向外公开接口,但是隐藏细节

    2.顺序访问原则

    • 下一层为上一层服务,但不使用上一层的服务

    三层架构(三层模式) 

    三层架构的划分(哪三层)

    专业解释:

    1. 表示层(UI,在Eclipse中是jsp) :主要是指与用户交互的界面,用于接收用户输入的数据和显示处理后用户需要的数据 
    2. 业务逻辑层(BIZ):表示层和数据库访问层之间的桥梁,实现业务逻辑,具体包含:验证、计算、业务规则等等
    3. 数据访问层(DAO):与数据库打交道,主要实现对数据的增、删、改、查

    图解:

    三层架构的理解

    通俗解释:

    1. 表示层(UI,在Eclipse中是jsp) :给别人做显示:服务员 
    2. 业务逻辑层(BIZ):针对数据进行加工:厨师 
    3. 数据访问层(DAO):从数据库中拿数据:采购员、仓库(数据库)管理员

    图注释: 

    顾客 :相当于客户端
    服务员 :展示餐厅的菜品(展示数据),相当于表示层
    厨师 :处理食材(处理数据),相当于逻辑处理层
    采购员 :收购食材(获取数据),相当于数据访问层

    实体层 

    除了以上的三层外,还有一层是 Entity层 :实体层 

    📣📣:实体层(如客户User)贯穿三层架构中的三层

    三层架构的原则

    1.上层依赖其下层,依赖关系不跨层

    •  表示层不能直接访问数据访问层
    • 上层调用下层的结果,取决于下层的实现

    2.下一层不能调用上一层

    3.下一层不依赖上一层

    • 上层的改变不会影响下一层
    • 下层的改变会影响上一层得到的结果

    4. 在上一层中不能出现下一层的概念

    • 分工明确,各司其职

    三层架构的特征

    各司其职 :

    • 服务员就是专门和顾客直接交流的,为顾客点菜。表示层就相当于服务员,专门和用户打交道,获取用户的操作
    • 厨师只需要根据顾客点的菜来做。业务逻辑层就相当于厨师,从数据访问层拿来数据,根据表示层传来的用户操作去执行操作
    • 采购员只需根据顾客的菜准备食材,交给厨师即可。数据访问层就相当于采购员,用户需要什么数据,就从数据库或是文件中拿来此数据,交给业务逻辑

     每层之间关系特别(与三层开发的原则有关):

    为什么需要使用三层架构

    主要是为了实现高内聚低耦合(解耦)的思想:

    • 高内聚:尽可能类的每个成员方法只完成一件事
    • 低耦合:减少类内部,一个成员方法调用另一个成员方法

    💬:从类角度来看, 高内聚低耦合就是减少类内部对其他类的调用。从功能块来看, 高内聚低耦合就是减少模块之间的交互复杂度。简单来说,就是解耦:只做自己功能内的事

    • 任何一层发生变化都不会影响到另外一层:

        

    三层架构与两层架构的区别

    两层:

    💬:当任何一个地方发生变化时,都需要重新开发整个系统。“多层”放在一层,分工不明确耦合度高,难以适应需求变化,可维护性低、可扩展性低

    三层:

    💬:发生在哪一层的变化,只需更改该层,不需要更改整个系统。层次清晰,分工明确,每层之间耦合度低,提高了效率,适应需求变化,可维护性高,可扩展性高  

    面向接口编程

    设计与实现分开:

    在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。面向接口编程中编写接口也是为了树立实现类的规范。

    实现方式:

    在开发时建立如下包

    含义:

    • biz : 存放业务逻辑层的接口
    • biz.impl :存放业务逻辑层的实现类
    • dao :存放数据访问层的接口
    • dao.impl :存放数据访问层的实现类
    • entity:存放实体类
    • util:存放帮助类,如DBHelper

    案例:使用三层架构实现用户登录

    在你的项目中建好以上的包、类:

    含义:

    • com.biz包:  存放业务逻辑层的接口:IUserBiz.java
    • com.biz.impl包:  存放业务逻辑层的实现类:UserBizImpl.java
    • com.dao:  存放数据访问层的接口:IUserDao.java
    • com.dao.impl:  存放数据访问层的实现类:UserDaoImpl.java
    • com.pojo:存放实体类:User.java

    经典案例:使用三层架构实现用户登录

    用户登录首页代码:

    <form action="doDenglu.jsp">
            <input type="text" name="username">
            <br>
            <input type="text" name="password">
            <br>
            <button>登录</button>
        </form>

    数据访问层的接口代码:IUserDao.java

    package com.dao;
    import com.pojo.User;
    /**
     *针对数据库操作的接口
     */
    public interface IUserDao {
    	//查询方法
    	User queryByName(User user);
    }
    

    数据访问层接口的实现类代码:UserDaoImpl.java

    package com.dao.impl;
    import com.dao.IUserDao;
    import com.pojo.User;
    /**
     *用户的数据库操作接口实现类
     *实现了:IUserDao接口,重写查询方法
     */
    public class UserDaoImpl implements IUserDao{
    	@Override
    	public User queryByName(User user) {
    		//根据用户名和密码去数据库查询数据
    		  if("aa".equals(user.getUsername())&&"123".equals(user.getPassword())){
    	            return new User("","");
    	        }
    		return null;
    	}	
    }
    

    业务逻辑层接口代码:IUserBiz.java

    package com.biz;
    import com.pojo.User;
    /**
     *	IUserBiz:I代表接口,UserBiz代表用户的业务逻辑
     *	IUserBiz:针对用户的业务逻辑的接口
     */
    public interface IUserBiz {
    	//接口:规定实现类的规范
    	//实现类必须要有登录方法
    	String login(User user);//在接口中直接声明登录方法,不用代码体{}
    }

    业务逻辑层接口的实现类代码:UserBizImpl.java 

    package com.biz.impl;
    import com.biz.IUserBiz;
    import com.dao.IUserDao;
    import com.dao.impl.UserDaoImpl;
    import com.pojo.User;
    /**
     * 业务逻辑层:
     * 用户逻辑接口实现类:实现了IUserBiz接口,就必须重写接口中的方法
     */
    public class UserBizImpl implements IUserBiz{
    	//业务逻辑层(IUserBiz)调用数据库操作层(userDao)
    	//李氏替换原则
    	private IUserDao userDao=new UserDaoImpl();
    	@Override
    	public String login(User user) {
    		//biz包:处理数据
    		 //1.先拿到dao包的数据
            User u = userDao.queryByName(user);
            //2.处理数据
            if(u!=null){
                return "登录成功";
            }
    		return "登录失败";
    	}
    }
    

    处理首页用户登录的代码: 

    <%
    	//从请求中拿数据
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        User user = new User(username, password);
    
        //登录:
        //表示层(jsp)调用业务逻辑层(IUserBiz)
        //先new
         IUserBiz userBiz=new UserBizImpl();
        //再调用业务逻辑层(IUserBiz)的方法
        String message = userBiz.login(user);
    
        //输出结果
        out.print(message);
    %>

     码字不易,点个赞再走呗😜😊

    展开全文
  • 浅谈三层架构、MVC之间的关系

    千次阅读 2022-03-07 01:50:38
    浅谈三层架构、MVC、SSM之间的关系 无论是MVC还是三层架构,都是一种规范,都是奔着"低耦合,高内聚"的思想来设计的。 其实就是两种东西,一个软件、一个系统,可以使用三层架构来开发;也可以使用MVC模式,它们都是...

    什么是三层架构?

    各个层的作用

    实体层的作用

    什么是MVC?

    概念

    职能

    设计模式

    三层架构、MVC之间的关系

    关系示意图

    三层的优缺点

    MVC的优缺点


    什么是三层架构?

    三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

    表现层(UI)

    通俗讲就是展现给用户的界面,用于显示数据和接受用户输入的数据;即用户在使用一个系统的时候他的所见所得。

    业务逻辑层(BLL)

    针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。是表示层和数据访问层之间的桥梁。

    数据访问层(DAL)

    该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

    各个层的作用

    表现层(UI)

    主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

    业务逻辑层(BLL)

    UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

    数据访问层(DAL)

    数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)

    各个层各负其责,通过实体层(Entity)将它们联系起来

    实体层的作用

    1、实现面向对象思想中的"封装";

    2、贯穿于三层,在三层之间传递数据;(注:确切的说实体层贯穿于三层之间,来连接三层

    3、对于初学者来说,可以这样理解:每张数据表对应一个实体,即每个数据表中的字段对应实体中的属性(注:当然,事实上不是这样。为什么?

    (1)可能我们需要的实体在数据表对应的实体中并不存在;

    (2)我们完全可以将所有数据表中的所有字段都放在一个实体里)

    4、每一层(UI—>BLL—>DAL)之间的数据传递(单向)是靠变量或实体作为参数来传递的,这样就构造了三层之间的联系,完成了功能的实现。

    我们可以举一个例子来说明:

    • 服务员:负责接待客人和传菜

    • 主厨:后厨的头头,后处里主厨说了算。可以理解为架构师,负责后厨和服务员的对接

    • 小厨:每个小厨有自己特定的工作,各司其职

    使用三层的目的是为了——解耦

    例如:如果出现以下的问题,我们可以这样子处理:

    假如厨师厨艺不好——换

    假如小厨态度不好——换

    假如服务员态度不好——换

    如果是以往普通的架构,那么这样子可能一层改动会对其他层造成影响!!!

    但是使用“三层架构”就不会了!任何一层发生变化都不会影响到另外一层!!!

    什么是MVC?

    概念

    MVC的全名是Model View Controller,是一种使用“模型-视图-控制器”设计创建Web应用程序的模式,同时提供了对HTML、CSS和JavaScript的完全控制,它是一种软件设计典范。

    使用MVC的目的在于将M(业务模型)和V(用户界面)的实现代码分离,从而使同一个程序可以使用不同的表现形式。C(控制器)存在的目的则是确保M和V的同步一旦M改变,V应该同步更新

    MVC使用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。

    职能

    ● Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常负责在数据库中存取数据。

    ● View(视图)是应用程序中处理数据显示的部分。通常是依据模型数据创建的。

    ● Controller(控制器)是应用程序中处理用户交互的部分。通常负责从视图读取数据,控制用户输入,并向模型发送数据。

    设计模式

    MVC是一种模式,但却在GoF总结出来的这个23个设计模式之外,确切的说它不是一种设计模式,它是多种设计模式的组合,并不仅仅只是一个单独的一个模式。

    组成MVC的三个模式分别是组合模式、策咯模式、观察者模式,MVC在软件开发中发挥的威力,最终离不开这三个模式的默契配合。 那些崇尚设计模式无用论的程序员,请了解只要你们使用MVC,就离不开设计模式。

    View层,单独实现了组合模式

    Model层和View层,实现了观察者模式

    View层和Controller层,实现了策咯模式

    这篇文章写的很好!可以看看 

    深入理解MVC - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/35680070

    三层架构、MVC之间的关系

    (1)MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的表现层也就是说, MVC把三层架构中 表现层再度进行了分化,分成了控制器视图、实体三个部分

    (2)MVC可以是三层中的一个表现层框架,属于表现层。三层和mvc可以共存

    (3)三层是基于业务逻辑来分的,而MVC是基于页面来分的。

    (4)三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系

     

    三层的优缺点

    【优点】

    (1)开发人员可以只关注整个结构中的其中某一层

    (2)可维护性高,可扩展性高

    (3)可以降低层与层之间的依赖;

    (4)有利于标准化;

    (5)利于各层逻辑的复用

    【缺点】

    (1)降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成

    (2)有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码

    (3)增加了开发成本

    MVC的优缺点

    【优点】

    1. 耦合性低,方便维护,可以利于分工协作

    2. 重用性高

    3. 分层,结构清晰,耦合性低,大型项目代码的复用性得到极大的提高,开发人员分工明确,提高了开发的效率,维护方便,降低了维护成本。

    【缺点】

    1. 使得项目架构变得复杂,对开发人员要求高
    2. 简单的小型项目,使用MVC设计反而会降低开发效率,层和层虽然相互分离,但是之间关联性太强,没有做到独立的重用
    展开全文
  • web三层架构

    千次阅读 2022-04-10 11:42:33
    三层架构,架构的使用,三层架构的演示
  • 三层架构中的DAL层,连接sqlsever数据库,其他数据库也可,因资源确实比较珍惜实用(我做东西一直在用这个),网络上没见过相同的代码,所以资源分比较高,若下载后不能用,请联系我~
  • 简单浏览器服务器三层架构XXXX 大 学学生毕业设计(论文)外文译文学生姓名:XXX学号:XXXXXXXXXX专业名称:计算机科学与技术译文标题(中英文):简单浏览器/服务器三层架构(译)Sample B/S 3-tier application译文出处...
  • 1简单说client直接访问DBserver为两层结构 client通过中间件等应用服务器访问DBserver为三层结构 三层结构比两层结构安全 2可以这样理解客户端程序访问服务器的结构叫两层结构中间加一个事务逻辑处理封装的中间件...
  • MVC与三层架构理解

    万次阅读 多人点赞 2020-03-19 11:28:33
    1. JSP的发展 2. MVC思想 优缺点 3. 三层架构 为什么使用三层 三层优缺点 4. MVC与三层架构的区别
  • JAVA三层架构

    2021-11-08 09:10:11
    什么三层架构 二.为什么使用三层架构 一.什么三层架构 UI(表现层): 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。 BLL:(业务逻辑层): UI层和DAL层之间的桥梁。实现业务逻辑。...
  • Java Web 三层架构

    千次阅读 多人点赞 2022-04-13 21:03:59
    补充: (实体层) 1)其实有一个层贯穿了所有的层,那就是业务实体层(Entity ) 2)三层架构效果图如下: 四.分层实现用户登录 1. 实现方式: 1)在开发时建立以下几个包: 2)各种类型包的含义: * biz:存放业务...
  • 数据库的三层架构

    千次阅读 2021-01-20 01:03:38
    三层模式体系结构和数据独立性第1.3节中列出了数据库方法的4个重要特点,其中有以下3个特点:(1)程序与数据分离(程序-数据独立性和程序-操作独立性);(2)支持多用户视图;(3)使用编目存储数据库描述(模式)。在这一节...
  • c#三层架构

    千次阅读 多人点赞 2019-07-04 16:11:49
    最近公司需要用c#,就简单看了一下三层架构三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data ...
  • jsp三层架构

    千次阅读 2022-04-12 20:25:37
    三层架构三层架构的特征 为什么使用三层? 三层与两层的区别: 面向接口编程 实现方式 ​ 什么是三层? 表示层 :主要是指与用户交互的界面,用于接收用户输入的数据和显示处理后用户需要的数据业务逻辑...
  • C#中的三层架构

    2021-12-09 00:29:00
    三层架构,我们一般说的三层架构通常指的是: 1、表现层(UI):就是展现给用户的界面,无论是网站前台还是应用程序界面; 2、业务逻辑层(BLL):针对具体问题的逻辑操作; 3、数据访问层(DAL):对数据进行操作。其他的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,674,628
精华内容 669,851
关键字:

三层架构