三层架构(Three-Tier Architecture)是一种常见的软件架构模式,将应用程序分为三个逻辑层次:表示层、业务逻辑层和数据访问层。每一层都负责处理特定的任务,这样的分层设计有助于提高系统的可维护性、可扩展性和灵活性。
三层架构的三层
- 表示层(Presentation Layer)
- 业务逻辑层(Business Logic Layer)
- 数据访问层(Data Access Layer)
1. 表示层(Presentation Layer)
职责:
- 负责处理用户界面和用户交互。
- 接收用户的输入,并将其传递给业务逻辑层。
- 显示业务逻辑层返回的数据。
技术:
- Web应用:HTML、CSS、JavaScript、JSP、Servlets、Thymeleaf、Angular、React等。
- 桌面应用:JavaFX、Swing、WPF等。
示例: 在Web应用中,表示层包括JSP页面或前端框架中的视图组件,这些组件向用户展示数据并接收用户的输入。
2. 业务逻辑层(Business Logic Layer)
职责:
- 处理应用程序的业务逻辑。
- 执行数据验证、计算和流程控制。
- 决定数据如何传递和处理。
- 充当表示层和数据访问层之间的桥梁。
技术:
- Java:Spring、EJB等。
- .NET:ASP.NET、WCF等。
示例: 在一个订单处理系统中,业务逻辑层负责验证订单数据、计算订单总价、检查库存、处理支付和订单状态等。
3. 数据访问层(Data Access Layer)
职责:
- 负责与数据库或其他数据存储系统进行交互。
- 执行CRUD操作(创建、读取、更新、删除)。
- 将数据存储在数据库中或从数据库中检索数据。
- 将数据库特定的操作抽象化,使业务逻辑层不需要直接与数据库打交道。
技术:
- JDBC、Hibernate、JPA、MyBatis等。
示例: 在一个用户管理系统中,数据访问层负责从数据库中获取用户数据,将新用户数据插入数据库,更新现有用户信息以及删除用户记录等。
为什么要三层架构
-
分离关注点(Separation of Concerns):
- 每一层都有明确的职责和任务,表示层关注用户界面,业务逻辑层处理业务规则,数据访问层负责数据存储和检索。
- 这种分离使得代码更清晰、更易于理解和维护。
-
提高可维护性和可测试性:
- 各层之间的松耦合使得开发人员可以独立地修改和测试每一层,而不影响其他层。
- 比如,修改表示层的UI不会影响业务逻辑层和数据访问层的代码。
-
可重用性(Reusability):
- 业务逻辑层和数据访问层可以被多个表示层复用。
- 例如,同一个业务逻辑层可以服务于Web应用和移动应用。
-
可扩展性(Scalability):
- 各层可以独立地扩展和优化。
- 比如,可以通过增加更多的服务器来扩展表示层,以处理更多的用户请求,而不影响业务逻辑层和数据访问层。
-
灵活性(Flexibility):
- 不同的层可以使用不同的技术和工具。
- 例如,可以使用React或Angular构建表示层,而使用Spring或EJB构建业务逻辑层,使用Hibernate或MyBatis实现数据访问层。