我是一個JAVA EE開發人員,從業已經有近七、八年的時間了。對JavaEE的企業用戶開發技術框架方面的比較熟悉。對Spring,Struts,Webwork,Hibernate等流行的開源框架也一直在工作中使用。
在現在的MVC框架中,我比較傾向于采用WebWork,靈活輕巧Struts2其實質就是對WebWork2的一次升級,這也說明了WebWork相對與Struts1的優勢所在。在現在的RIA開發成為趨勢之后,在工作中也使用了DWR做Ajax服務器端的數據處理,并采用js template的腳本處理頁面顯示數據,其中最大的痛苦就是調試JavaScript,盡管我們使用了firefox的插件調試javascrpt。
正如“JAVA程序員當如何選擇RIA開發環境”所提到ajax的的先天缺陷,并不適合RIA的全應用開發,如果只是在頁面中的局部使用是有一些優勢,根據具體情況選擇最合適的。
在Flex的應用程序開發當中,學習了很對范例,基本上瀏覽了一遍Flex的幫助文檔,并自己做了些小程序。
其中遇到最大的困難不是在程序調試方面,而且程序管理方面的,代碼混亂,難以控制,尤其在多人開發的時候,更加容易出現這樣的情況。這樣的情況下RIA的開發是痛苦的,不適宜的。
Cairngorm開發框架說白了就是一個FLEX應用開發的MVC框架(自己的感覺)。將Model,view,Control獨立分開,清晰明了。
什么是Cairngorm?Cairngorm是一個通過邏輯功能、數據、用戶視圖和代碼控制的任何事情來劃分你的應用程序代碼的基礎方法論,可以叫做MVC(Model-View-Control)的一種實踐方式。
Cairngorm的劃分
Model Locator(模型定位器):存儲你的應用中所有的Value Objects(數據)和共享變量在一個位置。和Http的Session對象類似,只是它存儲在Flex接口的客戶端而不是在中間件應用服務器的服務器端。
View(界面):通過一個或者多個Flex組件(按鈕、面板、組合框、Tile等等)組合在一起的一個個命名單元,綁定數據在Model Locator(模型定位器)中,并且產生基于用戶操作(點擊、滾動、拖拽等)的自定義的Cairngorm事件。
Front Controller(前端控制器):接收Cairngorm事件并映射他們到Cairngorm命令控制器上。
Command(命令控制器):處理商業邏輯,調用Caringorm代理和(或)其它命令。
Delegate(代理):由命令創建,實例化遠程過程調用(HTTP、Web Service等等)并且處理命令的返回結果數據。
Service(服務):定義連接遠程數據存儲的遠程過程調用(HTTP、Web Service等等)。
有關Cairngorm的資料:/P>
Cairngorm
是Iteration::two的開源項目, 是使用macromedia Flex的RIA開發的最佳
實踐(best-practice)框架.
在Cairngorm基礎上開發RIA, 將會在Iteration::two的專家體系和現有的靈活可維
護企業解決方案中達到平衡.
Cairngorm本身并不是一個完整的企業應用, 它只是提供了一個開發的骨架, Iteration::two稱
之為體系.
在這個體系中包括以下幾個部分:
1. Business(業務邏輯部分)
2. Command(命令部分)
3. Control(控制部分)
4. Model(數據模型)
5. View(界面視圖)
6. VO(ValueObject)
我們從Control說起:
在Control中, 定義了3個基類: Event, EventBroadcaster, FrontController.
Event用于在應用不同的層之間傳遞事件, 并攜帶事件的數據. 包含type和data兩個
成員.
type存放一個區別不同事件的名稱,將會在FrontController中進行注冊.
而在命令(Command)類中, 會對事件進行響應.
EventBroadcaster是一個單例類(singleton), 用于廣播用戶動作對應的事件. 使用
方法: EventBroadcaster.getInstance().broadcastEvent( ... )
FrontController稍微復雜一點點. 用于將特定的用戶動作分發到指定的命令類.
FrontConroller是請求處理的核心類. 整個體系中遍布的EventBroadcaster.getInstance(
).broadcastEvent( ... )這樣的調用,
都是用來通知監聽控制器: 用戶發出了請求. 在實際應用中, 開發者應該生成一個
FrontContoller的子類,
并在構造函數中調用addCommand()注冊預期事件的處理命令. FrontController的具
體實現類應該創建一次而且只能創建一次.