我想知道是否有人可以比较/对比前端、后端和中间件(“中间端”)之间的差异?简明扼要。
是否存在重叠的情况?是否存在必须重叠、前后端不能分离的情况?就瓶颈而言,哪一端与哪种类型的瓶颈相关联?
发布于 2009-03-11 23:11:05
以下是一个细目:
前端层->用户界面层通常由HTML,Javascript,CSS,Flash和各种服务器端代码组成,如ASP.Net,经典的ASP,PHP等。
中间件,中间层->后退一层,通常被称为系统的“管道”部分。Java和C#是编写这一部分的通用语言,可以将其视为UI和数据之间的粘合剂,并且可以是WCF服务、WCF组件或其他面向服务架构组件。
后端层->数据库和其他数据存储通常位于此级别。MySQL和各种现成的软件出现在脑海中,这些软件是数据的最终处理部分。
它们之间可以存在重叠,因为您可以将所有内容都倾倒到一个层中,例如使用内置AJAX功能生成Javascript的ASP.Net网站,而后台代码可能包含数据库命令,使后台代码同时包含中间层和后端层。或者,可以使用VBScript作为所有层,使用ADO对象并将所有三层合并为一层。
类似地,在某些情况下,中间件和前端或后端都可以组合在一起。
瓶颈通常有几个不同的级别:
1)数据库或后端处理->这可能因工资单或销售或其他任务而异,在这些任务中,数据库的吞吐量会停滞不前。
2)中间件瓶颈->这是一些web服务可能会达到容量,但前端和后端有带宽来处理更多流量的情况。或者,可能有一些服务器是系统的一部分,而不是UI部分,或者原始数据可能是使用Biztalk或MSMQ之类的东西的瓶颈。
3)前端瓶颈->这可能是客户端或服务器端的问题。例如,如果您使用一台低端PC,并让它加载一个包含大量下载数据的网页,则客户端可能是瓶颈所在。类似地,如果服务器被Amazon.com或其他高流量网站有时收到的请求猛烈抨击,它可能会排队等待请求。
其中一些内容可能会受到解释,因此它无论如何都不是完美的。
编辑:需要考虑的是,有些系统可以有多个前端或后端。例如,内容管理系统可能会有一种方法让站点访问者查看作为前端的内容,但是内容编辑器如何能够更改站点上的数据呢?拉取这些数据的能力可以被视为前端,因为它是一个UI组件,或者它可以被视为后端,因为它是由内部用户使用的,而不是查看站点的一般公众。因此,这里有一些关于上下文的东西可以说。
发布于 2009-03-11 23:43:19
一般来说,人们将应用程序的表示层称为前端,将持久层(通常是数据库)称为后端,将介于两者之间的任何层称为中间层。这组想法通常被称为三层架构。它们允许您将应用程序分成更容易理解(和可测试)的应用程序。chunks;您还可以在较高层中更容易地重用较低层代码。
哪种代码是哪一层的一部分多少有些主观;图形设计人员倾向于将所有未呈现的内容视为后端,数据库人员将数据库前面的所有内容视为前端,等等。
然而,并不是所有的应用程序都需要以这种方式分离。与仅仅打开index.php并开始破解相比,拥有3个单独的子项目肯定要做更多的工作;这取决于(1)你希望维护应用程序的时间有多长(2)你希望应用程序变得有多复杂,你可能想要放弃复杂性。
发布于 2014-06-17 17:46:26
你的问题实际上有三个问题:
JB King的描述是正确的,但它是一个特殊的、简单的版本,实际上他将前面、中间和bacn映射到了MVC层。他将M映射到后面,V映射到前面,C映射到中间。
对于许多人来说,这是很好的,因为他们来自丑陋的世界,甚至没有应用MVC,并且您可以在视图中直接调用DB。
然而,在真实的、复杂的web应用程序中,您确实有两到三个不同的层,称为前端、中间和后端。它们中的每一个可以具有相关联的数据库和控制器。
最终用户将可以看到前端。它不应该与前台混淆,前台是前台参数和管理的UI。前端通常是某种CMS或电子商务平台(Magento等)。
中间端不是强制性的,而是业务逻辑所在的位置。它将基于PIM、MDM工具或某种自定义数据库,您可以在其中丰富您的产品或文章(用于CMS)。它也是您编写需要在不同前端之间共享的业务功能的地方(例如,在PC前端和基于API的移动应用程序之间)。有时,ESB或像ActiveMQ这样的工具将成为您的中间端。
后端将是第三层,而不是源数据库或ERP。这可能是jsut API写入和读取您的ERP。它可能是您的供应商DB,如果您正在进行电子商务。事实上,它确实依赖于web项目,但它始终是一个中央存储库。可以通过DB调用、API、Hibernate层或全功能的后端应用程序来访问它
这个描述意味着在这个线程中回答另外两个问题是不可能的,因为瓶颈实际上取决于你的3个端点包含的内容: JB King写的对于简单的MVC架构仍然是正确的
在这个问题被提出的时候(5年前),也许MVC模式还没有被广泛采用。现在,完全没有理由不遵循MVC模式,视图将绑定到DB调用。如果你读过这样的问题:“有没有一些情况下,它们必须重叠,并且前端/后端不能分离?”在更广泛的意义上,有3个不同的组件,那么当3层架构当然是无用的时候。想一想一个简单的个人博客,您将不需要提取外部数据或轮询RabbitMQ队列。
https://stackoverflow.com/questions/636689
复制相似问题