说明:这个发布说明是我试翻译的,由于水平有限,错误再所难免!
原文地址:http://getahead.ltd.uk/dwr/changelog/dwr20m1
DWR现在已经发布了2.0的milestone 2 了。我现在翻译的是milestone 1
由于我要出差,所以这个翻译是一个草稿
欢迎朋友们提出指正
我的MSN:zhang_2958@hotmail.com
DWR 发布说明
DWR 2.0版本 是1的里程碑
这是我们在新特性方面的最大发布!
反向的AJAX
最大的特性是我们成为反向的Ajax。DWR1.x允许你用javascript异步的访问java代码。
DWR2.0在这上允许你建立异步java访问javascript代码。
反向的Ajax使你编写应用程序更容易得多。
It can use polling or Comet(long-lived HTTP)queries.
我们的‘聊天室’例子包含这样一段java代码:
----
//Get the current page --得到当前的页
WebContext wctx=WebContextFactory.get();
String currentPage=wctx.getCurrentPage();
// 'messages' is a List of recent messages for a browser to display
// Java objects converted to Javascript hava a declarating and a declared
///variable name.
OutboundVariable ov=wctx.toJavascript(messages);
//Loop over all the users on the current page
for(ScriptSession otherSession:wctx.getScriptSessionsByPage(currentPage)){
otherSession.addScript(ov.getInitCode());
otherSession.addScript("receiveMessages("+ov.getAssignCode()+");");
//receiveMessages is a Javascript function that displays the current list of
///messages
}
----
在本质上我们发送一些javascript循环所有用户在当前页上更新并显示他们。
javascript更简单。你可以启用轮流(轮询)检测这种查询方式。
----
DWREngine.setPolling(true);
----
聊天室例子(在WAR包里下载)包括javascript源码 到 receiveMessages() 是使用
DWRUtil的4路线路(线程)将信息显示到屏幕上。 ????
其它这技术的用法包括酒吧,游戏在线,售票和任何的系统在何处服务器状态变化,
我们需要把更新发布到浏览者或者浏览器上。
跨领域 Ajax:<script> 标签(tag)操作
如果你需要访问不同的领域服务器 我们的遥远(remoting)计划已成为可能。
从DWR2.0你可以操作<script>标签(tags)增加在XMLHttpRequest 或 iframes.
对于使用你需要做如下:
----
DRWEngine.setMethod(DWREngine.ScriptTag);
----
<signatures>(签名)元素(Element)
DWR1.0有时需要一个<signatures>元素(Element)帮你它得到一个类型转换。
如果你用DWR2.0同JDK5 此时一般的类型你就不要使用更多的<signatures>
DWR将自动调用类型转换。
DWRUtil 更新
我们已更新DWRUtils.有一种新的DWRUtil.cloneNode(elementID)方法
你可以重复使用HTML片段作为模板。
例如:
----
// Loop over all the beans
for(var i=0;i<beanArray.length;i++){
//Fill in the blanks in the template. You will have several lines like this.
DWRUtil.setValue("someid",beanArray[i].property);
//Clone the node so we don't overwrite it next time
DWRUtil.cloneNode("template");
}
//Finally hide the template
$("template").style.display="none";
----
我们也尝试着写一些的取值的的更新。如果其值为假的话,将返回false(假).
这有可能破坏反向的兼容性。
它是轻微非明显依赖你的观点,我们需要关于这样的反馈。
新的属性作用域(Scope)--脚本(Script)
有一个新的作用域。
Servlet与JSP开发者熟悉设置属性在一次请求,页面,会话,或者应用水平。
DWR2.0允许你使用"script"(脚本)作用域。
脚本作用域在单一页面内,Ajax应用能持续使用变量。
脚本作用域其long-lived 有一点像会话作用域,然而它不要cookies(甜点).脚本作用域
属性在单一页面内,任何Ajax操作都是可用的。
创建dwr.xml它是可用的。
----
<create creator="new" javascript="Test" scope="script">
<param name="class" value="com.example.Test"/>
</create>
----
脚本作用域也同样可用于 programatically:
----
WebContextFactory.get().getScriptSession().setAttribute("key",value);
----
例子(Example)
开始下载DWR2.0 压缩文件时会比以前有一些大因为我们包括一些例子。
我们从事简单的struts 和 Spring 整理演示。
Refactoring(重用)这个词我叫不准。是应该是重载的呢还是重构。大家可以告诉我!
在开发者眼中,重用是一个特性,因为代码整洁。
但是它也是导致用户向后兼容性问题的原因。
我们为DWR2.0做了一些重用。但是这里是用户剔除它:
我们使用 org.directwebremoting.* 包 代替模糊的uk.ltd.getahead.dwr.*,
由于兼容性差,我们已经抛弃存根(stubs).
如果我们有所遗漏,请告诉我们。我们也试图使DWR成为可嵌入的。
同时,如果现在创建像SOAP或者JSON-RPC一样的预备的协议应该是可能的!
呼叫集合数据(Call Meta-data)
你能像这样使用DWR传递请求属性呼叫集合数据:
----
Remote.getData(42,{
Callback:function(str){alert(str);},
customKey:"Fred",
});
----
java 在HttpSevletRequest 中额外的集合数据是可用的。如下代码将返回字符串"Fred":
----
WebContextFactory.get().getHttpServletRequest().getAttribute("customKey");
----
其它事项
虽然我们已经删除了deprecated.js,但是有人竟然还能够注意到,对此我十分怀疑。在
DWR9.0版本出现时,它已经不能满足需求了。
安全和稳定
我们十分慎重的对待安全。DWR1.X 到迄今为止是十分安全的,但是,那不意味着我们停止
在我们的荣誉上。
DWR2.0介绍许多新的代码。反向的AJAX和脚本为基础的会话管理是疏忽(slip up)的地方
。
此外,里程碑1,反向的ajax将在你的webserver 上创建一些较多的加载,比老版本稳定。
我们已得到2个答案--设计允许服务器加载监控和动态back-off。
更令人激动的是,我们正与Mortbay一起努力,使DRW能够运用Jetty6的持续性,如果可行的话,可以满足长期HTTP的请求而不冒资源匮乏风险。
因此,在这之前,请不要使用DWR2.0在开发系统,直到我们有更多的测试和检查。
未来版本
这是一个令人兴奋的第一个里程碑,我们将在未来数周内推出.
我们将得到更多东西!
下载
你可以下载DWR2.0 M1
下载地址:
http://getahead.ltd.uk/dwr/download