关于架构

一、基本架构模式

  1. CS 架构(Client-Server 架构)
    • 定义:CS 架构是客户端与服务器的模式,用户通过客户端软件直接与服务器通信。
    • 特点:客户端需要安装本地软件,服务器提供数据和服务,适用于高交互需求的桌面应用。
    • 例子:如QQ、微信桌面版等。
  2. BS 架构(Browser-Server 架构)
    • 定义:BS 架构是浏览器与服务器的模式,用户通过浏览器访问服务器。
    • 特点:用户不需要安装额外的软件,只需通过浏览器即可访问Web应用。适用于大部分现代Web应用。
    • 例子:各类电商网站、社交媒体等。

二、设计模式与三层架构

MVC(Model-View-Controller)模式

  • 定义:MVC 是一种经典的设计模式,用于分离应用程序的业务逻辑、数据管理和用户界面。
  • 核心组成
    • Model:负责数据处理和业务逻辑(不仅仅是数据库,包含数据访问对象、业务逻辑层等)。
    • View:负责用户界面展示,将数据渲染成HTML、CSS等前端展示内容。
    • Controller:负责处理用户请求,协调 Model 和 View 之间的交互。
  • 工作流程
    1. 用户发送请求,Controller 负责接收并处理。
    2. Controller 调用 Model 获取数据并进行逻辑处理。
    3. 将处理结果传递给 View,View 将数据渲染成用户可以看到的界面。
  • 优点:提高了代码的维护性和可读性,分离了逻辑与展示。

三层架构概述

三层架构是一种经典的软件架构模式,通常分为表示层、业务逻辑层和数据访问层。

  • 表示层(Presentation Layer):负责用户界面和用户交互,将用户请求传递到业务逻辑层,并将结果展示给用户。主要处理UI部分的逻辑。

    技术:前端框架(如HTML/CSS/JavaScript、Vue、React等),以及Web控制器(如Spring MVC的Controller)。

  • 业务逻辑层(Business Logic Layer, BLL):负责应用的核心业务逻辑。它接收来自表示层的请求,进行业务计算和数据处理,并可能调用数据访问层。

    技术:在Java中通常使用Service类和接口实现。

  • 数据访问层(Data Access Layer, DAL):负责与数据库交互,执行CRUD操作,将数据传递给业务逻辑层。

    技术:常用DAO模式(Data Access Object),使用MyBatis、Hibernate等ORM框架或直接使用JDBC等。

三层架构的工作流程

  • 用户通过表示层发送请求。
  • 表示层将请求传递给业务逻辑层进行处理,业务逻辑层根据业务规则处理数据,并可能调用数据访问层。
  • 数据访问层从数据库中获取数据或更新数据,然后将结果返回给业务逻辑层。
  • 业务逻辑层将处理后的数据返回给表示层,表示层负责将数据呈现给用户。

三层架构与MVC模式的对比

  • 表示层:对应MVC中的View部分,负责用户界面展示。
  • 业务逻辑层:对应MVC中的Controller的更深度实现,处理复杂的业务逻辑。
  • 数据访问层:对应MVC中的Model部分,负责数据的获取和操作。

三层架构的优势

  • 职责分离:降低系统的耦合度,增强代码的可读性和可维护性。
  • 可扩展性高:表示层、业务逻辑层和数据访问层的变更不会互相影响。
  • 易于测试:可以对每一层进行单独的测试。

三、Spring 框架与 Spring Boot

  1. Spring Framework 概述
    • 定义:Spring 是一个企业级的Java开发框架,支持依赖注入(DI)和面向切面编程(AOP),提供了全面的解决方案。
    • 主要模块
      • Spring MVC:提供基于MVC模式的Web开发支持。
      • Spring Data:简化数据访问操作,支持多种持久化技术(如JPA、MongoDB等)。
      • Spring Security:提供安全解决方案,支持认证和授权。
      • Spring Cloud:用于构建分布式微服务架构。
  2. Spring Boot
    • 定义:Spring Boot 是 Spring Framework 的一个子项目,旨在简化Spring应用的配置和开发。
    • 特点:提供自动配置、内置服务器(如Tomcat)、快速搭建项目的能力。
    • 与Spring的关系:Spring Boot 基于Spring Framework,通过简化配置和约定优于配置的原则,加速项目的开发。
  3. MVC 与 Spring Boot 的关系
    • Spring Boot 中的MVC:Spring Boot 内部集成了 Spring MVC,使得基于MVC模式的Web开发变得更加简单。开发者可以通过简单的配置实现复杂的请求处理和视图渲染。

四、持久层框架与SSM架构

  1. MyBatis 概述
    • 定义:MyBatis 是一个持久层框架,用于简化数据库操作。它允许开发者直接编写SQL并通过映射配置文件与Java对象进行绑定。
    • 特点:相比全自动化的ORM框架(如Hibernate),MyBatis 更灵活,适用于对SQL控制要求较高的项目。
  2. SSM 框架(Spring + Spring MVC + MyBatis)
    • 定义:SSM 是一种基于Spring的开发架构,结合了Spring的依赖注入、Spring MVC的控制层逻辑以及MyBatis的持久层数据处理。
    • 特点:适用于复杂的企业项目,可以灵活地根据项目需求进行定制。
  3. Spring Boot 与 SSM 的对比
    • Spring Boot:自动化配置高、简化了配置过程,适用于快速开发和微服务架构。
    • SSM:灵活性高,适用于需要手动配置和定制化的复杂项目。

五、其他常用技术

  1. Hibernate
    • 定义:Hibernate 是一个全自动化的ORM框架,简化了对象和数据库表之间的映射工作。
    • 与MyBatis的区别:Hibernate 提供了更多的自动化功能,适合无需精细控制SQL的场景;而MyBatis更灵活,可控制复杂的SQL操作。
  2. Tomcat 服务器
    • 定义:Tomcat 是一个Java Web服务器,支持Servlet和JSP技术。Spring Boot 内置了Tomcat,简化了Web应用的部署。
  3. RESTful API 与 API 设计
    • 定义:在前后端分离的项目中,RESTful API 是最常见的数据交互方式。通过标准化的URL路径和HTTP方法(GET、POST、PUT、DELETE等),开发者可以清晰地设计和维护Web API。
  4. 安全与性能优化
    • 安全:在开发过程中,需要了解常见的安全问题(如SQL注入、XSS、CSRF)以及如何使用Spring Security进行防护。
    • 性能:包括缓存机制、连接池管理、内存泄漏检测等。

六、总结

  • 架构的选择:CS和BS是两种不同的应用架构模式,适用于不同的场景。
  • 三层架构的应用:三层架构将应用程序分为表示层、业务逻辑层和数据访问层,实现了职责的分离和系统的可扩展性。
  • MVC模式的应用:MVC是经典的设计模式,通过Spring MVC在Spring Framework中得到了具体实现。
  • Spring Boot 的优势:简化了Spring的配置,适用于快速开发、微服务架构的构建。
  • 持久层框架的选择:根据项目的需求选择适当的持久层技术(如MyBatis、Hibernate等)。
  • 整体架构的理解:通过对各个技术模块的理解和组合,可以根据项目需求设计适合的架构。


项目分区导航配置git环境与项目创建 ⬅️ | 01-关于架构 | ➡️ 前后端分离or不分离?