Web开发中前端,后端和中间件之间的区别

时间:2009-03-11 22:53:50

标签: web-services architecture

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

是否存在重叠的情况? 是否有必须重叠的情况,前端/后端不能分开? 在瓶颈方面,哪一方面与哪种类型的瓶颈有关?

7 个答案:

答案 0 :(得分:56)

这是一个细分:

前端层 - >用户界面层通常由HTML,Javascript,CSS,Flash和各种服务器端代码(如ASP.Net,经典ASP,PHP等)组成。将其视为在代码方面最接近用户。 / p>

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

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

任何这些之间都可能存在重叠,因为你可以将所有内容都放入一个层,就像ASP.Net网站一样,它使用内置的AJAX功能生成Javascript,而后面的代码可能包含数据库命令,使后面的代码包含中间和后端层。或者,可以使用VBScript作为所有层使用ADO对象并将所有三个层合并为一个。

同样,在某些情况下,可以合并中间件以及前端或后端。

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

1)数据库或后端处理 - >这可能因工资单或销售或其他任务而异,其中数据库的吞吐量正在减少。

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

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

其中一些是需要解释的,因此无论如何都不能完美和YMMV。


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

答案 1 :(得分:7)

一般来说,人们将应用程序的表示层称为前端,将其持久层(通常是数据库)称为后端,以及之间的任何内容为< em>中间层。这组想法通常被称为3层架构。它们允许您将应用程序分成更容易理解(和可测试!)的块;您还可以在更高层中更轻松地重用较低层代码。

哪个代码是哪一层有些主观;平面设计师倾向于将所有不是表示的东西都想象为后端,数据库人员将数据库前面的所有内容都视为前端,等等。

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

答案 2 :(得分:5)

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

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

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

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

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

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

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

后端将是第3层,包含源数据库或ERP。它可能是API跟踪和读取ERP的过程。如果您正在进行电子商务,它可能是您的供应商数据库。实际上,它实际上取决于Web项目,但它始终是一个中央存储库。它可以通过数据库调用,API,Hibernate层或功能齐全的后端应用程序访问

这个描述意味着在这个帖子中不可能回答其他2个问题,因为瓶颈实际上取决于你的3个结尾包含什么:JB King写的内容对于简单的MVC架构仍然是正确的

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

答案 3 :(得分:3)

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

一般说明:

  • 前端负责向用户展示数据。请注意有趣的怪癖,你可能有两个与单后端相关的不同前端
  • Backend提供业务逻辑/数据持久性。
  • 中间件(图中的activemq)负责系统到系统。后端之间的集成。通常它作为单独的应用程序安装 enter image description here

重叠:

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

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

瓶颈

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

答案 4 :(得分:1)

在网络和安全性方面,后端是目前最安全的(应该是)安全节点。

中端部分,通常是一个网络服务器,将在某种程度上处于狂野状态,并在许多方面与公司的网络隔绝。中端节点通常放置在DMZ中,并通过防火墙设置从网络中分段。大多数网页的服务器端代码解析都是在中端Web服务器上处理的。

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

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