服务器端编程 vs 客户端编程

Server side programming vs Client side programming

我正在努力更好地理解这个概念。服务器端编程的重点是让我们与他人交流吗?是为了获得新的想法,还是为了获得无法在客户端本地存储的数据,因为它会包含太多信息?

有几种典型的软件架构:

  • 非联网应用程序(不通信,仅客户端)
  • 服务器-客户端应用程序(通常有一个或多个中央服务器,以及多个与服务器联系的客户端)
  • 点对点应用程序(只有相互通信的客户端)。

这里,客户端通常是在用户计算机上执行的应用程序的一部分,用户正在与之交互。服务器被定义为用户不直接交互的应用程序的一部分,并且不在他的计算机上而是在其他地方。这种分离可能出于多种原因之一:数据大小、数据安全性、数据可用性或仅仅是协调。

例如,当您在网络浏览器上访问 Google 时,网络浏览器就是客户端。 Google 是服务器。您的计算机不知道 Web 上的所有内容在哪里;但是 Google 有个好主意。

再比如,如果你玩魔兽世界之类的MMORPG,你的游戏就是客户端,暴雪的电脑就是服务器;你告诉服务器你在做什么,服务器告诉你结果,就像纸笔游戏高手一样。没有服务器,你不可能知道其他人在做什么。

或者,如果您想查询 U.S 处的原子钟。海军天文台,还是那句话,你是客户端,时钟是服务器;你联系它是因为,很明显,你不知道正确的时间,而它确实知道。

现在,例如,您可能会说在某些情况下可能不需要服务器。比如在MMORPG的情况下,玩家之间不能直接联系吗?第一个问题是可发现性:他们如何在互联网上找到彼此?必须有一些中心位置来告诉每个人其他人的地址。但如果这就是服务器所做的全部,您将不得不联系所有在线玩家(并且有 lot 个)询问他们在哪里,以及他们是否在线同一张地图经常问他们同样的问题;你的互联网连接将无法做到这一点。还需要考虑安全性:服务器确保(或应该确保)您不会通过更改游戏代码并告诉其他玩家虚假值来在地图上四处传送。例如,如果客户负责记住玩家拥有多少金币,那么快速变得非常富有将是微不足道的:只需向其他人撒谎即可。

当您访问 Internet 上的网站时,您的浏览器就是读取 HTML/CSS/JavaScript 的解释器。要阅读这些内容,您的浏览器必须首先下载代码,然后对其进行解释,然后将其显示给您。由于您的网络浏览器会下载代码,因此您很容易看到它。 (如下所示)。

这非常适合博客、信息网站、项目页面等小型项目。但是假设您在一个大项目上非常努力,并且不希望人们看到您的代码。在客户端编程中,网络浏览器读取代码并显示它。如果您右键单击并保存静态(仅限 HTML、CSS、JavaScript)网站,即使您关闭互联网也可以查看它。在服务器端编程中,您的网络浏览器无法读取代码,因为代码不会是通常的 HTML/CSS/JavaScript。由于您的网络浏览器无法读取代码,因此它会查看服务器(这是一个位于很远很远的数据中心的巨型计算机)。服务器为网络浏览器做所有事情,只有 returns 个结果。 Web 浏览器有结果,但不知道服务器如何处理它们,所以它显示结果,但不显示其背后的代码。

这很棒,因为一方面,您的所有代码逻辑都是私下发生的,这对于安全和隐私至关重要。而且,它发生得非常快。由于服务器是一台比您的快得多的大型计算机,因此您网站的所有逻辑处理速度都非常快。此外,您还可以与数据库通信并存储数据,而在客户端编程中,一切都发生在您的机器上,而且只发生在您的机器上。基本上你的代码能够记住。

本质上,您将使用客户端编程来处理信息、样式和小型项目。客户端通常被称为前端开发,因为它是用户看到的(前端)。后端开发(服务器端)是后台逻辑,是幕后发生的一切,用户看不到,也不应该看到的。如果你正在制作一些大型网站,并且其中有用户帐户,你不能只将他们的 user/pass 存储在 javascript 变量中,因为 a) 每个人都可以看到代码,因此,用户信息和 b) 他们的 user/pass 将在他们关闭页面后立即消失。服务器端通信为我们打开了更多的大门。