c# - Web 方法与 JavaScript 背后的代码?

标签 c# javascript jquery asp.net

使用 C# 代码而不是 javascript 来更改 asp.net/html 页面的内容有哪些优点/缺点?具体来说,我想知道如果我通过单击按钮从不同的服务器获取 JSON 对象,然后必须将该 JSON 对象的内容填充到表中,然后对该表进行排序,哪一个会更好。

此外,用户可以请求多个对象,这意味着将多个表附加到同一页面而无需重新加载页面。后面的代码是否允许这样做,或者 javascript 是更好的选择吗?

最佳答案

WebMethods/WebServices/WebAPI 在为网页提供内容方面的优点:

  • 您可以使用更多资源来处理请求,例如,您可以访问存储在文件系统或数据库中的数据、对其进行处理并以多种格式返回,例如 XLS、CSV、JSON、图像、字符串、二进制 blob 等
  • 您可以更好地处理应用程序的安全性,因为代码不会公开且不可编辑,同时也减少了出现故障和错误的可能性。
  • 您可以利用比发送请求的普通计算机更大的计算能力

WebMethods/WebServices/WebApis 的缺点:

  • 响应时间始终会较长,因为请求是通过网络发送的,并且存在所有可能的障碍:延迟、网络流量、数据包丢失、服务器负载等。
  • 大型工作负载需要更复杂的请求处理逻辑,并且会消耗更多资源,导致应用维护成本更高
  • 所使用的技术通常比仅使用客户端技术更复杂(C#、ASP.NET、MVC、SQL、WCF 等与 JavaScript、HTML 和 CSS)

客户端技术的优点:

  • 它们(相对)是轻量级的,并且可能比服务器端技术更容易学习和使用
  • 如果可以在不使用远程资源的情况下执行操作,则响应时间可能比向服务器发送请求更快(例如,创建图表并将其另存为图像不一定需要将数据发送到服务器)
  • 由于大多数浏览器都支持这些技术,因此许多平台都可以成为攻击目标
  • 对于您的具体情况,在客户端完成 DOM 操作会更快,AJAX 证明了人们多么讨厌为琐碎的事情而回发和往返服务器。

客户端技术的缺点:

  • 尝试处理一些更适合服务器端操作的操作会导致复杂且有时不切实际的解决方案,因为无法访问文件系统和其他本地计算机资源(HTML5 在这方面提供了很大帮助,另外本地存储、本地数据库和其他用于将二进制字符串作为数据进行操作的资源,但 HTML5 浏览器的采用水平仍然不是每个人都想要的。具体示例:由于服务器端资源不可用,我曾经不得不仅使用 jQuery、HTML 和 CSS 创建仪表板,还需要将这些图表呈现为图像以允许保存,然后允许将仪表板值导出到 Excel ,所有这一切,同时支持所有浏览器回到 Internet Explorer 8。不用说,解决方案是多个脚本、插件和使用 ActiveX 对象等可怕的东西的混合,这些东西最终完成了工作,但使您的生活变得不必要的复杂化。 (当然在应用设计过程中忽略了实用性问题,但我对此没有发言权)
  • 执行速度可能比发送到服务器进行复杂计算的请求慢,复杂计算的执行情况会根据底层硬件和可用资源而有所不同
  • 您的代码已公开并可供检查,也可以即时编辑。调试客户端代码也不是一种非常愉快的体验,尽管这方面每天都在不断取得进展。

归根结底,我认为没有最好/最差的技术,只有更适合特定类型工作的工具。如果您需要使用客户端可用的对象和数据,则 JS + HTML + CSS 是最佳选择,但如果您需要保留和操作存储在客户端计算机外部的数据或执行需要大量处理的复杂计算如果服务器端技术更适合这项任务。

关于c# - Web 方法与 JavaScript 背后的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24520016/

相关文章:

c# - 请求有关 Visual Studio 2008 的 Windows CE 平台的信息

javascript - 返回父 div 中的所有 a 标签

javascript - 为什么拼接方法只删除 React 中的第一个数组索引?

javascript - 如何使用parse.com云解析找到最大值和最小值?

PHP & MySql 创建表格数据网格并保存在数据库中

c# - 由 FullTypeName 转换

c# - 如何使用 SharpSSH 或 SSH.NET 库在 SFTP 服务器上附加文本文件

c# - 是否应为同一实体创建多个数据契约(Contract)

jQuery:隐藏 <label> 中的*仅*文本

jquery - 是否有用于切换 ENABLED 复选框的 jquery oneliner 代码?