OpenHandX-Unreal 1.01
輕量web框架
2012-10-5
作者:彭明華
openhandx@foxmail.com
本文檔中的任何部分都不得以任何手段任何形式進行復制與傳播
目錄
1 前言
2 組件
3 主要特性
4 SS(Script-Service)腳本服務框架
5 MVC(Model-View-Controller)框架
6 文件上傳支持
7 Web Service功能
8 Spring支持
9 OpenHandX所有項目介紹
1 前言
OpenHandx-Unreal是一個可擴展的輕量級web框架。Unreal以Ajax技術為核心,開創了SS(Script-Service)腳本服務框架開發模式,并完全兼容MVC(Model-View-Controller)框架。SS框架可以輕易完成頁面的 Script對象與Pojo對象的創建、操作、轉化、傳輸,實現了web層與Service層的完全分離和解耦,使Service層的領域驅動設計能徹底地貫徹。Unreal還提供了統一的Web Service功能,為企業打造了統一的服務總線奠定基礎。Unreal封裝嚴密,使用時不需要學習太多的抽象類、接口等概念,因此容易上手,開發效率更高。2 組件
組件名稱 |
說明 |
open-ureal1.0.jar |
Ureal核心包,提供Web框架支持,Web Service和Web Client支持 |
unreal-tag.tld |
頁面標簽庫 |
open-unreal.js |
提供了Ajax請求調用的方法,原生的open模型對象轉化 |
3 主要特性
l 新創的SS(Script-Service)框架
l 完全兼容MVC(Model-View-Controller)框架
l 原生支持Ajax技術
l 簡化的xml配置或零配置
l Web Service功能
l 文件上傳支持
l Spring支持
4 SS(Script-Service)腳本服務框架
傳統的MVC(Model-View-Controller)框架是對頁面Form提交請求->應答刷新頁面這種情況設計的,因此支持非常好,并得到了廣泛的應用。但是隨著web2.0的普及Ajax技術得到應用的場景越來越多,而Ajax應答是具體數據,因此MVC框架并不適合Ajax。SS框架采用JavaScript提交請求,服務端采用Service方式提供服務,最后將應答的結果返回到客戶端,JavaScript再將Json數據解析成JavaScript對象。
Unreal SS框架體系結構

1、 客戶端的JavaScript(asynService或synService方法)發起一個請求
2、 UnrealSS Servlet和SsDispatch查找請求和確定適當的Service
3、 SsDispatch根據請求的方法和參數名匹配要調用的Service的方法,再將參數轉化成方法參數需要的數據對象
4、 Service方法執行該時調用相應的業務邏輯,并獲取返回結果(Pojo對象)
5、 將結果(Pojo對象)轉化成Json字符串返回到客戶端
6、 客戶端的將Json字符串轉化成JavaScript對象
客戶端頁面調用后臺的Service方法就象調用本地的JavaScript方法一樣簡單,并且Service方法返回的Pojo對象也被轉化成了JavaScript對象。因此客戶端頁面可以直接獲取Pojo對象的數據。
SS框架獲取頁面參數不依賴Form或Action的屬性注入,而是通過Service方法的參數獲取。SS框架接受的參數也不再是頁面Form的Input輸入框,而是JavaScript數據對象
例如有一個JavaScript對象:
{
msg:"hello",
count:"10",
amount:"20.1",
time:"2012-1-1 1:2:3.4"
} |
被調用Service的方法:
public Result input(String msg , int count , float amount , Timestamp time) |
假設Result有以下屬性
public String getText() {
return text;
}
public void setText (String text) {
this.text = text;
}
public BigDecimal getMoney() {
return money;
}
public void setMoney (BigDecimal money) {
this.money = money;
} |
最終返回到瀏覽器的JavaScript對象為
{
text:"hello world",
money:"100.00"
} |
input方法被執行時先注入的參數msg為"hello",count為10,amount為20.1,time為2012-1-1 1:2:3.4。返回也是將Java對象轉化成JavaScript對象。這些都是有SS框架完成的。
SS框架就是客戶端腳本直接調用后臺服務的框架,匹配規則是后臺服務的類名、方法名、參數名。
SS框架的優點:
1、 簡化web層,做web開發者只要關注頁面和Script代碼,而不必寫ActionForm及其他Java層的代碼,去除了頁面與后臺代碼的偶合度,使得頁面代碼復用得到了提高,也利于本地調試。這些都大大節提高了開發的質量和效率,使web開發者有更多的時間關注頁面的友好性
2、 做后臺開發者只要按照領域驅動的思想完成Domain、DAO、Service等,開發的是純粹的業務代碼,完全不用關注頁面的實現,使得領域驅動的設計思想更加自由,Service復用更加廣泛,同時代碼的復用和測試變得更加容易
5 MVC(Model-View-Controller)框架
傳統的MVC(Model-View-Controller)框架應用廣泛,Unreal也兼容這種應用模式,滿足特定開發者的需求,Unreal的MVC框架提供了兩種方式:Action方式、Ajax方式
Action方式

1. 客戶端Web瀏覽器的發起一個請求
2. UnrealAction Servlet和ActionDispatch查找請求和確定適當的Action
3. ActionDispatch根據請求的方法和參數名確定要調用的Action的方法, 再將頁面數據轉化Form對象
4. Action方法執行該時調用相應的業務邏輯
5. Action執行的結果(分發的頁面路徑),定向到相應的頁面
6. 最終頁面返回客戶端Web瀏覽器
Ajax方式

Unreal Ajax方式與Action方式不同在于Ajax的Action返回的是數據對象(Pojo)這個對象最終以Json字符串返回到客戶端,由客戶端轉化成JavaScript對象。
Unreal MVC的優點:
1、 Action類不用實現任何接口,可以使一個普通的java類
2、 Action類是保證線程安全的,每一次請求產生一個實例(使用Spring容器原型模式管理Action的時候除外)
3、 Action類不依賴Servlet API的HttpServletRequest和HttpServletResponse,便于通過初始化、設置屬性、調用方法來測試,“依賴注入”支持也使測試更容易
4、 Unreal MVC可以使用Action+Form方式也可以是ActionForm方式傳遞參數
5、 Unreal MVC提供了Ajax方式的原生支持
6 文件上傳支持
UnrealContext是上下文管理類,保存了當前請求的HttpServletRequest、HttpServletResponse、ServletContext。除此之外還提供了文件上傳的支持,UploadSuppport的getFileItems()方法返回當前請求所有上傳文件。
7 Web Service功能
Web Service功能分為OpenService和OpenClient, OpenClient負責與OpenService通訊、調用、數據轉換,OpenService負責服務的提供、數據轉換。
體系結構如下:

1. 應用程序使用OpenClient調用遠程服務器的OpenService
2. OpenClient將參數轉化成為xml并向OpenService服務器發起請求
3. 遠程服務器OpenService查找請求和匹配適當的Service
4. 遠程服務器OpenService根據請求的方法和參數名匹配要調用的Service的方法, 再將xml參數轉化成方法的參數數據對象
5. Service方法執行該時調用相應的業務邏輯,并獲取返回結果(Pojo對象)
6. 遠程服務器OpenService將結果(Pojo對象)轉化成xml返回到客戶端
7. 應用程序的OpenClient將xml轉化 Pojo對象返回
OpenService的特性:
1. Unreal的OpenService是一個通用的WebService工具,包括Service和Client,數據轉化xml和傳輸不需要開發者的關注
2. OpenService提供了Java原生的數據類型、BigInteger、BigDecimal、Date、Time、Timestamp、Pojo對象、Open-Common數據模型(RecordVO、RecordSetVO、MulripleVO)、可串行化對象的傳輸
3. 支持Https傳輸加密和Gzip壓縮
8 Spring支持
Unreal SS和MVC框架以及OpenService的都提供了對Spring的支持。Action、ActionForm、Service層都可以使用Spring Ioc容器管理。
1 OpenHandX所有項目介紹
項目名稱 |
說明 |
open-Common |
公共開發包,整理了日常開發中可能經常用到的方法、工具類 |
open-Chart |
圖表工具,核心采用jfreechart,將jfreechart重新包裝簡化,方便使用 |
open-Report |
多維度報表工具,支持表達式計算、匯總、分組、排序、集成圖表,支持Excel輸出 |
open-Real |
持久層報表工具,封裝jdbc的增、刪、改、查。具有自動匹配sql條件,orm影射 |
open-Batch |
分布式批量架構,處理復雜耗時的數據加工或ETL加工 |
open-Unreal |
SS(Script-Service)腳本服務Web開發框架,并提供WebServie功能 |
open-River |
基于open-unreal的ESB產品,提供代理和點對點模式,并提供快速消息傳輸通道 |
OpenHandX下載地址:http://code.google.com/p/openhandx2/
posted on 2011-11-15 08:47
彭明華 閱讀(1288)
評論(2) 編輯 收藏 所屬分類:
OpenHandX核心