首页 > 解决方案 > 为什么脚本语言用于服务器端任务而不是编译语言?

问题描述

...或者两者都针对它们各自的不同特征一起使用?

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

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

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

谢谢

标签: asp.netserver-side

解决方案


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

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

当您单击 asp.net 按钮时?网页被发送到服务器。然后运行后面的代码,然后将其渲染并发送到客户端。所以当你谈论背后的代码时?您在谈论 C# 或 vb.net 代码。

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

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

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

因此,在 asp.net 中,当代码可以(并且应该)在浏览器中运行良好时,使用脚本语言运行服务器端几乎没有收益和好处。谁愿意放弃像 c# 或 vb.net 这样出色的 IDE 和开发语言,而不得不用 JavaScript 这样的困难语言编写代码?

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

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

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

所以在一天结束的时候?不,几乎没有理由要在服务器端运行一些脚本代码。而在 asp.net 的情况下呢?您的 JavaScript 代码都不会在服务器端运行 - 它非常用于在浏览器中运行的代码。

几乎没有理由希望或让脚本代码在服务器端运行。这实际上都归结为网络的工作方式。但是如果你可以将更多和模式代码推送到客户端呢?然后你会的。随着工具变得越来越好?好吧,它们允许越来越多的代码更轻松地在浏览器端运行。(这就是西装外套的全部意义所在)。

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

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

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

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


推荐阅读