隨筆 - 115  文章 - 481  trackbacks - 0
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(19)

          隨筆檔案(115)

          文章檔案(4)

          新聞檔案(1)

          成員連接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

              EasyJWeb中已經有了一個Ajax遠程腳本調用引擎,這是很早的事情了。但由于一直存在一些性能問題,所以一直沒有給大家推薦,直到最近m3發布,通過對Ajax遠程腳本調用引擎進行完善,把處理復雜對象的返回進行的簡化,通過在以前的幾個應用中進行了測試,發現性能一下子提升了至少10倍以上,并且運行比較穩定,因此在這里給大家推薦推薦。

            Ajax遠程腳本調用示例演示:http://easyjweb.demo.easyjf.com/ajax/ajax.html

            完整的示例應用及源碼下載:ftp://ftp1.easyjf.com/easyjweb/demo/ajax.war
            

            EasyJWeb是一個提供了對Ajax遠程腳本調用功能支持的框架,他幫助你完成Ajax遠程腳本調用中的大多數細節工作,你基本上不用寫額外的代碼就能非常輕松的使用javascript來調用服務器的業務組件的相關方法,這些業務組件可以是任何java對象,比如EJB、EasyJWeb容器中的Bean、Spring容器中的Bean等等。使用EasyJWeb的Ajax遠程腳本調用,需要下面的幾個步驟:
            1、 在EasyJWeb容器或子容器中配置供客戶端腳本調用的業務組件。比如,在easyjweb的配置文件中像下面的方式配置Bean:

          <bean name="PersonService" class="easyjweb.demo.service.impl.PersonServiceImpl" />

               PersonServiceImpl的代碼如下:

          package easyjweb.demo.service.impl;
          import java.util.Date;
          import java.util.List;
          import java.util.Map;
          public class PersonServiceImpl {
          /**
          * 得到服務器當前時間
          * @return
          */
          public Date getTime() {
          return new Date();
          }
          }

          2、 在EasyJWeb的配置文件,配置要把容器中的哪些業務組件及具體方法暴露給客戶端進行遠程腳本調用。內容大致如下:

          <ajax>
          <services allowName="*">
          <service name="PersonService" />
          </services>
          </ajax>

          上面的ajax配置信息表示暴PersonService的所有public方法供客戶端使用javascript調用。
          只需要上面的兩步,就完成了服務器端的相關工作。服務器端不再需要寫任何Action,EasyJWeb會自動處理客戶端發送來的Ajax遠程腳本調用,下面我們進一步看看客戶端的程序。
          3、為了能夠在客戶端頁面中直接使用javascript進行對PersonService業務組件的Ajax遠程腳本調用,我們需要在頁面中引入下面三個js。

          <script src="ejf/easyajax/prototype.js" type="text/javascript"></script>
          <script src="ejf/easyajax/engine.js" type="text/javascript"></script>
          <script src="ejf/easyajax/PersonService.js" type="text/javascript"></script>

            其中第一個ejf/easyajax/prototype.js引入的是prototype.js,這是一個javascript的基礎庫,提供很多對基礎javascript類的擴展,并提供了ajax相關的實用組件,EasyJWeb的遠程腳本調用引擎是基于prototype.js構建的。
            第二個ejf/easyajax/engine.js是EasyJWeb的遠程腳本調用支持引擎,他負責處理Ajax遠程腳本調用的相關的細節,如參數處理、回調處理等,同時提供了一些實用工具如EasyAjaxUtil等供客戶端使用。
            第三個ejf/easyajax/PersonService.js是PersonService對象,PersonService.js的內容是根據服務器端的容器中名為PersonService的Bean及EasyJWeb的ajax配置信息生成的。只要引入了PersonService.js,我們就可以直接在頁面中調用PersonService的相關方法了。
            上面的三個js文件都是服務器端動態生成的,需要我們在web.xml文件把所有/ejf/*的URL都交由EasyJWeb來處理。因此,需要在Web.xml的url中增加如下的映射內容:

          <servlet-mapping>
          <servlet-name>easyjf</servlet-name>
          <url-pattern>/ejf/*</url-pattern><!--所有/ejf/開頭的url都由easyjweb來處理-->
          </servlet-mapping>


          4、 在頁面中使用javascript調用服務器的相關方法

          <script>
          function showServerTime(){
          PersonService.getTime(showTime) ;
          function showTime(ret){
          alert("服務器端時間: "+ret) ;
          }
          }
          </script>

            怎么樣,一切都是如此簡單,不需要寫任何PersonService的代碼,不需要寫任何Action,只需要進行非常簡單的配置,就能讓我們服務器上的業務組件支持Ajax遠程腳本調用。

            by easyjf 大峽

          posted on 2008-01-03 13:22 簡易java框架 閱讀(1901) 評論(11)  編輯  收藏

          FeedBack:
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-03 13:55 隔葉黃鶯
          何以就斷定性能提升10倍了呢?  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-03 13:59 xuruchao
          和DWR沒有什么區別吧?  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-03 14:01 金魚
          我只能根據網速和服務器的性能判斷它是否快.  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-03 14:07 簡易java框架
          @隔葉黃鶯
          這個據說是根據測試得來的,放在以前很多基于EasyJWeb的Ajax應用上試了,確實提高了,這里的10倍應該是一個概數。  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-03 14:12 忠厚中國
          在和以前遺留系統上比較的話可能要快很多,這樣只證明一點,以前作的太垃圾了!  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-03 14:15 簡易java框架
          @忠厚中國
          你把現在這個跟dwr比較一下就知道了。:-)
          另外跟以前的比,只是一些算法改進了一下,其它的都沒變。這個快也不是絕對,只是針對某些部份。就好比,Guice說他比Spring快100倍,你能說Spring就垃圾嗎?  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎[未登錄] 2008-01-03 14:15 天一
          @xuruchao
            從應用的角度來說,區別不大,都非常簡單、直觀。但從實現的角度來說,區別還是比較大的。
            首先就是dwr的中心的dwr,再向外幅到其它的spring支持、webwork支持、guice支持等,很啰嗦的。而EasyJWeb的重心是web應用,畢竟一個大型的Web應用不可能全部是遠程腳本調用,更多的情況只是為了實現一些功能才需要的。easyjweb中的這個遠程腳本調用只是一個非常普通的EasyJWeb Action,由于這部分只專注于遠程腳本功能實現,所以代碼非常少。
            另外很多dwr不方便實現的的,比如服務器端的方法的參數為(除集合以外)接口類型。當然EasyJWeb也有一些沒有實現,比如,往服務器端發送集合或數組的時候,只能發送簡單類型的值。  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-03 14:18 忠厚中國
          謝謝簡易java框架為我帶來這么好的東西,我正在為此事著急呢,請簡易java框架的兄弟們一定指點一二,我在項目中好少費些力氣去學習DWR。  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎[未登錄] 2008-01-03 18:22 stone
          如果和自己比,性能提升了10倍,那說明以前的性能太差了  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2008-01-05 14:54 小石
          發送長整數組和List都返回null錯誤。  回復  更多評論
            
          # re: 性能提升10倍的Ajax遠程腳本調用引擎 2009-10-09 05:00 wangqi

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 通渭县| 丽江市| 浑源县| 新郑市| 通许县| 拉孜县| 新巴尔虎左旗| 元江| 榆中县| 大洼县| 平原县| 丹寨县| 邯郸市| 额尔古纳市| 彩票| 厦门市| 明光市| 陆丰市| 湖州市| 顺昌县| 福建省| 滦平县| 和田县| 永川市| 岱山县| 卢龙县| 仁化县| 忻州市| 库尔勒市| 三亚市| 辉南县| 九寨沟县| 朝阳区| 莆田市| 百色市| 若尔盖县| 绥德县| 赤峰市| 澜沧| 乌审旗| 商都县|