首页 > 其他分享 >三层架构的概念

三层架构的概念

时间:2024-07-18 16:55:35浏览次数:16  
标签:逻辑 架构 表示层 业务 概念 User 三层 public

文章目录


一、什么是三层架构

1.概念

三层架构(Three-tier architecture)与MVC类似(Model-View-Controller)同样是一种软件架构模式,将应用程序分为三个主要层次:表示层(User Interface layer),业务逻辑层(Business Logic Layer),和数据访问层(Data Access layer)。这种分层架构的设计目的是提高应用程序的可维护性、可扩展性和可管理性。

2.具体描述

表示层(User Interface layer):

  • 负责处理用户界面和用户交互。
  • 通常包括网页、移动应用界面或桌面应用界面。
  • 将用户的输入传递给业务逻辑层,并将业务逻辑层的输出呈现给用户。

业务逻辑层(Business Logic Layer):

  • 处理应用程序的业务逻辑和规则。
  • 接收表示层的请求,进行处理后调用数据访问层来获取或存储数据。
  • 将处理结果返回给表示层。

数据层(Data Access layer):

  • 负责与数据库或其他持久化存储交互。
  • 执行CRUD操作(创建、读取、更新、删除)。
  • 将数据返回给业务逻辑层。

二.三层架构的优缺点

1.优点

1.分离关注点:

  • 表示层负责用户界面和用户交互。
  • 业务逻辑层处理应用程序的核心功能和业务规则。
  • 数据访问层管理数据存储和检索。
    这种分离使得每一层可以独立开发、测试和维护,减少了模块间的耦合性。

2.提高可维护性。
由于各层的职责明确,修改某一层的代码通常不会影响其他层,从而简化了代码的维护和升级。

3.提高可重用性:
各层独立工作,可以在不同的项目中重用。例如,业务逻辑层可以在多个表示层(如Web、移动端)中使用。

4.增强可扩展性:
各层可以独立扩展。例如,可以通过增加服务器来扩展数据访问层或业务逻辑层,以应对更高的负载。

5.便于测试:
各层可以单独进行测试。单元测试可以集中在业务逻辑层,而表示层和数据访问层可以进行集成测试。

6.安全性:
通过限制各层的访问权限,可以提高系统的安全性。例如,业务逻辑层和数据访问层可以隐藏在防火墙后面,只有表示层与用户直接交互。

2.缺点

1.复杂性增加:
引入三层架构会增加系统的复杂性,尤其是在小型项目中,可能显得过于繁琐。

2.性能开销:
层与层之间的通信会增加系统的开销,例如网络延迟和数据传输时间,可能导致性能下降。

3.开发成本增加:
由于需要开发和维护多个层次的代码,开发周期和成本会增加。

4.调试困难:
多层次架构可能导致调试过程变得更加复杂。问题可能出现在任何一层,追踪和定位问题的来源需要更多的时间和精力。
三层架构逻辑图

三,三层架构部分代码演示

表示层(User Interface layer)

// 控制器类
public class UserController {
    private UserService userService = new UserService();

    public void displayUserDetails(int userId) {
        User user = userService.getUserById(userId);
        System.out.println("User Details: " + user);
    }
}

Controller类负责处理用户界面和用户交互,并调用Service类将用户的输入传递给业务逻辑层

业务逻辑层(Business Logic Layer)

// 业务服务类
public class UserService {
    private UserDao userDao = new UserDao();

    public User getUserById(int userId) {
        return userDao.getUserById(userId);
    }
}

Service主要处理应用程序的业务逻辑和规则。接收表示层Controller的请求,进行处理后调用数据访问层来获取或存储数据。

数据访问层(Data access layer)

// 数据访问对象类
public class UserDao {
    // 模拟数据库查询
    public User getUserById(int userId) {
        // 在实际应用中,这里会有数据库查询代码
        return new User(userId, "小芳");
    }
}

数据访问层主要负责数据库的增删改查等操作

pojo对象类

// 用户类
public class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{id=" + id + ", name='" + name + "'}";
    }
}

标签:逻辑,架构,表示层,业务,概念,User,三层,public
From: https://blog.csdn.net/weixin_61880433/article/details/140480446

相关文章

  • 华为云DTSE助力悦知技术架构升级、打破业务瓶颈
    本文分享自华为云社区《悦知技术架构升级,打造一站式数字教育平台,加速企业提效创新》,作者:HuaweiCloudDeveloper。改善传统技术架构——实现数字化转型悦知是国内领先的数字教育产品与解决方案提供商,专注教育行业信息化深度耕耘10余年,是教育行业+IT技术深度融合解决方案的最佳......
  • 如何在Java中实现基于Kafka的事件驱动架构
    如何在Java中实现基于Kafka的事件驱动架构大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!事件驱动架构在现代分布式系统中被广泛应用,它通过异步事件传递来解耦系统中的各个组件,提高系统的可扩展性和灵活性。ApacheKafka作为一个高吞吐量的分布式消息队......
  • NTP时间同步服务器(卫星时钟同步装置)基本架构介绍
    NTP时间同步服务器(卫星时钟同步装置)基本架构介绍NTP时间同步服务器(卫星时钟同步装置)基本架构介绍京准电钟官微——ahjzsz摘要:基于北斗的全球卫星系统(BDS)的高精度同步时钟信号在电网广域测量系统(WAMS)等很多领域具有广泛用途;但在实际应用中存在因卫星失锁等原因导致同步时钟信号......
  • 深入解析微服务架构之Spring Cloud
    目录微服务架构简介什么是微服务微服务的优势微服务的挑战SpringCloud概述SpringCloud简介SpringCloud的主要特性SpringCloud的模块划分SpringCloud核心组件详解SpringCloudNetflixSpringCloudConfigSpringCloudGatewaySpringCloudSleuthSpringCloudBu......
  • 华为云DTSE助力悦知技术架构升级、打破业务瓶颈
    本文分享自华为云社区《悦知技术架构升级,打造一站式数字教育平台,加速企业提效创新》,作者:HuaweiCloudDeveloper。改善传统技术架构——实现数字化转型悦知是国内领先的数字教育产品与解决方案提供商,专注教育行业信息化深度耕耘10余年,是教育行业+IT技术深度融合解决方案的最佳实......
  • 【软件工程造价师必修课:概念篇】6.软件开发工作量评估方法
    根据调整后软件开发规模,评估工作量,公式如下:AE=(S*PDR)*SWF*RDF式中:AE:调整后的评估工作量,单位为人时;S:调整后规模,单位为功能点;PDR:功能点耗时率,单位为人时每功能点。PDR的取值可参见调整因子列表;SWF:软件因素调整因子,包含业务领域、应用类型及质量特性调整因子,上述调整因子的......
  • 机械学习—零基础学习日志(高数04——函数概念与特性)
    零基础为了学人工智能,真的开始复习高数然后开始学习复合函数,主要掌握复合的方法。求解复合函数,先稍微百度百科一下,什么是因式分解:因式分解:​把一个多项式在一个范围(如实数范围内分解,即所有项均为实数)化为几个整式的积的形式,这种式子变形叫做这个多项式的因式分解,也叫作把......
  • DPU:值不值得托付下一代存储加速架构?
    一、为什么需要DPU?在信息爆炸的时代,数据处理单元(DPU)作为新兴的数据中心基础设施核心,正逐步崭露头角,成为提升数据处理效率、优化成本结构的关键角色。传统的数据中心架构主要以CPU为中心,这使得数据中心的计算和存储任务主要依赖于CPU的处理能力。但是,随着数据量的不断增长,这种......
  • “打造高性能Fabric集群:一键构建你的分布式架构帝国!“
    一、环境准备1.虚拟机为ubuntu22.042.将ubuntu的软件镜像源更换为国内的镜像源(命令如下)sudovim/etc/apt/source.list(vim下载与使用自行百度)将文件内容清空,然后复制下方代码粘贴,保存退出即可。debhttps://mirrors.aliyun.com/ubuntu/jammymainrestrictedunive......
  • 膜片钳的基本概念—电压钳原理详解
    什么是电压钳  在膜片钳技术出现之前,其实就存在电压钳技术,他的原理是通过向细胞内注射变化的电流,抵消离子通道开放时所产生的离子流,从而将细胞膜电位固定在某一数值,即钳制电压,记录电流。通俗点就是,将细胞上的电压保持为一个我们设定的电压值,同时记录跨膜电流。  作用主要是......