为 Web 应用程序构建服务器的真正需求是什么?
What is the real need of building a server for a web application?
过去 3 个月我一直在学习 Web 开发,所以我对它还很陌生。自 3 个月以来,我一直在使用 React
处理应用程序的客户端,我可以仅使用它来构建一些可用的网站。我什至在我的一些项目中使用 firebase
作为实时数据库和身份验证。因此,当我能够在客户端完成所有这些操作时,我自然而然地开始质疑是否需要服务器,或者更具体地说,是否需要服务器端脚本。
在我看过的所有地方,服务器端脚本最突出的方面是网页的 dynamic rendering
。但这也可以在 React 上完成,而且非常容易。那么服务器端脚本的真正需求是什么?为什么我什至想要使用服务器端语言构建服务器,例如 NodeJS
?
很多原因; 例如您需要与最终用户无权访问的系统进行交互(比如向数据库写入内容),您只能在服务器端进行(因为您不希望向最终用户公开敏感凭据)。此外,如果您在服务器端预渲染动态内容,它将被搜索引擎使用;如果你不这样做,它可能不会。
嗯,firebase 是一种服务器端技术。任何在不同设备或浏览器上使用任何类型的持久性的网站总是有一个服务器端服务来支持这种持久性。因此,只要您登录或注册,或任何其他形式的身份验证或授权,它就会由服务器端备份。
以前大部分逻辑用于驻留在服务器端,客户端幻灯片基本上非常愚蠢,可能只有一些 ui 相关逻辑,随着 SPA 的进步,这种模式变得不那么流行了,今天是新的应用程序 ui 认为任何可以推送到客户端的东西都应该在客户端。
Web 应用与其他任何应用一样,与桌面应用、移动应用、嵌入式应用等没有区别。
您可以构建一个网络应用程序并亲自使用它and/or按您认为合适的方式分发它。您不需要 网络服务器。但是,您可能会发现在某些时候您需要后端 服务 来促进您想要添加的新功能。这些服务可以以您认为合适的任何方式部署——集中式 HTTP 服务器最常见,也可以采用分散式解决方案。但它们不是强制性的。
补充其他人未提及的内容:成本和安全性。
公司拥有的最有价值的东西是它的数据。其中一些数据是专有的,其中一些可能受法律监管,其中一些是客户的个人数据,但需要与他们开展业务。这些数据必须保持安全,并且只提供给被允许拥有它并会妥善保护它的人。
很少有公司允许直接从 Internet 访问他们的数据库主机。它使攻击者很容易集中精力获取该数据。
API 服务,通常是 REST 或 SOAP,使您能够验证是否允许某人访问相关数据,并优化和过滤不相关的数据或不允许他们从在将其发送到 Internet 到最终用户的计算机之前进行查询。您不希望留下比用户执行某些有意义的操作绝对必要的数据更多的数据。这是出于与上述相同的安全考虑,但也是为了对用户的机器友好。您不想让他们的客户因为不需要的数据而陷入困境,因为这会减慢其他一切的速度。
从成本的角度来说,你在客户端机器上做的任何计算都是免费的。通过尽可能多地移动到客户端,尤其是只适用于他们的会话的计算,可以让您的服务腾出时间来为其他用户的其他请求提供服务。服务器端渲染的扩展成本很高,因为每个渲染周期都必须在服务器上为每个人计算,转换为 html 并在处理下一个请求之前发回。为了可靠地为更多客户提供服务,需要更多的服务器主机来跟上流量。
您需要注意不要向客户端移动太多,因为它们的设备功能是不可预测的。它可以是 phone、旧笔记本电脑或游戏电脑。如果您假设每个人都在使用游戏电脑并向客户端推送太多内容,那么您最终会将您的网站限制为仅对拥有高端计算机的用户有效。
作为最后一条建议,在 class 中提出这个问题永远不会有坏处。您的 class 朋友很可能也会从中受益。
过去 3 个月我一直在学习 Web 开发,所以我对它还很陌生。自 3 个月以来,我一直在使用 React
处理应用程序的客户端,我可以仅使用它来构建一些可用的网站。我什至在我的一些项目中使用 firebase
作为实时数据库和身份验证。因此,当我能够在客户端完成所有这些操作时,我自然而然地开始质疑是否需要服务器,或者更具体地说,是否需要服务器端脚本。
在我看过的所有地方,服务器端脚本最突出的方面是网页的 dynamic rendering
。但这也可以在 React 上完成,而且非常容易。那么服务器端脚本的真正需求是什么?为什么我什至想要使用服务器端语言构建服务器,例如 NodeJS
?
很多原因; 例如您需要与最终用户无权访问的系统进行交互(比如向数据库写入内容),您只能在服务器端进行(因为您不希望向最终用户公开敏感凭据)。此外,如果您在服务器端预渲染动态内容,它将被搜索引擎使用;如果你不这样做,它可能不会。
嗯,firebase 是一种服务器端技术。任何在不同设备或浏览器上使用任何类型的持久性的网站总是有一个服务器端服务来支持这种持久性。因此,只要您登录或注册,或任何其他形式的身份验证或授权,它就会由服务器端备份。
以前大部分逻辑用于驻留在服务器端,客户端幻灯片基本上非常愚蠢,可能只有一些 ui 相关逻辑,随着 SPA 的进步,这种模式变得不那么流行了,今天是新的应用程序 ui 认为任何可以推送到客户端的东西都应该在客户端。
Web 应用与其他任何应用一样,与桌面应用、移动应用、嵌入式应用等没有区别。
您可以构建一个网络应用程序并亲自使用它and/or按您认为合适的方式分发它。您不需要 网络服务器。但是,您可能会发现在某些时候您需要后端 服务 来促进您想要添加的新功能。这些服务可以以您认为合适的任何方式部署——集中式 HTTP 服务器最常见,也可以采用分散式解决方案。但它们不是强制性的。
补充其他人未提及的内容:成本和安全性。
公司拥有的最有价值的东西是它的数据。其中一些数据是专有的,其中一些可能受法律监管,其中一些是客户的个人数据,但需要与他们开展业务。这些数据必须保持安全,并且只提供给被允许拥有它并会妥善保护它的人。
很少有公司允许直接从 Internet 访问他们的数据库主机。它使攻击者很容易集中精力获取该数据。
API 服务,通常是 REST 或 SOAP,使您能够验证是否允许某人访问相关数据,并优化和过滤不相关的数据或不允许他们从在将其发送到 Internet 到最终用户的计算机之前进行查询。您不希望留下比用户执行某些有意义的操作绝对必要的数据更多的数据。这是出于与上述相同的安全考虑,但也是为了对用户的机器友好。您不想让他们的客户因为不需要的数据而陷入困境,因为这会减慢其他一切的速度。
从成本的角度来说,你在客户端机器上做的任何计算都是免费的。通过尽可能多地移动到客户端,尤其是只适用于他们的会话的计算,可以让您的服务腾出时间来为其他用户的其他请求提供服务。服务器端渲染的扩展成本很高,因为每个渲染周期都必须在服务器上为每个人计算,转换为 html 并在处理下一个请求之前发回。为了可靠地为更多客户提供服务,需要更多的服务器主机来跟上流量。
您需要注意不要向客户端移动太多,因为它们的设备功能是不可预测的。它可以是 phone、旧笔记本电脑或游戏电脑。如果您假设每个人都在使用游戏电脑并向客户端推送太多内容,那么您最终会将您的网站限制为仅对拥有高端计算机的用户有效。
作为最后一条建议,在 class 中提出这个问题永远不会有坏处。您的 class 朋友很可能也会从中受益。