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

          常用鏈接

          留言簿(19)

          隨筆檔案(115)

          文章檔案(4)

          新聞檔案(1)

          成員連接

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

              EasyJWeb中已經(jīng)有了一個(gè)Ajax遠(yuǎn)程腳本調(diào)用引擎,這是很早的事情了。但由于一直存在一些性能問題,所以一直沒有給大家推薦,直到最近m3發(fā)布,通過對(duì)Ajax遠(yuǎn)程腳本調(diào)用引擎進(jìn)行完善,把處理復(fù)雜對(duì)象的返回進(jìn)行的簡(jiǎn)化,通過在以前的幾個(gè)應(yīng)用中進(jìn)行了測(cè)試,發(fā)現(xiàn)性能一下子提升了至少10倍以上,并且運(yùn)行比較穩(wěn)定,因此在這里給大家推薦推薦。

            Ajax遠(yuǎn)程腳本調(diào)用示例演示:http://easyjweb.demo.easyjf.com/ajax/ajax.html

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

            EasyJWeb是一個(gè)提供了對(duì)Ajax遠(yuǎn)程腳本調(diào)用功能支持的框架,他幫助你完成Ajax遠(yuǎn)程腳本調(diào)用中的大多數(shù)細(xì)節(jié)工作,你基本上不用寫額外的代碼就能非常輕松的使用javascript來調(diào)用服務(wù)器的業(yè)務(wù)組件的相關(guān)方法,這些業(yè)務(wù)組件可以是任何java對(duì)象,比如EJB、EasyJWeb容器中的Bean、Spring容器中的Bean等等。使用EasyJWeb的Ajax遠(yuǎn)程腳本調(diào)用,需要下面的幾個(gè)步驟:
            1、 在EasyJWeb容器或子容器中配置供客戶端腳本調(diào)用的業(yè)務(wù)組件。比如,在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 {
          /**
          * 得到服務(wù)器當(dāng)前時(shí)間
          * @return
          */
          public Date getTime() {
          return new Date();
          }
          }

          2、 在EasyJWeb的配置文件,配置要把容器中的哪些業(yè)務(wù)組件及具體方法暴露給客戶端進(jìn)行遠(yuǎn)程腳本調(diào)用。內(nèi)容大致如下:

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

          上面的ajax配置信息表示暴PersonService的所有public方法供客戶端使用javascript調(diào)用。
          只需要上面的兩步,就完成了服務(wù)器端的相關(guān)工作。服務(wù)器端不再需要寫任何Action,EasyJWeb會(huì)自動(dòng)處理客戶端發(fā)送來的Ajax遠(yuǎn)程腳本調(diào)用,下面我們進(jìn)一步看看客戶端的程序。
          3、為了能夠在客戶端頁(yè)面中直接使用javascript進(jìn)行對(duì)PersonService業(yè)務(wù)組件的Ajax遠(yuǎn)程腳本調(diào)用,我們需要在頁(yè)面中引入下面三個(gè)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>

            其中第一個(gè)ejf/easyajax/prototype.js引入的是prototype.js,這是一個(gè)javascript的基礎(chǔ)庫(kù),提供很多對(duì)基礎(chǔ)javascript類的擴(kuò)展,并提供了ajax相關(guān)的實(shí)用組件,EasyJWeb的遠(yuǎn)程腳本調(diào)用引擎是基于prototype.js構(gòu)建的。
            第二個(gè)ejf/easyajax/engine.js是EasyJWeb的遠(yuǎn)程腳本調(diào)用支持引擎,他負(fù)責(zé)處理Ajax遠(yuǎn)程腳本調(diào)用的相關(guān)的細(xì)節(jié),如參數(shù)處理、回調(diào)處理等,同時(shí)提供了一些實(shí)用工具如EasyAjaxUtil等供客戶端使用。
            第三個(gè)ejf/easyajax/PersonService.js是PersonService對(duì)象,PersonService.js的內(nèi)容是根據(jù)服務(wù)器端的容器中名為PersonService的Bean及EasyJWeb的ajax配置信息生成的。只要引入了PersonService.js,我們就可以直接在頁(yè)面中調(diào)用PersonService的相關(guān)方法了。
            上面的三個(gè)js文件都是服務(wù)器端動(dòng)態(tài)生成的,需要我們?cè)趙eb.xml文件把所有/ejf/*的URL都交由EasyJWeb來處理。因此,需要在Web.xml的url中增加如下的映射內(nèi)容:

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


          4、 在頁(yè)面中使用javascript調(diào)用服務(wù)器的相關(guān)方法

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

            怎么樣,一切都是如此簡(jiǎn)單,不需要寫任何PersonService的代碼,不需要寫任何Action,只需要進(jìn)行非常簡(jiǎn)單的配置,就能讓我們服務(wù)器上的業(yè)務(wù)組件支持Ajax遠(yuǎn)程腳本調(diào)用。

            by easyjf 大峽

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

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 泗阳县| 铜鼓县| 黄平县| 合作市| 邛崃市| 新巴尔虎左旗| 互助| 高邑县| 监利县| 沙河市| 安庆市| 平塘县| 澄城县| 武定县| 出国| 宿州市| 五大连池市| 平塘县| 甘洛县| 阳新县| 太湖县| 满洲里市| 苏尼特左旗| 河间市| 拉萨市| 临沭县| 尉犁县| 衡阳县| 河东区| 盐边县| 肥乡县| 大姚县| 山东省| 精河县| 塔河县| 垦利县| 武冈市| 自治县| 铁岭市| 乌拉特前旗| 井冈山市|