CodeGym/Java 博客/随机的/第 2 部分。让我们谈谈软件架构
John Squirrels
第 41 级
San Francisco

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

已在 随机的 群组中发布
个会员
本资料是“企业发展概论”系列的一部分。第一部分,关于网络,在这里第 2 部分。让我们谈谈软件架构 - 1软件架构是指在应用程序中创建的结构,即整个程序的模块和组件以及它们如何交互。程序员长期以来一直致力于构建良好的架构,因此我们听说过很多架构模式也就不足为奇了。您需要了解它们:在编写 Web 应用程序时,提出一个好的架构至关重要,因为 Web 应用程序比常规应用程序具有更多的组件和模块。一种架构模式是解决一些软件设计问题的聪明方法。您可能遇到过设计模式,例如工厂方法、抽象工厂、构建器、原型、单例,可能还有其他模式。我们在编写代码、创建类和规划类如何交互时使用它们。在规划用户与服务器、数据和其他组件的交互时,架构模式用于更高的抽象级别。让我们快速浏览一些模式以及如何使用它们。

客户端-服务器架构

这个名字给人的印象是这个模式的一切都简单明了。但是让我们澄清一些要点,这样当你开始学习 Spring 时你就会明白我们在说什么。假设您编写了一个聊天应用程序,并且您和一个朋友开始使用它。您可以采用一种非常简单的方法,使用已知 IP 地址通过 Internet 直接相互发送消息: 第 2 部分。让我们谈谈软件架构 - 2起初,一切似乎都很好,直到您的另一个朋友要求加入聊天。因此,当您决定将您共同的朋友添加到聊天中时,您将面临一个架构问题:对于每个聊天参与者,您需要提供有关用户数量和新用户 IP 地址的当前信息。发送消息时,需要将其传递给所有参与者。这些是将出现的最明显的问题。另一堆问题将隐藏在代码本身中。为了避免它们,您需要使用服务器,它将存储有关用户的所有信息,包括他们的地址。消息只需要发送到服务器。反过来,它向每个收件人发送消息。当您决定将服务器部分添加到您的聊天应用程序时,您就开始构建客户端-服务器架构。

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

让我们看看这是怎么回事。客户端-服务器架构是一种用于创建 Web 应用程序的设计模式。该架构由三个组件组成: 第 2 部分。让我们谈谈软件架构 - 3
  1. 客户端——从它的名字,我们可以看出这个组件使用一些服务(网络应用程序),联系服务器请求一些信息。

  2. 服务器 — 这是您的 Web 应用程序或其服务器部分所在的位置。它存储必要的用户信息或可以请求它。此外,当客户端发送请求时,返回请求信息的是服务器。

  3. 网络——这部分很简单。它促进了客户端和服务器之间的信息交换。

服务器可以处理来自不同用户的大量请求。这意味着可以有很多客户端。如果他们之间需要交换信息,则必须通过服务器进行。于是,服务器又多了一个功能:流量控制。关于我们的多用户聊天程序,整个应用程序将由两个模块组成:
  • 客户端模块——包含用于登录和发送/接收消息的图形界面

  • 服务器模块——托管在服务器上的 Web 应用程序,它接收来自用户的消息,处理它们,然后将它们发送给收件人

第 2 部分。让我们谈谈软件架构 - 4当我们想在 Internet 上查看有用(或不太有用)的信息时,我们会打开浏览器,在搜索栏中输入查询,然后从搜索引擎中获取信息作为响应。在这条链中,浏览器就是客户端。它向服务器发送一个请求,其中包含有关我们要查找的内容的信息。服务器处理请求,找到最相关的结果,将它们以浏览器(客户端)可以理解的格式打包并发回。像搜索引擎这样的复杂服务可能有很多服务器。例如授权服务器、查找信息的服务器、生成响应的服务器等。但是客户端对这一切都一无所知,也不关心:对于客户端来说,服务器是一个统一的实体。客户端只知道入口点,即 应向其发送请求的服务器地址。回想一下我们在本系列的前一部分。这是为了实时监测所有国家的平均气温。它的架构看起来像这样: 第 2 部分。让我们谈谈软件架构 - 5我们的应用程序位于服务器上。假设它每五秒钟向当地气象站运行的服务器发送请求,从服务器接收特定国家/地区的温度信息,并存储此信息。当客户要求我们“查看世界当前气温”时,我们返回最近存储的信息,按国家排序。因此,我们的应用程序既充当服务器(当它处理用户请求时)又充当客户端(当它从其他服务器接收信息时)。
这里有一个很重要的点:服务器的概念不是关于特定的计算机,而是关于网络实体之间的关系
简单的客户端-服务器架构很少使用,而且只用于非常简单的应用程序。对于真正大型和复杂的项目,我们使用不同的架构,您将来会遇到这些架构。现在让我们来看一个与客户端-服务器架构非常相似的模型。

三层架构

这是一种架构模式,引入了第三个模块——数据存储。在此模式中,三个级别通常称为层或层: 第 2 部分。让我们谈谈软件架构 - 6
  1. 客户端层是用户界面,也称为表示层。它可以是接收 HTML 页面的 Web 浏览器,也可以是使用 JavaFX 编写的图形用户界面。最主要的是这一层允许用户向服务器发送请求并处理其响应。

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

  3. 数据层是数据库服务器:我们的服务器与之交互。该层存储应用程序运行所需的所有信息。

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

三层架构的优点

像这样的架构为我们提供了许多优势,包括:
  1. 防止 SQL 注入的能力(这是对服务器的攻击;它涉及发送 SQL 代码,执行时允许攻击者影响我们的数据库)。

  2. 分离我们要控制用户访问的数据。

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

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

  5. 对用户连接质量的要求不那么严格。在服务器上生成响应时,我们经常从数据库中获取大量不同的信息并对其进行格式化,只留下用户需要的信息。这样做可以减少我们在回复客户时发送的信息量。

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

如果您熟悉工厂方法设计模式,您可能想知道何时使用它。有时很难决定要做什么:使用 new 运算符或使用工厂方法创建对象。但随着时间的推移,理解来了。当谈到架构模式时,情况略有不同。企业框架旨在允许程序员根据一些普遍接受的模式创建项目。因此,在学习Spring Framework之前,一定要了解客户端-服务器架构、三层架构和MVC架构。别担心:我们还会讨论 MVC 架构。 第 3 部分 HTTP/HTTPS 第 4 部分 Maven 的基础知识 第 5 部分。Servlet 和 Java Servlet API。编写一个简单的 Web 应用程序 第 6 部分。Servlet 容器 第 7 部分。介绍 MVC(模型-视图-控制器)模式
评论
  • 受欢迎
你必须先登录才能发表评论
此页面还没有任何评论