--- title: "01-关于架构" created: 2025-12-02 tags: - 项目 aliases: - 关于架构 --- # 关于架构 ## 一、基本架构模式 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等)。 - **整体架构的理解**:通过对各个技术模块的理解和组合,可以根据项目需求设计适合的架构。 ## --- **项目分区导航**: [[00-配置git环境与项目创建|配置git环境与项目创建]] ⬅️ | 01-关于架构 | ➡️ [[02-前后端分离or不分离?|前后端分离or不分离?]]