我想知道是否有人能够简洁地比较/对比前端,后端和中间件(“中端”?)之间的差异。
是否存在重叠的情况? 是否有必须重叠的情况,前端/后端不能分开? 在瓶颈方面,哪一方面与哪种类型的瓶颈有关?
答案 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)
这是一个显示前/中/后端的真实示例。
前端和后端之间可能存在重叠。这通常会导致应用程序维护和可伸缩性方面的长期问题。在遗留应用程序中相当常见。
大多数现代技术堆栈都鼓励开发人员严格分离。例如,在图片中,您可以看到第一个系统的后端具有休息Web服务,这是一条清晰的分离线。
大多数瓶颈都是由数据库/网络引起的。数据库位于后端。至于网络问题,每个连接都通过netowrk进行,因此每个连接都有可能变慢。通过良好的应用程序设计,这些问题可以在很大程度上避免。
答案 4 :(得分:1)
在网络和安全性方面,后端是目前最安全的(应该是)安全节点。
中端部分,通常是一个网络服务器,将在某种程度上处于狂野状态,并在许多方面与公司的网络隔绝。中端节点通常放置在DMZ中,并通过防火墙设置从网络中分段。大多数网页的服务器端代码解析都是在中端Web服务器上处理的。
进入后端意味着要经过中端,它有一套精心设计的规则,允许/禁止访问存储在数据库(后端)服务器上的重要数字。
答案 5 :(得分:0)
前端是指客户端,而后端是指应用程序的服务器端。两者对于Web开发都至关重要,但是它们的角色,职责和工作环境完全不同。前端基本上是用户看到的,而后端是一切的工作方式
答案 6 :(得分:0)
前端 -> 这些是网站的客户端,用户可以从这里通过用户界面与服务器交互。通常使用 Html 和 CSS 构建。
中间件 -> 中间件是负责系统通信和管理数据的软件或服务。它处理组件和输入/输出之间的通信
后端 -> 后端是任何应用程序的服务器端,包括对数据执行的所有功能和操作。这部分被认为是任何应用程序中最重要的部分。只有服务器管理员有权访问此内容。主要由数据库和服务器组成。