Web应用程序:客户端域逻辑

时间:2009-05-01 18:42:48

标签: web-applications dns logic client-side

我们看到在客户端完成的Web应用程序的工作越来越多。 UI操作,输入预验证(当然不是验证的最后手段),小部件,效果等等。

如果一个人决定在Javascript / GWT /其他任何地方编写客户端的域逻辑怎么办?服务器只提供数据库基础结构。

这听起来对你有用吗?对这个想法有任何经验,建议或意见吗?

编辑: 如果你四处寻找,你会发现可以在没有一行php / python / java /的情况下编写整个applications

7 个答案:

答案 0 :(得分:1)

我恭敬地不同意这里的其他海报。事实上,我已经实现了这样一个scrabble board game,几乎完全使用客户端逻辑。事实上,我想做很多事情来使它更加客户端密集。 GMail在客户端做了大量的工作。

但是,出于实际原因,有些事情需要在服务方面进行管理。例如,服务器需要向用户提供一些区块,然后用户可以告诉服务器他放置那些区块的位置,并且服务器需要验证这些区域是否为空,因为服务器永远不能完全信任客户端(客户端始终可以被劫持) ,如果没有通过脚本,那么通过嗅探HTTP流量并修改它。)

有很多技术,有些像ADO.NET Data Services通过RESTful接口在DB中公开CRUD操作,而CouchDB则通过JavaScript直接存储/管理数据对象。此外,像jQuery或Moo Tools这样的富客户端库正在推动客户端做得越来越多。

如果你考虑一下,flash就是在客户端做所有UI和交互的东西。一些Adobe Flex应用程序非常棒。我最近使用了一个用于Google分析的图表,它可以渲染图形,旋转以及客户端的所有内容。服务器只提供数据。即便如此,谷歌Gears和Firefox(我认为3.2)现在提供了客户端存储,这使得断开连接的应用程序场景变得更加有趣。

答案 1 :(得分:0)

这些都很好,但请记住,如果有人禁用了javascript,您需要能够在用户弄乱数据库之前处理并验证服务器上的输入。所以你可以在客户端放置你想要的任何东西,但你还需要在服务器端进行验证。

答案 2 :(得分:0)

在我看来,这不是一个可行的想法。这有很多原因。

  1. 如果用户没有这些客户端能力,因为他们的浏览器较旧,会发生什么?该网站很可能无法运作。
  2. 始终,始终在服务器上执行所有相同的检查,以验证输入和规则检查,就像在客户端上一样。否则,它会导致您的网站出现重大安全问题。用户可以绕过所有javascript检查并对数据库执行任何操作。
  3. 总而言之,虽然客户端代码非常适合为用户提供更多应用程序,如网页感觉,但为了网站的安全性和可访问性,这两种技术都需要实现。

答案 3 :(得分:0)

我认为这是不可行的,至少如果你的目标是一致性和速度。把很多逻辑说成Javascript会给浏览器带来很多工作,这意味着一个SLOW客户端。另外,不要忘记所有浏览器都有他们的小怪癖。

答案 4 :(得分:0)

取决于应用程序以及您希望如何使用它并重新使用代码。

客户端javascript非常适合网络浏览器。

域对象和实体可以在其他应用程序(桌面,Web服务等)中重用

更何况您的应用越来越大,下载时间会越来越长。

当然,任何人都可以立即复制粘贴代码并克隆您的应用。

答案 5 :(得分:0)

对于任何公共(和非公开)Web应用程序,有人试图检查您的防御只是时间问题。 JavaScript验证将是第一个。因为您可以在浏览器中禁用它,甚至在使用应用程序时禁用/启用它以达到理想的效果。

您实际上应该有三个级别的验证。

  1. UI验证(可选):首次检查用户输入。没有服务器往返的快速响应 - >用户很高兴+您的服务器很高兴您可以将他们从一些无效请求中解放出来。

  2. 服务器端验证(必需)。这里再次进行验证+业务逻辑规则。您可能需要访问某些标准或第三方库来检查/验证/执行您需要的任何操作。在这里,您可以在BL级别上实现数据完整性。

  3. 数据库级验证(非常需要)。最后的防守周界。通过使用外键/唯一密钥/等确保数据完整性。约束+来自多个并行请求的事务级保护突然破坏了BL级别的完整性。

  4. 如果你想做正确的话,应该是这样的。

答案 6 :(得分:0)

您可以在此处找到关于网络应用效果分析的精彩摘要:http://www.websiteoptimization.com/speed/tweak/psychology-web-performance/

简而言之,现代Web应用程序在性能提升方面的争夺时间为100毫秒。在如此短的时间内,依赖于http延迟已经是一个问题。因此,许多逻辑正在转移到客户端,以减少与用户交互时的http调用次数。

有许多可用和开发的框架有助于构建复杂的客户端代码。首先:jQuery(UI),Dojo,MooTools,Prototype等 - 这些是更通用的框架,适用于任何类型的客户端逻辑。

更确切地说:

这里有不同框架的全面概述http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/