在Intranet中使用DWR时,会出现性能或安全问题等缺点吗? 直接Web远程处理是一种使用Ajax请求从js文件联系服务器的工具。
答案 0 :(得分:9)
我要注意的一件事是,与具有(正常)整页HTTP传送的服务相比,您的服务器很可能会受到更多HTTP请求的攻击。</ p>
让我解释一下。当您的网页启用了AJAX时,您的客户端最终会创建更多的HTTP请求(例如)表单填充,页面片段重新生成等。我已经看到开发人员已经疯狂的AJAX,并使网页成为很有活力的文件。这样可以带来出色的用户体验(如果做得好),但每次请求都会导致服务器崩溃,从而导致可伸缩性和延迟问题。
注意 - 这不是DWR特有的,而是一个AJAX问题。我使用过DWR,效果很好。不幸的是,我发现它运行得非常好,而且非常容易,所有内容都成为了远程处理的候选者,并且您最终可以获得巨大的数量的小请求。
答案 1 :(得分:3)
我使用DWR开展了一个项目 - 一个非常好的工具。
但是,我并不相信发展的步伐。他们确实发布on the development log他们正在努力让3.0出门,但是最后一次稳定版本 - 2.0 - 在2006年夏天出现了。从支持的角度来看,这有点令人担忧 - 尤其是错误修复。答案 2 :(得分:2)
我遇到的主要问题是尝试在通过DWR调用完成大部分工作的系统上编写负载测试脚本。与仅使用更改参数回复一堆网址相比,调用的格式很难复制。
Still DWR是一个优秀的框架,可以实现Javascript - &gt; Java RPC非常容易。
答案 3 :(得分:1)
缺少当前DWR 3.x的一个特性,任何用户都应该小心谨慎,当bean的实例具有NULL值属性时,这些属性仍会被注入JSON,这些冗余数据会影响性能
当属性的值为NULL时,通常不应将其发送到前端。
问题详情:http://dwr.2114559.n2.nabble.com/Creating-Custom-bean-converter-td6178318.html
答案 4 :(得分:0)
当您的网站有大量的ajax调用时,DWR是一个很棒的工具。
每个进行dwr rpc调用的页面都需要包含:
a)与正在进行的调用相对应的接口文件。
和
b)与dwr捆绑在一起的js文件,其中包含使这些调用成为可能的dwr引擎代码。例如<script src="/dwr/engine.js" ></script>
在优化Web应用程序时经常使用的一种技术是在服务器上的资源(如js文件)未更改时尽可能多地使用浏览器缓存。
除非您将dwr升级到更新版本,否则engine.js永远不会改变。但是,默认情况下,engine.js不是您的网络服务器提供的静态文件。它捆绑为dwr工具itsef的一部分,由dwr控制器/ servlet提供服务。这不会帮助客户端缓存。
因此,将engine.js保存在Web服务器的文档根目录下并让Web服务器将其作为静态文件提供是有益的。
答案 5 :(得分:0)
传输对象(编组)的其他解决方案的最大区别是对象引用。
例如,如果您使用它来传输树:
A
| -B
| -C
列表{A,B,C}中的:
B.parent = A. C.parent = A
然后A是Javascrit中的同一个对象!
另一方面,如果你有具有循环依赖关系和大量对象的复杂结构:A&lt; -B,B&lt; -C,C&lt; -B,C&lt; .A,......它可能会崩溃。
无论如何,我在生产中的数百家公司使用的真实项目中使用它来将数千个对象传输到单个html页面以绘制复杂的图形,并且它具有良好的性能。