81

我想知道是否有人可以简洁地比较/对比前端、后端和中间件(“中间件”?)之间的差异。

是否存在重叠的情况?是否存在它们必须重叠并且前端/后端不能分开的情况?就瓶颈而言,哪一端与哪种类型的瓶颈相关联?

4

7 回答 7

61

这是一个细分:

前端层 -> 用户界面层通常由 HTML、Javascript、CSS、Flash 和各种服务器端代码(如 ASP.Net、经典 ASP、PHP 等)组成。认为这是最接近用户的层在代码方面。

中间件,中间层 -> 一层后面,通常称为系统的“管道”部分。Java 和 C# 是编写这部分的常用语言,可以看作是 UI 和数据之间的粘合剂,可以是 Web 服务或 WCF 组件或其他 SOA 组件。

后端层 -> 数据库和其他数据存储通常处于此级别。Oracle、MS-SQL、MySQL、SAP 和各种现成的软件都会想到这个软件,它是数据的最终处理。

这些中的任何一个之间都可能存在重叠,因为您可以将所有内容都倒入一层,例如使用生成 Javascript 的内置 AJAX 功能的 ASP.Net 网站,而后面的代码可能包含数据库命令,从而使后面的代码包含中间和后面-结束层。或者,可以使用 VBScript 来充当使用 ADO 对象的所有层,并将所有三层合并为一层。

同样,在某些情况下,可以将中间件与前端或后端结合起来。

瓶颈通常有几个不同的级别:

1) 数据库或后端处理 -> 这可能与工资单或销售或其他数据库吞吐量陷入困境的任务不同。

2) 中间件瓶颈 -> 这将是一些 Web 服务可能会达到容量但前端和后端有带宽来处理更多流量的地方。或者,可能有一些服务器是系统的一部分,它不完全是 UI 部分,或者使用 Biztalk 或 MSMQ 等可能成为瓶颈的原始数据。

3) 前端瓶颈 -> 这可能是客户端或服务器端问题。例如,如果您使用一台低端 PC 并让它加载一个包含大量下载数据的网页,那么客户端可能是瓶颈所在。同样,如果服务器受到 Amazon.com 或其他高流量网站有时可能会收到的请求的影响,它可能会排队请求。

其中一些需要解释,所以它无论如何都不是完美的,YMMV。


编辑:需要考虑的是,某些系统可以有多个前端或后端。例如,内容管理系统可能会为网站访问者提供一种查看前端内容的方法,但内容编辑者如何能够更改网站上的数据呢?提取这些数据的能力可以被视为前端,因为它是一个 UI 组件,或者它可以被视为后端,因为它由内部用户使用,而不是普通公众查看网站。因此,这里有一些要说的上下文。

于 2009-03-11T23:11:05.157 回答
8

一般而言,人们将应用程序的表示层称为其前端,将其持久层(通常是数据库)称为后端,而介于两者之间的任何东西都称为中间层。这组思想通常被称为 3 层架构。它们使您可以将应用程序分成更易于理解(和可测试!)的块;您还可以在较高层中更轻松地重用较低层代码。

哪个代码是哪个层的一部分有点主观;平面设计师倾向于将所有非展示内容视为后端,数据库人员将数据库前面的所有内容视为前端,依此类推。

不过,并非所有应用程序都需要以这种方式分离。拥有 3 个独立的子项目肯定比打开 index.php 并开始破解要多得多。取决于 (1) 您希望维护应用程序的时间 (2) 您希望应用程序变得多复杂,您可能希望放弃复杂性。

于 2009-03-11T23:43:19.273 回答
6

您的问题实际上有 3 个问题:

  • 定义前端、中间和后端
  • 它们如何以及何时重叠?
  • 他们相关的常见瓶颈。

JB King 所描述的是正确的,但它是一个特定的、简单的版本,实际上他将前、中和后部映射到 MVC 层。他将 M 映射到后面,V 映射到前面,C 映射到中间。

对于许多人来说,这很好,因为他们来自甚至没有应用 MVC 的丑陋世界,并且您可以在视图中直接调用 DB。

然而,在真正复杂的 Web 应用程序中,您确实有两三个不同的层,称为前、中和后。它们中的每一个都可能有一个关联的数据库和一个控制器。

最终用户可以看到前端。它不应该与前台混淆,前台是前台参数和管理的 UI。前端通常是某种 CMS 或电子商务平台(Magento 等)

中端不是强制性的,是业务逻辑所在。它将基于 PIM、MDM 工具或某种自定义数据库,您可以在其中丰富您的产品或文章(用于 CMS)。它也是您编写需要在不同前端(例如 PC 前端和基于 API 的移动应用程序之间)之间共享的业务功能的地方。有时,ESB 或 ActiveMQ 之类的工具将成为您的中端

后端将是第 3 层,围绕您的源数据库或 ERP。它可能只是 API 写入和读取您的 ERP。如果您从事电子商务,它可能是您的供应商数据库。事实上,它确实依赖于 web 项目,但它始终是一个中央存储库。可以通过 DB 调用、API、Hibernate 层或全功能后端应用程序访问它

此描述意味着在此线程中无法回答其他 2 个问题,因为瓶颈实际上取决于您的 3 个末端包含的内容:JB King 所写的内容对于简单的 MVC 架构仍然适用

在提出这个问题的时候(5 年前),也许 MVC 模式还没有被广泛采用。现在,绝对没有理由不遵循 MVC 模式并且视图将与 DB 调用相关联。如果您阅读“是否存在必须重叠且前端/后端无法分离的情况?”的问题?在更广泛的意义上,有 3 个不同的组件,那么有时 3 层架构当然是无用的。想想一个简单的个人博客,您不需要提取外部数据或轮询 RabbitMQ 队列。

于 2014-06-17T09:46:26.493 回答
3

这是一个显示前端/中间/后端的真实示例。

一般说明:

  • 前端负责向用户呈现数据。请注意有趣的怪癖,您可能有两个不同的前端与单个后端相关联
  • 后端提供业务逻辑/数据持久性。
  • 中间件(图中的activemq)负责系统到系统。后端之间的集成。通常它作为单独的应用程序安装 在此处输入图像描述

重叠:

前端和后端之间可能存在重叠。这通常会导致应用程序维护和可扩展性方面的长期问题。在遗留应用程序中相当常见。

大多数现代技术堆栈都鼓励开发人员进行严格的分离。例如在图片中你可以看到第一个系统的后端有REST Web服务,这是一条清晰的分隔线。

瓶颈

大多数瓶颈是由数据库/网络引起的。数据库位于后端。至于网络问题,每个连接都通过网络,因此每个连接都有可能变慢。通过良好的应用程序设计,这些问题在很大程度上是可以避免的。

于 2017-06-13T13:36:39.403 回答
0

在网络和安全方面,Backend 是迄今为止(应该是)最安全的节点。

中间端部分,通常是一个网络服务器,在某种程度上与公司的网络隔绝,并且在许多方面都被切断了。中端节点通常放置在 DMZ 中,并通过防火墙设置与网络隔离。大部分网页的服务器端代码解析都是在中端Web服务器上处理的。

到达后端意味着通过中间端,它有一套精心设计的规则,允许/禁止访问存储在数据库(后端)服务器上的重要数字。

于 2009-03-11T23:56:45.623 回答
0

前端是指客户端,而后端是指应用程序的服务器端。两者都对 Web 开发至关重要,但它们的角色、职责和工作环境完全不同。前端基本上是用户所看到的,而后端是一切工作的方式

于 2019-09-22T00:57:04.097 回答
0

前端 -> 这些是网站的客户端,用户可以通过用户界面与服务器交互。通常使用 Html 和 CSS 构建。

中间件 -> 中间件是负责系统通信和管理数据的软件或服务。它处理组件和输入/输出之间的通信

后端 -> 后端是任何应用程序的服务器端,由对数据执行的所有功能和操作组成。这部分被认为是任何应用程序中最重要的部分。只有服务器管理员可以访问它。它主要由数据库和服务器组成。

于 2021-07-14T12:10:23.733 回答