“服务器!” - 我想回答这个看似愚蠢的问题。但如果真的这么简单,我就不会在我从事 Web 开发的第七年问他了。
尽管有条件地将 Web 应用程序分为客户端和服务器部分很流行,但现代 Web 应用程序的架构并不是那么二元的:
- 数据库可以在单独的服务器上
- 可以有多个数据库,每个数据库都在自己的服务器上
- 除了“客户端”(通常任意多个)和“服务器”(鉴于前两点已经相当混乱的概念)之外,可能还有第三方服务,例如日志记录或分析,每个服务器都有自己的
已经向我解释过,有必要区分“服务器”作为角色 - 与客户端相关的源和数据处理程序,客户端不必知道其结构(“黑匣子” “ 概念); 并且作为这个非常黑匣子的基础设施。所以,在这个问题上,我对第二个问题更感兴趣。
那么,接受来自客户端的 HTTP 请求并进行初始处理的带有三个问号的系统元素的名称是什么?我们不能只称它为“服务器”,因为服务器可以随心所欲,并且每个都有自己的角色(处理来自客户端的请求、存储数据、存储文件等)。例如,在创建视频托管时,建议至少提供两台服务器,其中一台将接管仅视频文件的返回。
术语 HTTP 服务器也没有明确地描述这个元素。假设接收来自客户端的请求的同一台服务器与第三方服务(如分析)的服务器交换数据。数据交换的协议是什么?很可能是 HTTP(S)。在问这个问题的时候,我对数据库的了解是肤浅的,但我可以假设与位于不同服务器上的数据库进行数据交换,无论如何,有时也通过 HTTP 协议进行。
但是“后端”可能是指前端另一端的所有东西——处理来自客户端的 HTTP 请求的同一个黑盒子,但前端开发人员可能事先不知道其结构。如果是这样,那么“支持”也不会是您问题的答案。
我还想指出当他们说“无服务器应用程序”时造成的混乱。实际上,它们意味着您不必自己编写服务器代码,而是提供了一个由服务所有者提供的具有完善逻辑的现成服务器(如果我错了,请纠正我)。
我真的很想使用 Java 引入的“servlet”这个词,但就我输入的模糊规范定义而言,这个词很可能并不代表我的意思。此外,该元素接受来自客户端的不同请求,与电子总线的概念有点相关。
这样的服务器似乎被称为前端服务器。即作为请求入口点的服务器。它处理 HTTP 请求并将其发送到内部服务器,内部服务器已经可以称为成熟的后端,它们实现了业务逻辑。
链接到我得出这个结论的来源:关于 VKontakte 架构和工作的常见问题解答
这一切都取决于链中此链接的功能。在我看来,这是干净
backend
的(服务的软件和硬件部分)。从您的角度来看,这个问题在这里很重要:前端的另一边是什么?前端、服务和基础使用的一些API。那为什么不呢backend
?也就是说,一些理解 API 请求的软件,它可以像 HTTP、HTTP(s)、SQL、MQTT 并且知道还有什么。关于组织
back'a
是一个完全不同的问题。因为有足够的技术和协议来对此进行宣传。