深色模式
Approaches to Application Architecture 应用架构的不同方法 🖥️
学习目标 🎯
观看完本视频后,您将能够:
描述 基于组件的架构(Component-Based Architecture)和面向服务架构(Service-Oriented Architecture, SOA);
解释 组件的特点;
区分 组件与服务的不同;
描述 分布式系统的特点。

组件是什么? 🧩
组件 是一种封装的功能单元,作为应用程序的一部分,与其他组件一起协同工作。组件有六个主要特点:

| 特点 | 描述 |
|---|---|
| 可重用 | 组件应设计为可以在不同的应用程序中重用。 |
| 可替换 | 组件应易于被其他组件替换。 |
| 独立性 | 组件应设计为没有依赖关系,独立运行。 |
| 可扩展 | 可以在不改变其他组件的情况下,向组件中添加新的行为。 |
| 封装 | 将组件的数据和方法捆绑在一起,隐藏内部状态,避免暴露具体实现。 |
| 非特定上下文 | 组件应设计为在不同的环境中均能操作,其内部状态的数据应传递给组件,而不是由组件内部包含或访问。 |

组件的具体示例 🛠️
API 组件:如果一个 API 可以在多个系统和应用程序中重用,它就可以作为组件。例如,一个开源 API 用于将系统连接到特定的数据库。
数据访问对象(DAO):一种为数据库提供接口的组件,通过它可以切换数据库,而无需应用程序知晓。
控制器组件:它决定在特定事件发生时,其他哪些组件需要被调用,控制数据流在两个其他组件之间传递。

基于组件的架构 💻
基于组件的架构 关注将设计拆解为这些逻辑上的组件。它提供比面向对象设计更高层次的抽象。
在基于组件的架构中,应定义、组合和实现松耦合的独立组件,使它们协同工作以创建一个应用程序。

组件与服务的区别 🔄
服务(Service) 是像组件一样的功能单元,但它的设计目的是能够独立部署并且被多个系统复用。服务通常聚焦于解决一个特定的业务需求。
组件 vs 服务
组件 是更小的功能单元,通常是应用程序的一部分。
服务 是一个独立的功能单元,专为通过网络协议进行通信和复用而设计。服务通常只有一个唯一的、始终运行的实例,多个客户端通过它进行通信。

组件与服务的关系图
该图展示了对象、组件和服务在分层架构中的关系。
服务 由 组件 组成,
组件 由 对象 组成,
服务 是一种 组件,并且可以独立部署。

面向服务架构(SOA) 🌐
在 面向服务架构(SOA) 中,服务是松耦合的,并通过通信协议在网络上相互交互。SOA 支持构建分布式系统,这些系统通过通信协议向其他应用程序提供服务。
分布式系统的特点 🖧
分布式系统 是指由多个服务组成,服务分布在不同的机器上,它们通过通信协议(如 HTTP)传递消息,以协调彼此之间的交互。尽管这些服务运行在不同的机器上,最终用户看到的是一个统一的、连贯的系统。

分布式系统的主要特点:
资源共享:硬件、软件和数据等资源在分布式系统中共享。
容错性:如果某个节点或服务发生故障,系统仍然能够继续运行,且系统可以在不中断服务的情况下发生变更。
并行性:分布式系统上的多个活动能够并行执行,从而减少延迟并提高吞吐量。
可扩展性:随着用户数量的增加,分布式系统能够灵活扩展。
异构性:运行分布式系统的计算机不需要使用相同类型的硬件或操作系统,分布式系统可以由不同类型的计算机和编程语言组成。

节点(Node)🔗
在网络中,节点 是任何可以识别、处理和传输数据的设备。一个分布式系统由多个互联的节点组成,这些节点运行一个或多个服务,通常基于 SOA 进行构建。
分布式系统架构类型 🏗️
分布式系统通常使用以下基本架构类型之一:
客户端-服务器架构(Client-Server)
三层架构(Three-Tier)
点对点架构(Peer-to-Peer)
微服务架构(Microservices)
这些架构和它们的特点将在下一个视频中讨论。

结论 📌
通过本视频,您学习了:
组件 具有可重用、独立、可替换、可扩展、封装和非上下文特定的特点。
基于组件的架构 是将系统拆解为逻辑独立组件的过程。
服务 由组件构成,组件则由对象组成,服务被设计为独立部署并且可以被多个系统复用。
在 SOA 中,服务之间是松耦合的,并通过网络协议进行通信。
分布式系统 运行在多个机器上的多个服务中,呈现给最终用户的是一个统一、连贯的系统。
这些概念为理解和设计复杂的应用架构提供了坚实的基础!
