JavaRush /Java 博客 /Random-ZH /第 2 部分:让我们谈谈软件架构

第 2 部分:让我们谈谈软件架构

已在 Random-ZH 群组中发布
本材料是“企业发展概论”系列的一部分。关于网络的第一部分在这里第 2 部分:让我们谈谈软件架构 - 1软件架构是创建应用程序以及整个程序的模块和组件交互的基础的结构。长期以来,程序员一直在尝试创建良好的架构,因此我们现在了解很多架构模式也就不足为奇了。您需要理解它们:当您编写 Web 应用程序时,架构问题变得很尖锐,因为其中比常规应用程序有更多的组件和模块。 架构模式是解决某些软件设计问题的一种经过深思熟虑的方法。您可能已经遇到过工厂方法、抽象工厂、构建器、原型、单例等设计模式。它们用于简单地编写代码、创建类并规划它们的交互方式。架构模式用于更高的抽象级别 - 当规划应用程序用户与服务器、数据和项目的其他组件的交互时。让我们快速浏览一下一些模板以及如何使用它们。

客户端-服务器架构

从名字上就可以看出这个主题的一切都很简单明了。但让我们澄清一些要点,以便当您开始研究条件 Spring 时,您可以准确理解我们在说什么。假设您编写了一条聊天记录,并且您和您的朋友开始使用它。这里有一个简单的选择 - 您使用您知道的 IP 地址直接通过互联网向对方发送消息: 第 2 部分:让我们谈谈软件架构 - 2起初,似乎一切正常,直到您的另一个朋友出现并提出问题:“为什么不这样做?你不把我加入你的聊天室吗?” 当您决定将共同的朋友添加到聊天中时,您将面临一个架构问题:每个聊天用户都需要更新有关用户数量的信息,添加新用户的 IP 地址。并且在发送消息时,必须将其传递给所有参与者。这些是将会出现的最明显的问题。更多的问题将隐藏在代码本身中。为了避免它们,您需要使用一个服务器来存储有关用户的所有信息并知道他们的地址。该消息只需发送到服务器即可。反过来,他会将消息发送给所有收件人。当您决定在聊天中添加服务器端时,您将开始构建客户端-服务器架构。

客户端-服务器架构的组件

让我们弄清楚她是什么。 客户端-服务器架构是一种设计模式,是创建 Web 应用程序的基础。该架构由三个组件组成: 第 2 部分:让我们谈谈软件架构 - 3
  1. 客户端 - 从名称中可以清楚地看出这是一个服务(Web 应用程序)的用户,他联系服务器以获取某些信息。

  2. 服务器是您的 Web 应用程序或其服务器部分所在的位置。他拥有或可以请求有关用户的必要信息。此外,当客户端联系时,服务器返回请求的信息。

  3. 网络很简单:它保证客户端和服务器之间的信息交换。

服务器可以处理来自不同用户的大量请求。也就是说,可以有很多客户端,如果它们需要相互交换信息,则必须通过服务器来完成。这样,服务器就多了一项附加功能——流量控制。如果我们谈论的是我们创建的多用户聊天,整个程序代码将由两个模块组成:
  • 客户端 - 包含用于授权、发送/接收消息的图形界面;

  • 服务器端 - 托管在服务器上的 Web 应用程序,接收来自用户的消息,对其进行处理,然后将其发送给收件人。

第 2 部分:让我们谈谈软件架构 - 4当我们想要在互联网上查看有用(或不太有用)的信息时,我们打开浏览器,在搜索栏中输入查询,作为响应,我们从搜索引擎接收信息。在这个链条中,浏览器就是我们的客户端。它向服务器发送一个请求,其中包含有关我们正在查找的内容的信息。服务器处理请求,找到最相关的结果,将它们打包成浏览器(客户端)可以理解的格式并将其发回。在像搜索引擎这样的复杂服务中,可能有很多服务器。例如,授权服务器、用于搜索信息的服务器、用于生成响应的服务器。但客户端对此一无所知:对他来说,服务器是统一的东西。客户端只知道入口点,即它需要向其发送请求的服务器的地址。让我们记住我们在上一部分中看到的应用程序- 用于实时监控所有国家的平均气温。它的架构看起来像这样: 第 2 部分:让我们谈谈软件架构 - 5我们的应用程序位于服务器上。比方说,它每五秒向当地水文气象中心的服务器发送一次请求,从它们接收有关特定国家温度的信息,并存储这些信息。当客户联系我们请求“查看世界当前气温”时,我们会返回最新存储的信息(按国家/地区排序)。因此,我们的应用程序既是服务器(当它处理用户请求时)又是客户端(当它从其他服务器接收信息时)。
重要提示:服务器的概念不是关于特定的计算机,而是关于网络订阅者之间的关系
简单的客户端-服务器架构很少使用,并且仅用于非常简单的应用程序。对于真正大型且复杂的项目,会使用不同类型的架构,您将来会更加熟悉这些架构。现在,让我们看一个与客户端-服务器模型非常相似的模型。

三层架构

这种架构模式引入了第三个参与者:数据仓库。使用此模式时,这三个级别通常称为层: 第 2 部分:让我们谈谈软件架构 - 6
  1. 客户端层是用户界面。这可以是 HTML 页面发送到的 Web 浏览器,也可以是使用 JavaFX 编写的 GUI 应用程序。最主要的是,在它的帮助下,用户可以向服务器发送请求并处理其响应。

  2. 逻辑层是处理请求/响应的服务器。它通常也称为服务器层。所有逻辑操作也发生在这里:数学计算、数据操作、调用其他服务或数据存储。

  3. 数据层是数据库服务器:我们的服务器访问它。该层存储应用程序在操作期间使用的所有必要信息。

因此,我们的服务器承担访问数据的所有义务,不允许用户直接访问数据。

三层架构的优点

使用这样的架构,我们获得了很多优势,包括:
  1. 建立针对SQL注入的防护能力是对传输SQL代码的服务器进行攻击,当执行此代码时,攻击者可以影响我们的数据库。

  2. 我们想要规范用户访问的数据的界定。

  3. 能够在将数据发送给客户端之前修改数据。

  4. 可扩展性 - 将我们的应用程序扩展到将使用相同数据库的多个服务器的能力。

  5. 对用户连接质量的要求较低。当在服务器上生成响应时,我们经常从数据库中获取大量不同的信息,对其进行格式化,只留下用户需要的信息。通过这种方式,我们可以减少作为响应发送给客户端的信息量。

您应该多久使用一次架构模式?

如果您熟悉工厂方法设计模式,您可能想知道何时使用它。有时很难决定要做什么:使用 new 运算符还是使用工厂方法创建对象。但随着时间的推移,理解就会到来。对于架构模式,情况有些不同。企业框架是为程序员使用它们来创建基于某种普遍接受的模式的项目而设计的。因此,在学习Spring框架之前,你肯定需要了解什么是客户端-服务器架构、三层架构和MVC架构。别担心:我们稍后会讨论 MVC 架构。 第 1 部分:学习 Spring 和 JavaEE 之前需要了解的内容 第 3 部分:HTTP/HTTPS 协议 第 4 部分:Maven 基础知识 第 5 部分:Servlet。编写一个简单的 Web 应用程序 第 6 部分. Servlet 容器 第 7 部分. 介绍 MVC(模型-视图-控制器)模式 第 8 部分. 编写一个小型 spring-boot 应用程序
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION