我见过一些问题(主要是关于Stack Overflow的问题),这些问题缺少这些基本知识。这个问题的重点是为寻求它的人和引用它的人提供良好的信息。
在Web编程的上下文中,服务器端编程和客户端编程之间有什么区别?哪些语言属于哪种语言,何时使用它们?
我见过一些问题(主要是关于Stack Overflow的问题),这些问题缺少这些基本知识。这个问题的重点是为寻求它的人和引用它的人提供良好的信息。
在Web编程的上下文中,服务器端编程和客户端编程之间有什么区别?哪些语言属于哪种语言,何时使用它们?
Answers:
Web开发与通信有关。在这种情况下,通过HTTP协议在两(2)个参与者之间进行通信:
双方的编程均指在特定计算机(服务器或客户端)上运行的代码。
服务器端编程是服务器上运行的各种程序的总称。
就像服务器端一样,客户端编程是在Client上运行的所有程序的名称。
* HTML和CSS本身并不是真正的“编程语言”。它们是客户端用来呈现User页面的标记语法。
用外行的话来说:
在这里,我将只谈论Web编程。
客户端编程主要与用户交互的用户界面有关。在Web开发中,运行该代码的是浏览器,即用户计算机中的浏览器,它主要是用javascript,Flash等完成的。此代码必须在各种浏览器中运行。
其主要任务是:
该负责人前端编程必须知道:
服务器端编程与生成动态内容有关。它在服务器上运行。这些服务器中许多都是“无头的”。大多数网页不是静态的,它们搜索数据库以向用户显示更新的个性化信息。这些方面与后端(例如数据库)交互。
可以使用多种语言来完成此编程:
此代码与以下内容有关:
服务器端编程负责人必须知道:
其他答案集中在什么是客户端和服务器端编程上:主要使用哪种语言,必须完成哪些任务等。
这是绝对正确的,但是我想念的焦点是在网络编程的上下文中两种编程类型之间的区别。让我尝试解决这个问题。
在客户端编程中,出于安全考虑,您无权访问整个系统。用户不必一定会信任从Web下载并在其计算机上执行的每段代码,这是客户端环境(浏览器和JavaScript引擎)的主要设计目标:提供隔离的环境客户端代码可以执行,但不能访问允许范围之外的任何内容。
在服务器端编程中,最好还限制每个应用程序对底层系统的访问,但这对您的执行要少得多,因为最终您或您的公司将控制该系统。这种“隔离的笼子”设计不是内置于服务器端编程工具和语言中,而是通过安装设置(使用具有受限权限的专用用户,选择需要或不需要root权限的端口等)来完成的。
在服务器端编程中,必须使用某种工具(即使是make install
或a git clone
)从代码外部进行部署,并且此部署通常是手动的-至少应在半监督下进行方式。您在其上部署的系统(即OS)通常在许多计算机上是统一的,但是可以根据您的需求进行大量自定义。
在客户端编程中,部署是从服务器端代码进行的,该服务器端代码自动为客户端提供服务,而无需监督。在大量计算机上,底层系统(主要是浏览器)可能会有很大不同。为了使部署完全可行,必须保持标准,并且单一语言和环境的趋势越来越强。
这就是为什么将服务器端代码从一台计算机复制到另一台计算机可能要花几周的时间,而在其他计算机上执行客户端代码通常很简单的原因。
(免责声明:这是迄今为止最主观的观点。我的论证可能有很多错误方面。在我看来,这只是一个有趣的假设。)
在服务器端编程中,状态是一个更大的问题,这意味着如何根据用户的请求检索和更新数据,并可能由于并发而产生冲突。即使大部分复杂性都转移到了数据库服务器上,服务器端代码也有责任允许数据库通过正确使用其接口来保持其对数据完整性的保证(例如,不使用高速缓存来进行更新,而这些更新从未被用户看到)。 DB),这也是服务器端代码的目标,即不要使数据库超负荷工作并使用户等待响应。
在客户端编程中,将结果呈现给用户是一个更大的问题,这暗示了第二种效果(主要是打印到屏幕上)。这并不是说不涉及任何状态(例如cookie),而只是代码的主要目标是实际与用户交互,并且没有次要效果就不可能发生。
这就是为什么客户端编程通常需要(在某个时候)通过演示查看屏幕,以检查所有颜色和布局是否正确,而服务器端编程几乎只能在面向文本的环境中进行,因为在这种情况下,自动化测试检查逻辑是否仍在执行应做的工作。
这绝不是要接受的答案。相反,我将其作为补充问题(作为对when do you use each of them
问题的回答)提供,到目前为止,其他答案中尚未提及:
知识产权保护
位于客户端的源代码(例如Javascript中的代码)易于阅读和/或能够被反向工程(如果被混淆)。
但是,位于服务器端的源代码可以安全地保护专有算法,并且只能返回结果。一个黑匣子。