
以下的說明基于利用Dorado的MVC框架的基本開發(fā)方式:
1. Request(請求): 當(dāng)Client端(瀏覽器)發(fā)起請求時, 改請求將首先被Dorado的控制層(Mapping)接受.
2. Dispatch(分發(fā)): 控制層會跟據(jù)用戶的配置決定激活哪一個Action.
3. Forward(轉(zhuǎn)向): 商業(yè)邏輯執(zhí)行完成后Action將根據(jù)商業(yè)邏輯的執(zhí)行結(jié)果將Request轉(zhuǎn)向給具體的視圖(ViewModel). 具體的轉(zhuǎn)向方式由Action的用戶配置信息決定.
4. Extract(提取): 視圖(ViewModel)被激活后會通過其中的Dataset對象到Module中提取業(yè)務(wù)數(shù)據(jù). 同時視圖也會根據(jù)配置信息自動創(chuàng)建各種可視化的控件用于展現(xiàn)提取到的業(yè)務(wù)數(shù)據(jù).
5. Response(反饋): 視圖的Server端準備工作完成后會自動將各種信息輸出到Response對象中反饋給Client端.
注意 |
上圖中以虛線標出了dorado的MVC架構(gòu)與傳統(tǒng)MVC的不同點. 這種不同主要是由dorado強大的Client帶來的.
1. 由于dorado的Client不再以傳統(tǒng)的HTML FORM作為與Server交互的途徑, 而是以XML替代. XML所能構(gòu)承載的信息量和復(fù)雜度遠遠高于HTML FORM. 所以在dorado的開發(fā)模式中往往不在Action中直接調(diào)用業(yè)務(wù)邏輯, 而是等到ViewModel和Module將這些XML解析成對象后再調(diào)用業(yè)務(wù)邏輯.
2. dorado的Client中除了有普通的類似FORM提交的操作之外, 還存在著一種數(shù)據(jù)請求操作. 例如在不刷新頁面的情況下下載數(shù)據(jù)集的分頁信息、遠程方法調(diào)用等. 這種請求與普通的提交的操作的處理方式有著很大的不同, 也同樣難以通過Action進行統(tǒng)一的處理. 而且利用dorado的MVC開發(fā)方式卻可以很好解決這一問題.
以上變化, 經(jīng)過銳道公司extra和dorado兩代產(chǎn)品的數(shù)十家不同類型、層次的開發(fā)的實踐證明是完全可行, 且對系統(tǒng)的擴展性、復(fù)用性、安全性完全無害的. |

上圖解釋了數(shù)據(jù)如何通過各個功能層從數(shù)據(jù)庫中轉(zhuǎn)換到可是化控件中的過程.
1. ViewMode用于定義一個視圖的模型,包括數(shù)據(jù)模型(Dataset)和可視化組件(Control)的模型。Dataset是一種用于為Client服務(wù)的二維數(shù)據(jù)表。Control可以綁定到Dataset,用于展示和操作Dataset中管理的數(shù)據(jù)。
2. DatasetRefrence是一種對Module中Dataset的引用,用于使用ViewModel之外的其它的Dataset的數(shù)據(jù)。
3. Module一般用于描述一組相關(guān)的商業(yè)邏輯或作為后臺的商業(yè)邏輯的前端(商業(yè)邏輯前端也稱為:BusinessDelegate)。Module可通過Dataset的事件來將Client對Dataset中數(shù)據(jù)的操作翻譯成真正的業(yè)務(wù)邏輯操作。
4. 在默認模式下,用戶可通過SQL進行數(shù)據(jù)庫操作,此時用戶可利用Module中的Dataset對象直接對數(shù)據(jù)庫進行操作。