關於flex+spring+hibernate的問題

(轉自:RIACHINA 中國RIA開發者論壇

問:首先說,我怎麼也沒找到相關的文章或demo,如果哪位仁兄知道,請給個聯結。當然了,如果是高手,請給指點一下,這個結構應該如何做好一些。
看了一些相關的東西,發現需要用as3在客戶端建立VO,不知道這樣做是否安全,請指教。
謝謝了

 

答:無需建立VO,AS是動態語言,對象可以動態的構建,需要什麼就構建什麼對象即可。比如服務器傳來的是user對象的數據,那麼你構造的時候new一個Object,直接可以把這個對象當作user來對待。
當然對於FLEX的框架設計來說,VO能更好的理解數據對象,並規範管理。
另外,關於你這三個框架完全可以當作普通的jsp(struts)+spring+hibernate來做,實際上RIA的思想是一種分佈式的結構,展現層和邏輯還有po都是隔離的,服務器只需要最後給它結果,或者執行它的請求即可。因此之前jsp是什麼架構,在這裏把jsp換成flex即可。(由於服務端不再接管展現層,因此struts框架就是多餘的了)
不過,由於兩種語言數據不兼容,flex接收的實際上都是從服務器傳回的序列化過的文本,比如XML或json,因此傳統的頁面跳轉之類的都不存在,服務器端只需要專心的做業務層,把結果輸出或者執行操作,如何組織顯示,如何在頁面跳轉,在服務器端再也不用考慮,這恐怕是設計RIA服務器端和以往的最大不同
你要的demo的確找不到,如果你搜jsp+spring+hibernate肯定一大堆,因爲這兩個框架從服務器端來說沒區別,只是展現層換了,在這個框架的基礎上,你需要考慮如何把VO更簡單的轉換成序列化的文本輸出即可(當然你也可以純手工的在服務器端轉換VO),從MVC的設計思想來看,服務器就應該是做這些工作的。

 

問:謝謝cimmicola了。 寫的太好了,非常有用。 我還有個疑問就是如果說簡單的用flex替換jsp的話,session該怎麼做? 這個地方是不是一個區別之處。  還有就是如果真象官方上的example那樣,建立一個.as文件裏面包括 getuserId(), setuserId()什麼的,然後用RemoteClass聯結到一個java。這麼做是不是不太安全, 至少是把數據庫的table結構放到客戶端了。請多多指教。謝謝了。

 

答:session目前沒有官方的解決方案,通常做法就是請求服務器的session並保存爲自己的一個對象。session一般都是不會改變的數據,比如登錄用戶的信息,設計session的原則儘量是不將業務數據存儲進去,因爲session 是比較耗資源的。
關鍵是在flex存儲這個session對象,避免反覆請求。
可以用shareObject存儲起來,但是SO類似於cookie,是存在本地的,如果你的session有敏感數據需要在退出程序時清除SO裏的數據。
比如:
so: SharedObject=SharedObject.getLocal("LocalData");
user:Object=....//你從服務器端取得的session
so.data.loginUser=user;
so.flush;
//在其他頁面
trace(so.data.loginUser.name);
還有一種方法,利用類的生命週期,將服務器的session設置到一個類的靜態屬性,我們知道,靜態屬性是在類被構造時就會有值,而無需實例化這個對象,因此,這個值將是一個長存於內存的變量,即使你沒有new這個類,直接取也是可以取得的。而且,由於沒有java那樣的垃圾回收器,這個類即使數據沒有使用,也不會消失。
創建一個類
public class MySession{
    private static var _data:Object=null;
    public static function set data( data:Object){
        _data=data;
    }
    public static function get data():Object{
        return _data;
    }
}
設置MySession.data.loginUser=.....;
AS是動態語言,即使我的MySession類的data屬性裏,並沒有聲明什麼結構,也不存在loginUser這個屬性,但是會自動構造。
另一個問題,如果你覺得這樣不安全,你可以不這麼做,但是可以肯定的是,數據在某種層次上說,都是透明的,且VO並不等於是數據庫結構。我的項目裏FLEX都沒有VO,我不喜歡在客戶端再來映射一次VO,這樣讓我覺得很煩瑣,展現層應該關注的是用戶體驗和數據展現,他只需要被告知數據結果。至於數據VO,它應該是持久層的東西。我覺得動態語言靈活性是可以好好利用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章