Web方法与javascript背后的代码?

时间:2014-07-01 22:09:54

标签: c# javascript jquery asp.net

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

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

3 个答案:

答案 0 :(得分:1)

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

  • 您可以使用更多资源来处理请求,例如,您可以访问存储在文件系统或数据库中的数据,处理它并以各种格式(如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是可行的方法,但是如果您需要持久化并操纵存储在客户端计算机外部的数据或执行需要大量处理的复杂计算电源,然后服务器端技术更适合这项任务。

答案 1 :(得分:0)

在一句话中:ASP.NET代码背后(C#)是服务器端技术,而javascript(或jQuery)是客户端技术。第一个更强大,与客户端平台无关,而第二个提供更好的响应能力(不需要往返于Web服务器)。对于任何关键业务数据操作(特别是如果安全性是一个主要问题),服务器端技术(即ASP.NET / C#)是首选的。

关于评论中的第二个问题:如果您需要保留任何数据,可以使用ViewState ot SessionState个对象(以及global.asax文件中的对象/方法)。

此外,对ASP.NET的有价值的补充是AJAX技术(Microsoft VS实现了所谓的UpdatePanel控件,这极大地简化了与ASP.NEt页面相关的AJAX的实现),提高了ASP.NET网页的响应能力。

RGDS,

答案 2 :(得分:0)

理想情况下,我更喜欢ASP.NET Web API,这意味着从服务器通过JSON获取REST个完整服务的所有数据,一旦掌握了数据,您的JS/Jquery应该操纵您的HTML {1}}或DOM。对于您的数据而言,两者都是包容性而非排他性的,您必须依赖服务器的安全性。客户端数据不应该很重,不应透露任何PII。有关动态表操作的信息,请参阅JqueryGrid,还有更多客户端丰富的控件。