为什么脚本语言用于服务器端任务而不是编译语言?

Why are scripting languages used for server side tasks and not compiled languages?

提问人:TwoFingerRightClick 提问时间:10/19/2020 更新时间:10/19/2020 访问量:244

问:

...还是两者同时用于它们各自不同的功能?

我一直在试图弄清楚为什么服务器端脚本与运行编译程序来处理 Web 请求不同。我非常感谢一个有用的例子/使用服务器端脚本,这使得它成为必要。

我读过关于ASP的文章(我一直在使用 ASP.Net,但对它知之甚少):“当浏览器请求ASP文件时,服务器将请求传递给ASP引擎,ASP引擎读取ASP文件并执行文件中的服务器脚本”。我知道这与使用与 ASP 页面请求一起传递的用户数据自定义 html 文件有关(并且服务器端脚本本质上可以/对客户端保密)。->

这就是使用服务器端脚本的原因吗:使用嵌入式 dom 编辑为此目的创建的脚本语言更容易,而不是使用从客户端获取变量的编译程序来编辑服务器端的 dom?

谢谢

asp.net 服务器端

评论


答:

1赞 Albert D. Kallal 10/19/2020 #1

好吧,有些系统确实使用运行服务器端的脚本语言。

不,asp.net 服务器端代码不会运行服务器端的任何 JavaScript。

当您单击 asp.net 按钮时?网页将发送到服务器。然后运行代码,然后呈现并向下发送到客户端。那么,当你谈论代码背后的代码时呢?您正在谈论 C# 或 vb.net 代码。

几乎没有理由尝试运行一些脚本代码服务器端。JavaScript 是设计并 100% 在浏览器中运行的,因此被设计为在没有编译器的情况下运行。

客户端脚本的优势?好吧,它在客户端计算机上 100% 运行,因此不需要往返或回发。那么,要获得像 Windows 这样的快速体验吗?好吧,你开始采用越来越多的客户端代码。原因是在浏览器中运行的客户端软件可以感觉,响应非常像Windows桌面程序。

因此,我们看到了像阿贾克斯这样的技术专家的兴起。这意味着您仍然运行浏览器端代码,但浏览器端代码现在可以对 Web 服务器进行“微小”或“更小”的调用。在某些情况下,asp.net 可以并且将为您设置+注入一些浏览器端代码。例如,当您放入几个文本框,然后放入 asp.net 验证器时?请注意这些验证器的工作速度和即时性。(他们工作没有往返! 也没有回帖!那么,当您将这些验证器放入该网页时呢?Asp.net 将编写并自动生成 JavaScript,以便在客户端浏览器中运行。

因此,在 asp.net,当脚本语言可以(并且应该)在浏览器中运行时,使用脚本语言来运行服务器端将没有什么好处和好处。谁愿意放弃像 c# 或 vb.net 这样的优秀 IDE 和开发语言,而不得不用一些困难的语言(如 JavaScript)编写?

但是,因为我们想要越来越多的在浏览器中运行的“响应式”应用程序?然后,越来越多的精力花在这个简单的问题上: 我们如何让越来越多的代码和逻辑在浏览器中 100% 运行,因为这意味着用户交互将 100% 本地发生,而不必访问服务器。这不仅减少了服务器的工作量,还意味着响应时间变得越来越像桌面程序。ajax 和其他方法的出现意味着您现在可以在浏览器中 100% 运行电子表格。

你认为所有的喧嚣都是关于西装外套的吗?简而言之,blazer 只是一种技术,它允许将服务器端 c# 代码编写为在客户端浏览器中 100% 运行。这样做的好处是,您不仅可以用一种语言编写代码,而且现在 c# 代码可以运行服务器端或浏览器端。同样,这个概念是试图允许开发人员将越来越多的代码推送到浏览器运行,而不是必须运行服务器端的代码。现在服务器端代码并不是一件坏事,但是如果您需要回发或将网页发送到服务器以运行该代码?好吧,这需要时间,因此您不会像使用 100% 桌面软件那样获得出色的交互式 Web 应用程序。

事实上,我们现在可以通过 Web 端和服务器端代码的组合进行交互?好吧,我们有能力创造一个真正梦幻般的用户体验,现在 Web 应用程序可以运行、感觉和响应,就像典型的桌面应用程序一样,但不需要安装软件。

那么归根结底呢?不,没有理由想要运行一些脚本代码服务器端。就 asp.net 而言?你的 JavaScript 代码都不会运行服务器端 - 它非常适用于在浏览器中运行的代码。

想要或让脚本代码在服务器端运行的原因很少。这一切都归结为网络的工作方式。但是,如果您可以将更多和模式代码推送到客户端呢?那你会的。随着工具变得越来越好?好吧,它们允许越来越多的代码在浏览器端更容易地运行。(这就是 Blazer 的全部意义所在)。

那么,如果你写一个可爱的井字游戏呢?好吧,你可以 100% 编写它来运行浏览器端。这意味着网站上的零负载和压力。这也意味着用户可以获得类似桌面的用户体验。(事实上,他们正在 100% 使用浏览器端代码运行该游戏)。

所以请记住,asp.net 中没有一个JavaScript运行服务器端 - js用于在浏览器端运行的代码和交互 - 因此不需要一些回发,甚至不需要与服务器交谈。但是,您可以调用该网页中确实有的 sub 或函数(使用 js ajax 调用)。

因此,没有必要更容易使用/更改/编辑 DOM 服务器端或客户端的部分。但是,嘿,如果您可以进行编辑或更改 100% 客户端,那么您应该这样做,因为这样您就不需要与服务器交谈。但是,客户端代码没有也不允许您执行诸如编写 sql 查询和填充表之类的操作。它需要与服务器通信才能做到这一点。因此,您可以使用非常出色的服务器端编码系统来提取这些数据。另一个问题是安全性。如果我可以编写一些浏览器代码来从 datbase 中提取数据?好吧,那我就去打 amazon.com,窃取他们所有的数据!

所以,JavaScript 非常有限。它不能做一些事情,比如说去抓取磁盘驱动器上的文件并将其上加载到服务器。如果你能做到这一点,那么当你访问我这边时,我会运行一些代码来获取你的 outlook,甚至是一些名为 passwords.xls 的电子表格并上传它。因此,出于安全原因,在浏览器中运行的代码最好在计算机上可以执行的资源和操作方面非常有限 - 否则安全风险太大。但是计算机在我的网站和服务器上运行?好吧,我希望该代码可以做任何事情,包括处理您的信用卡或使用银行信息之类的事情。

评论

0赞 TwoFingerRightClick 10/20/2020
谢谢你非常解释性的回应。它帮助我意识到服务器端脚本只是服务器程序使用的一种技术。
0赞 Albert D. Kallal 10/20/2020
The main issue is that scripting languages don't allow disk/file operations. So you can't say write code to open a file and read it. it simply not allowed. And you can't say open a database and read some data (again not allowed). However, some people spend a lot of time writing script code, so they kind of like the idea to write the same code for server side. but as noted, it usually too limited. Now not all scripting systems are limited to a browser and some have zero to do with a browser or even run in one. But in the context of .net? Then scripting is in the context of browser side code.
0赞 Albert D. Kallal 10/20/2020
Some scripting languages do have full features (file io/ database use etc.). But as such, these languages don't and can't run in the browser.
0赞 TwoFingerRightClick 10/23/2020
Your comments gave me a good perspective of when and where scripting languages are used and why especially in the context of ASP.Net core. Thanks.