为 Web 应用程序构建服务器的真正需求是什么?

What is the real need of building a server for a web application?

提问人:Ibrahim Farooq 提问时间:4/25/2021 更新时间:6/12/2021 访问量:257

问:

在过去的 3 个月里,我一直在学习 Web 开发,所以我对它很陌生。自 3 个月以来,我一直在使用 ,在应用程序的客户端工作,我可以使用它构建一些可用的网站。我甚至在我的一些项目中用于实时数据库和身份验证。因此,当我能够在客户端完成所有这些工作时,我自然而然地开始质疑服务器的必要性,或者更具体地说,服务器端脚本的必要性。 在我所看到的任何地方,服务器端脚本最突出的方面是网页。但这也可以在 React 上完成,而且很容易。那么,服务器端脚本的真正需求是什么呢?为什么我什至要使用服务器端语言(例如?Reactfirebasedynamic renderingNodeJS

node.js reactjs web-applications 服务器端

评论

1赞 Wiktor Zychla 4/25/2021
假设您想要一个在线商店。您将在哪里存储客户数据、订单、付款等?服务器端。你的 React 客户端应用程序将如何与服务器端数据库通信?通过服务器端代码。
0赞 Brad 4/25/2021
对于很多事情,你不需要任何服务器端的东西。这些天,我构建的大部分内容都完全在客户端运行。唯一涉及的服务器是作为 CDN 的 CloudFront 和作为源的 S3。Web 应用程序是完全静态的。这完全取决于您的需求。
1赞 Dennis Vash 4/25/2021
当你使用firebase时,你不认为它是“服务器端”吗?
0赞 Stephan 6/12/2021
@Brad确定您是否不消耗任何数据,并且不需要知道谁在使用您的网站。我认为恰恰相反。任何要求您登录的站点都将拥有大量后端,从身份验证服务器、数据库、数据源微服务、代理到企业订阅服务等。如今,几乎每个网站都至少有一个这样的网站。我什至不记得上一次我看到没有登录选项的生产站点是什么时候了。

答:

0赞 Sergey Pogodin 4/25/2021 #1

原因很多;例如,您需要与最终用户无权访问的系统进行交互(例如,将某些内容写入数据库),您只能在服务器端进行交互(因为您不想向最终用户公开敏感凭据)。此外,如果您在服务器端预渲染动态内容,它将被搜索引擎使用;如果你不这样做,它可能不会。

0赞 ehab 4/25/2021 #2

好吧,firebase 是一种服务器端技术。任何在不同设备或浏览器上使用任何类型的持久性的网站总是有一个服务器端服务来支持这种持久性。因此,只要您登录或注册,或任何其他形式的身份验证或授权,它就会由服务器端备份。

以前,大多数逻辑都驻留在服务器端,客户端幻灯片基本上非常愚蠢,可能只是一些与 ui 相关的逻辑,随着 SPA 的发展,这种模式变得不那么流行了,今天新应用程序的构建方式是,无论什么都可以推送到客户端,那么它就应该在客户端。

0赞 Lloyd 6/12/2021 #3

Web 应用程序只是一个应用程序,就像任何其他应用程序一样 - 与桌面应用程序、移动应用程序、嵌入式应用程序等没有什么不同。

您可以构建一个 Web 应用程序并亲自使用它和/或分发您认为合适的应用程序。您不需要 Web 服务器。但是,在某些时候,你可能会发现需要后端服务来促进你想要添加的新功能。这些服务可以以您认为合适的任何方式部署 - 集中式HTTP服务器是最常见的,也可以使用分散式解决方案。但它们不是强制性的。

1赞 Stephan 6/12/2021 #4

补充其他人没有提到的内容:成本和安全性。

公司拥有的最有价值的东西是其数据。其中一些数据是专有的,其中一些可能受法律监管,其中一些是客户个人的,但需要与他们开展业务。这些数据必须保持安全,并且只提供给被允许拥有它并妥善保护它的人。

很少有公司允许直接从互联网访问他们的数据库主机。这使得攻击者很容易集中精力获取这些数据。

API 服务(通常是 REST 或 SOAP)使你能够验证某人是否被允许访问相关数据,并在将不相关的数据或不允许他们从查询中看到的数据发送到最终用户的计算机之前对其进行优化和筛选。您不希望留下的数据超过用户执行某些有意义的操作的绝对必要。这是出于与上述相同的安全考虑,但也是为了对用户的机器友好。您不想让他们的客户陷入他们不需要的数据,因为这会减慢其他一切速度。

从成本的角度来看,您可以在客户端计算机上进行的任何计算都是免费的。通过尽可能多地移动到客户端,尤其是仅适用于其会话的计算,可以释放您的服务来为其他用户提供其他请求。服务器端渲染的扩展成本很高,因为每个渲染周期都必须在服务器上为每个人计算,转换为html并在处理下一个请求之前发送回去。为了可靠地为更多客户提供服务,需要更多的服务器主机来跟上流量。

您需要注意不要过多地移动到客户端,因为它们的设备功能是不可预测的。它可以是手机、旧笔记本电脑或游戏电脑。如果您假设每个人都在游戏电脑上,并且向客户端推送太多内容,您最终会将您的网站限制为仅对拥有高端计算机的用户有效。

作为最后一条建议,在课堂上问这个问题永远不会有什么坏处。你的同学也有可能从中受益。