Skip to content

Approaches to Application Architecture 应用架构的不同方法 🖥️

学习目标 🎯

观看完本视频后,您将能够:

  • 描述 基于组件的架构(Component-Based Architecture)和面向服务架构(Service-Oriented Architecture, SOA);

  • 解释 组件的特点;

  • 区分 组件与服务的不同;

  • 描述 分布式系统的特点。

image 29.png


组件是什么? 🧩

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

image 30.png

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

image 31.png


组件的具体示例 🛠️

  1. API 组件:如果一个 API 可以在多个系统和应用程序中重用,它就可以作为组件。例如,一个开源 API 用于将系统连接到特定的数据库。

  2. 数据访问对象(DAO):一种为数据库提供接口的组件,通过它可以切换数据库,而无需应用程序知晓。

  3. 控制器组件:它决定在特定事件发生时,其他哪些组件需要被调用,控制数据流在两个其他组件之间传递。

image 32.png


基于组件的架构 💻

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

image 33.png


组件与服务的区别 🔄

服务(Service) 是像组件一样的功能单元,但它的设计目的是能够独立部署并且被多个系统复用。服务通常聚焦于解决一个特定的业务需求。

组件 vs 服务

  • 组件 是更小的功能单元,通常是应用程序的一部分。

  • 服务 是一个独立的功能单元,专为通过网络协议进行通信和复用而设计。服务通常只有一个唯一的、始终运行的实例,多个客户端通过它进行通信。

image 34.png

组件与服务的关系图

该图展示了对象、组件和服务在分层架构中的关系。

  • 服务组件 组成,

  • 组件对象 组成,

  • 服务 是一种 组件,并且可以独立部署。

image 35.png


面向服务架构(SOA) 🌐

面向服务架构(SOA) 中,服务是松耦合的,并通过通信协议在网络上相互交互。SOA 支持构建分布式系统,这些系统通过通信协议向其他应用程序提供服务。

分布式系统的特点 🖧

分布式系统 是指由多个服务组成,服务分布在不同的机器上,它们通过通信协议(如 HTTP)传递消息,以协调彼此之间的交互。尽管这些服务运行在不同的机器上,最终用户看到的是一个统一的、连贯的系统。

image 36.png


分布式系统的主要特点:

  • 资源共享:硬件、软件和数据等资源在分布式系统中共享。

  • 容错性:如果某个节点或服务发生故障,系统仍然能够继续运行,且系统可以在不中断服务的情况下发生变更。

  • 并行性:分布式系统上的多个活动能够并行执行,从而减少延迟并提高吞吐量。

  • 可扩展性:随着用户数量的增加,分布式系统能够灵活扩展。

  • 异构性:运行分布式系统的计算机不需要使用相同类型的硬件或操作系统,分布式系统可以由不同类型的计算机和编程语言组成。

image 37.png


节点(Node)🔗

在网络中,节点 是任何可以识别、处理和传输数据的设备。一个分布式系统由多个互联的节点组成,这些节点运行一个或多个服务,通常基于 SOA 进行构建。


分布式系统架构类型 🏗️

分布式系统通常使用以下基本架构类型之一:

  • 客户端-服务器架构(Client-Server)

  • 三层架构(Three-Tier)

  • 点对点架构(Peer-to-Peer)

  • 微服务架构(Microservices)

这些架构和它们的特点将在下一个视频中讨论。

image 38.png


结论 📌

通过本视频,您学习了:

  • 组件 具有可重用、独立、可替换、可扩展、封装和非上下文特定的特点。

  • 基于组件的架构 是将系统拆解为逻辑独立组件的过程。

  • 服务 由组件构成,组件则由对象组成,服务被设计为独立部署并且可以被多个系统复用。

  • SOA 中,服务之间是松耦合的,并通过网络协议进行通信。

  • 分布式系统 运行在多个机器上的多个服务中,呈现给最终用户的是一个统一、连贯的系统。

这些概念为理解和设计复杂的应用架构提供了坚实的基础!

image 39.png