Flex兩種與後臺JAVA交互的方式

我那邊現在有兩個團隊做系統,一隊用RemoteObject,一隊用HttpService。 
我之前的構想也是使用RemoteObject的,但是後來發現RemoteObject有一些不爽的地方。 
1.RemoteObject要使用到AS的實體類(使用Bindable綁定Java類)。我的系統涉及到200多張表,如果改動表結構的話,AS實體類也要跟着改。十分麻煩,而且寫好又要改getter,setter,又要部署到tomcat。除非你自己寫工具自動生成。 

2.使用RemoteObject,那你的J2EE後臺要添加remoting-config.xml,services-config.xml等等的配置文件和Flex的lib,多了很多文件,而我做項目的Flex僅僅是客戶端顯示,然後調用後臺。因此我的服務端完全就可以我們熟悉的J2EE需要用到的文件。減少了配置和以後的維護。 

3.如果你要使用到Spring的話,需要配置SpringFactory和destination。例如: 
services-config.xml裏面添加: 
<factories> 

     <factory id="spring" class="flex.samples.factories.SpringFactory"/> 

</factories> 
remoting-config.xml裏面添加: 

<destination id="userService"> 

<properties> 

<!--    工廠對應你自己取的工廠名字     --> 

        <factory>spring</factory> 

<!--    這個source對應spring的bean的id     --> 

        <source>userService</source> 

    </properties> 

</destination> 
這裏需要爲每一個Service配置,多的話。。。。 

4.我這邊做Flex的UI的開發者都是應屆畢業生,使用RemoteObject有必要了解ORM(我後臺持久層框架是JPA),不然他們調RemoteObject的方法時很容易出錯,或者不會調用。而使用HttpService只需要我們後臺人員和前臺做UI的Flex開發者約定一套通信的xml格式即可。後臺的負責返回xml,前臺的負責發送xml,很爽!例如: 
<root> 
<model> 
<attribute1>attr1</attribute1> 
<attribute2>attr2</attribute2> 
</model> 
</root> 

5.Flex的組件對xml的支持十分友好。你可以直接將HttpService返回的xml放到組件的dataProvider就可以了,特別是dataGrid或者tree用起來特別好。 

5.使用HttpService減少了部署量。我只要將後臺的Java程序部署到Tomcat,前臺的Flex就可以直接將FlexBuilder編譯好的程序在客戶機連接後臺,而不用部署到Tomcat,直接測試就可以了。大大提高了開發效率。 

6.使用HttpService也有缺點。首先就是通信的效率沒有RemoteObject來的高(因爲是xml,也可以使用JSON或者其它通信方式)。其次就是,你需要寫Object與xml之間的轉換。我沒有使用xstream,而是自己用反射寫工具類。你還需要提供Servlet給Flex調用。我用的是SpringMVC提供的MulitiController對Flex提供Http服務。 

7.使用HttpService,我碰到了一些意想不到的事情。最嘔血的是我提供get方法返回xml數據的時候,Flex總是顯示舊的數據。解決方法是在你請求的Servlet地址添加一個參數(參數名隨便起,我用random),而且請求的參數必須每一次都不一樣(可以通過當前時間或者UUID實現),例如:http://192.168.2.111:8080/UserController.do?servlet=getAll&random=sdfsdfs 
這個我查錯了很久,鬱悶。。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章