Ajax 之DWR發布說明(試翻譯)

          Posted on 2006-05-14 02:32 Computerboy 閱讀(3145) 評論(3)  編輯  收藏 所屬分類: 編程技術

          說明:這個發布說明是我試翻譯的,由于水平有限,錯誤再所難免!
          原文地址: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

          ?

          Feedback

          # re: Ajax 之DWR發布說明  回復  更多評論   

          2006-05-14 11:01 by netfishx
          也忒不通順了把

          # re: Ajax 之DWR發布說明(試翻譯)  回復  更多評論   

          2006-05-14 15:55 by 綠色使者、綠色心情
          應該是代碼重構,還有排版和代碼也應該整理一下的

          # re: Ajax 之DWR發布說明(試翻譯)  回復  更多評論   

          2007-06-21 15:55 by ss
          ee

          posts - 40, comments - 39, trackbacks - 0, articles - 0

          Copyright © Computerboy

          主站蜘蛛池模板: 雷波县| 宁海县| 沾化县| 宁城县| 雷波县| 吉林市| 黑山县| 固镇县| 神木县| 尼木县| 芜湖市| 开阳县| 鹤庆县| 西昌市| 屏东县| 调兵山市| 富顺县| 藁城市| 寻乌县| 赤城县| 邹平县| 新疆| 探索| 勃利县| 宁晋县| 大兴区| 都匀市| 通河县| 印江| 嘉禾县| 饶河县| 花垣县| 栾城县| 长泰县| 康乐县| 壶关县| 松原市| 神农架林区| 府谷县| 疏附县| 政和县|