繼續(xù)侃數(shù)據(jù)驅(qū)動(dòng)和模型驅(qū)動(dòng)

          前天那篇blog更多的是講了下數(shù)據(jù)驅(qū)動(dòng)、模型驅(qū)動(dòng)的大致概念,今天更多的是講數(shù)據(jù)驅(qū)動(dòng)以及模型驅(qū)動(dòng)在進(jìn)行系統(tǒng)實(shí)現(xiàn)時(shí)的方法以及過(guò)程。
          數(shù)據(jù)驅(qū)動(dòng)
          采用數(shù)據(jù)驅(qū)動(dòng)進(jìn)行系統(tǒng)實(shí)現(xiàn)時(shí)通常采用的是一個(gè)這樣的過(guò)程,建立數(shù)據(jù)源(DataSource),同時(shí)根據(jù)業(yè)務(wù)對(duì)象模型進(jìn)行數(shù)據(jù)庫(kù)表設(shè)計(jì),在數(shù)據(jù)庫(kù)表設(shè)計(jì)完成后根據(jù)業(yè)務(wù)場(chǎng)景構(gòu)成數(shù)據(jù)集(DataSet),通常這個(gè)時(shí)候DataSet本身就是一種業(yè)務(wù)場(chǎng)景所需的業(yè)務(wù)數(shù)據(jù),在簡(jiǎn)單的情況下有可能就是對(duì)某張表的操作,復(fù)雜的情況下則是對(duì)于多張表的操作,在DataSet構(gòu)成后將此DataSet綁定到頁(yè)面即可進(jìn)行數(shù)據(jù)的展現(xiàn)了,如需對(duì)數(shù)據(jù)進(jìn)行增加、編輯、刪除同樣通過(guò)DataSet方式來(lái)進(jìn)行,這個(gè)過(guò)程基本上就是一個(gè)基于數(shù)據(jù)驅(qū)動(dòng)進(jìn)行系統(tǒng)實(shí)現(xiàn)的過(guò)程了。
          模型驅(qū)動(dòng)
          采用模型驅(qū)動(dòng)進(jìn)行系統(tǒng)實(shí)現(xiàn)時(shí)通常采用的是一個(gè)這樣的過(guò)程,根據(jù)業(yè)務(wù)場(chǎng)景建立業(yè)務(wù)對(duì)象,在進(jìn)行持久時(shí)持久業(yè)務(wù)對(duì)象中需要持久的屬性,對(duì)于業(yè)務(wù)場(chǎng)景的實(shí)現(xiàn)通過(guò)Facade模式對(duì)外提供統(tǒng)一接口,此接口通過(guò)與持久層進(jìn)行交互以及操作業(yè)務(wù)對(duì)象(或領(lǐng)域?qū)ο?來(lái)完成業(yè)務(wù)場(chǎng)景的實(shí)現(xiàn),而頁(yè)面則通過(guò)此領(lǐng)域?qū)ο蠡蝻@示對(duì)象來(lái)進(jìn)行數(shù)據(jù)的展現(xiàn),如需對(duì)數(shù)據(jù)進(jìn)行操作按照顯示對(duì)象--->Service Facade來(lái)完成。

          從上面關(guān)于實(shí)現(xiàn)的過(guò)程的描述上來(lái)說(shuō),會(huì)覺(jué)得好像模型驅(qū)動(dòng)更為復(fù)雜,但模型驅(qū)動(dòng)較之?dāng)?shù)據(jù)驅(qū)動(dòng)的優(yōu)點(diǎn)我想不用多少,這里更重要的是我覺(jué)得是對(duì)于數(shù)據(jù)驅(qū)動(dòng)和模型驅(qū)動(dòng)的一個(gè)理解,其實(shí)數(shù)據(jù)驅(qū)動(dòng)同樣是模型驅(qū)動(dòng),呵呵,數(shù)據(jù)驅(qū)動(dòng)中的業(yè)務(wù)對(duì)象模型我們可以認(rèn)為和模型驅(qū)動(dòng)中的業(yè)務(wù)對(duì)象模型一致,其和模型驅(qū)動(dòng)的不同點(diǎn)在于數(shù)據(jù)驅(qū)動(dòng)采用DataSet的方式來(lái)實(shí)現(xiàn)業(yè)務(wù)場(chǎng)景,而模型驅(qū)動(dòng)通常采用Service Facade調(diào)用各領(lǐng)域?qū)ο髞?lái)實(shí)現(xiàn)業(yè)務(wù)場(chǎng)景,這里有一點(diǎn)非常明顯,數(shù)據(jù)驅(qū)動(dòng)只適合一種簡(jiǎn)單的業(yè)務(wù)場(chǎng)景,那就是通過(guò)數(shù)據(jù)關(guān)聯(lián)或簡(jiǎn)單的數(shù)據(jù)邏輯處理可以來(lái)實(shí)現(xiàn)的業(yè)務(wù)場(chǎng)景,而Service Facade其實(shí)對(duì)于兩者均通用,通過(guò)構(gòu)建類似DataSet的數(shù)據(jù)關(guān)聯(lián)或簡(jiǎn)單的數(shù)據(jù)邏輯處理通過(guò)和持久層交互即同樣達(dá)到了如此的目的,^_^,而且這種方式對(duì)于復(fù)雜的業(yè)務(wù)場(chǎng)景同樣可以實(shí)現(xiàn),通過(guò)領(lǐng)域?qū)ο蟮慕换ゼ纯赏瓿桑贒ataSet方式中這個(gè)步驟是比較棘手的,雖然也可以處理,但會(huì)帶來(lái)的問(wèn)題就是重復(fù)代碼的增多以及可維護(hù)性的降低,其實(shí)關(guān)鍵的問(wèn)題就是其沒(méi)有形成對(duì)象,內(nèi)聚性不夠強(qiáng)。
          我的觀點(diǎn)仍然是數(shù)據(jù)驅(qū)動(dòng)是一種退化的模型驅(qū)動(dòng)或者說(shuō)變相的模型驅(qū)動(dòng),數(shù)據(jù)驅(qū)動(dòng)中根據(jù)業(yè)務(wù)對(duì)象模型進(jìn)行數(shù)據(jù)庫(kù)表設(shè)計(jì)的這個(gè)過(guò)程可以映射為在模型驅(qū)動(dòng)中進(jìn)行業(yè)務(wù)對(duì)象模型實(shí)現(xiàn)的過(guò)程,而建立數(shù)據(jù)集的過(guò)程則和模型驅(qū)動(dòng)中的Service Facade頗為相似,只是其Service Facade中的方法比較簡(jiǎn)單,至于DataSet綁定到頁(yè)面這個(gè)過(guò)程其實(shí)和模型驅(qū)動(dòng)中將領(lǐng)域?qū)ο蠡蝻@示對(duì)象和頁(yè)面綁定是相同的概念。
          模型驅(qū)動(dòng)思想才是王道, ,需要的僅僅是架構(gòu)體系中對(duì)于數(shù)據(jù)驅(qū)動(dòng)這種變相的模型驅(qū)動(dòng)也提供一個(gè)良好的支持,其實(shí)我覺(jué)得通過(guò)上面的描述已經(jīng)可以看到要去做出這個(gè)支持是非常簡(jiǎn)單的一件事,抽象形成通用Service Facade以及考慮如何建立DataSet即完成了這個(gè)實(shí)現(xiàn),而且這樣的架構(gòu)對(duì)于模型驅(qū)動(dòng)同樣支持,^_^,何樂(lè)而不為,魚和熊掌均可得之(其實(shí)就只有熊掌,只是一個(gè)可能是肥壯一些的,一個(gè)是瘦弱一些的,^_^)。

          posted on 2005-11-25 21:47 BlueDavy 閱讀(3891) 評(píng)論(5)  編輯  收藏 所屬分類: 系統(tǒng)設(shè)計(jì)

          評(píng)論

          # re: 繼續(xù)侃數(shù)據(jù)驅(qū)動(dòng)和模型驅(qū)動(dòng) 2005-11-28 11:04 corlin

          講的好,其實(shí)模型驅(qū)動(dòng)主要的一點(diǎn)要求是可配置,可擴(kuò)展。需要的模式倒不限定上面幾種。基礎(chǔ)的業(yè)務(wù)模型要很持久,字段/表的擴(kuò)展對(duì)設(shè)計(jì)和開發(fā)人員來(lái)說(shuō)要高效和簡(jiǎn)潔。界面由多個(gè)實(shí)體合成,實(shí)體是配置好的業(yè)務(wù)模型實(shí)例,實(shí)例有一個(gè)父實(shí)例,實(shí)例和實(shí)例之間有關(guān)聯(lián)。
          屏蔽了數(shù)據(jù)層,設(shè)計(jì)和開發(fā)人員只需要關(guān)心業(yè)務(wù)。  回復(fù)  更多評(píng)論   

          # re: 繼續(xù)侃數(shù)據(jù)驅(qū)動(dòng)和模型驅(qū)動(dòng) 2005-12-30 16:45 weide

          最近再次鑿摸關(guān)于模型與建模,又有所得:其實(shí)jerry兄所言兩種“數(shù)據(jù)驅(qū)動(dòng)”和“模型驅(qū)動(dòng)”都是宏觀意義上模型驅(qū)動(dòng)開發(fā)的特例,二者分別對(duì)應(yīng)的模型不同,數(shù)據(jù)模型--領(lǐng)域?qū)ο竽P停?nbsp; 回復(fù)  更多評(píng)論   

          # re: 繼續(xù)侃數(shù)據(jù)驅(qū)動(dòng)和模型驅(qū)動(dòng) 2005-12-30 19:57 Programmer's Life

          恩,^_^,是的,意思就是這個(gè)...
          其實(shí)用某種角度去看,數(shù)據(jù)模型也是領(lǐng)域模型,只是一種退化的而已  回復(fù)  更多評(píng)論   

          # re: 繼續(xù)侃數(shù)據(jù)驅(qū)動(dòng)和模型驅(qū)動(dòng)[未登錄](méi) 2008-06-22 22:31 garfield

          對(duì)與數(shù)據(jù)驅(qū)動(dòng)與模型驅(qū)動(dòng), 我的理解是這兩種方式主要差別在于他們的配置,擴(kuò)展方式的不同。對(duì)于數(shù)據(jù)驅(qū)動(dòng)的配置、擴(kuò)展 主要體現(xiàn)在數(shù)據(jù)庫(kù)表的設(shè)計(jì)上, 模式驅(qū)動(dòng)的配置、擴(kuò)展主要體現(xiàn)在編程語(yǔ)言上的設(shè)計(jì)上。 這兩種設(shè)計(jì)思想實(shí)際上沒(méi)有什么不同, 就是具體實(shí)現(xiàn)上不一樣。這個(gè)主要看設(shè)計(jì)者習(xí)慣用那種方式。  回復(fù)  更多評(píng)論   

          # re: 繼續(xù)侃數(shù)據(jù)驅(qū)動(dòng)和模型驅(qū)動(dòng) 2012-09-02 12:32 www.zrpmw.com

          寫的太有水平了吧!向你學(xué)習(xí)了  回復(fù)  更多評(píng)論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2005年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          統(tǒng)計(jì)

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宝丰县| 青田县| 马尔康县| 晴隆县| 尤溪县| 辰溪县| 张掖市| 清徐县| 勃利县| 张家界市| 盘山县| 余姚市| 永春县| 丰县| 明水县| 德惠市| 陵水| 尖扎县| 尼木县| 赫章县| 织金县| 滨海县| 阿克苏市| 定日县| 林甸县| 刚察县| 龙泉市| 昂仁县| 忻州市| 云龙县| 木兰县| 炉霍县| 涿鹿县| 鄄城县| 清镇市| 西贡区| 南投县| 巴里| 搜索| 三明市| 滨海县|