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


78

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

是否存在重叠的情况?是否存在必须重叠且前端/后端无法分离的情况?在瓶颈方面,哪一端与哪种类型的瓶颈相关?

Answers:


58

这是一个细分:

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

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

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

两者之间可能存在重叠,因为您可以将所有内容都叠加到一个层,例如ASP.Net网站,该网站使用生成Javascript的内置AJAX功能,而背后的代码可能包含数据库命令,从而使得背后的代码同时包含中间和后面-端层。或者,可以使用VBScript使用ADO对象充当所有层,并将所有三层合并为一层。

同样,在某些情况下,可以将中间件与前端或后端组合使用。

瓶颈通常具有几个不同的层次:

1)数据库或后端处理->这可能与工资或销售或其他任务有所不同,在这些任务中,数据库的吞吐量正在使事情陷入困境。

2)中间件瓶颈->这将是某些Web服务可能无法承受容量的地方,但是前端和后端具有处理更多流量的带宽。或者,可能有一些服务器不是系统的一部分,而是系统的一部分,而使用Biztalk或MSMQ之类的原始数据可能会成为瓶颈。

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

其中的某些内容需要解释,因此无论从哪种角度来讲,它都不是完美的。


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


3
PHP是前端?这不符合我的期望,所以我进行了查找,发现了不同的意见
Oriesok Vlassky 2013年

@OriesokVlassky您有什么期望?
JB King

我猜应该是中间层的。.我承认我对排名不确定,但是我也发现了其他一些类似的观点,例如“对于Web开发,这包括中间层开发(可能使用php或java)”。itknowledgeexchange.techtarget.com/itanswers/… ..或某处我发现php可以是前端或中间层。
Oriesok Vlassky

不要忘记答案还包含以下要点:“前端开发为最终用户创建了可视化呈现。” 可以使用PHP。如果您想将PHP称为中间层,那么在该站点上没有JavaScript的情况下,前端是什么?
JB金

2
@JBKing我感到困惑,中间层是与前端(UI)以及与后端(DB)交互的那一层??? 在这种情况下,我的网站具有HTML,JS Frontend和MySQL Backend ... PHP是中间层吗?
asvignesh

7

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

哪个代码属于哪一层是有些主观的;图形设计师倾向于将不是表示形式的所有内容都视为后端,数据库人员则将数据库前面的所有内容都视为前端,依此类推。

但是,并非所有应用程序都需要以这种方式分离出来。与仅打开index.php并进行破解相比,拥有3个独立的子项目无疑是更多的工作。取决于(1)您期望将应用程序维护多长时间(2)您期望应用程序变得多么复杂,您可能希望放弃复杂性。


5

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

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

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

对于许多人来说,这很好,因为它们来自丑陋的世界,即使没有应用MVC,您也可以在视图中进行直接DB调用。

但是,在实际的复杂Web应用程序中,实际上的确有两个或三个不同的层,分别称为前,中和后。它们每个都可以具有关联的数据库和控制器。

前端将对最终用户可见。不应将其与前台(用于前台参数和管理的UI)混淆。前端通常是某种CMS或电子商务平台(Magento等)

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

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

这个描述意味着在这个线程中不可能回答其他两个问题,因为瓶颈实际上取决于三个端点所包含的内容:对于简单的MVC架构,JB King编写的内容仍然适用

在问这个问题时(5年前),也许MVC模式尚未得到广泛采用。现在,绝对没有理由不遵循MVC模式,并且视图将与数据库调用相关联。如果您阅读问题“在某些情况下它们必须重叠并且前端/后端不能分开吗?” 从广义上讲,具有3个不同的组件,则3层架构当然毫无用处。想想一个简单的个人博客,您无需提取外部数据或轮询RabbitMQ队列。


杜德(Dude),说JB King当前已描述的对应于MVC模式的层是完全不准确的。根据King的定义,View和Controller都将位于“中间件中间层”中。
阿莫斯(Amos Long)

3

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

概述:

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

重叠:

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

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

瓶颈

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


0

就网络和安全性而言,后端是迄今为止(应该是)最安全的节点。

中端部分通常是Web服务器,在某种程度上很疯狂,并且在许多方面与公司的网络隔离。中端节点通常放置在DMZ中,并使用防火墙设置从网络中进行分段。网页的大多数服务器端代码解析都是在中端Web服务器上进行的。

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


您能否澄清“ DMZ”?
mt3

我犹豫要澄清自己。
M42

@Luke,您错过了链接中的右括号。没什么大不了的,但我必须点击两次,以获得相应的文章:问题o [DMZ维基] [1] [1]:[骇人听闻!] en.wikipedia.org/wiki/Demilitarized_zone_(computing)
Etzeitet

好吧,我不好,似乎该网站杀死了链接。Markdown也在评论中不起作用:/ 坐在顽皮的角落
Etzeitet

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.