u 使用現(xiàn)成的框架
Ø 首選當(dāng)然是.NET Framework即將正式推出的ObjectSpaces!
Ø 如果希望Total Solution,Borland ECO就是最佳選擇!
Ø 其它
n 開(kāi)源項(xiàng)目推薦使用OPF(國(guó)外)
n 商業(yè)產(chǎn)品推薦使用Grove(國(guó)內(nèi))
u 設(shè)計(jì)自己的持久層
Ø 如果希望自己設(shè)計(jì)輪子,那么,最好的參考資料莫過(guò)于這篇文章:http://www.ambysoft.com/persistenceLayer.pdf
Ø 它山之石,可以攻玉
此處之它山,非J2EE莫屬,經(jīng)典案例Hibernate早已家喻戶曉,您還需要等待嗎?
雖然平臺(tái)不同,但優(yōu)秀的設(shè)計(jì)是大家共同的財(cái)富,.NET guys們快快行動(dòng)起來(lái)吧!
Ø 代碼是永遠(yuǎn)的老師,請(qǐng)多多關(guān)注這兩個(gè).NET Open Source項(xiàng)目:
n OPF
n OJB.NET
l 小結(jié)
u Data Access Layer在整個(gè)系統(tǒng)架構(gòu)中的位置
這是本文最后一幅示意圖,希望帶給您一些幫助:
u DAF Solution之抉擇篇
Ø 確定接口是關(guān)鍵:No. 1!
無(wú)論采用什么技術(shù),這個(gè)總是最最關(guān)鍵的一步:至少,作者是這么認(rèn)為的。
采用了DAF Solution后,其實(shí)已經(jīng)對(duì)具體使用什么Data Access Logic技術(shù)沒(méi)必要特別Care,只要接口確定,連很多歷史遺留問(wèn)題都可輕松解決了!
Ø 訪問(wèn)技術(shù)隨心所欲:Just Do It!
一般做項(xiàng)目前,當(dāng)我們?cè)O(shè)計(jì)Data Access Logic時(shí),大都需要提前決定采用什么技術(shù)架構(gòu),如:Stored Procedure + DataSet / DataTable / DataView(Duwamish模式,結(jié)構(gòu)簡(jiǎn)單,操作方便),或者SQL + Provider Factory + DataReader + Entity(PetShop模式,性能不錯(cuò),可移植能力強(qiáng)),而采用了DAF Solution后,這些不再成為阻礙系統(tǒng)架構(gòu)師進(jìn)行Data Access Logic設(shè)計(jì)時(shí)的障礙了!
你完全可以這么做:設(shè)計(jì)時(shí)全部采用Duwamish模式,而在實(shí)現(xiàn)時(shí)(可能基于性能考慮)將部分Data Access Logic操作調(diào)整為PetShop模式。甚至,如果其它Layer的調(diào)用者對(duì)ADO.NET不是特別熟悉(很正常),也可以決定在某些Data Access Logic的內(nèi)部使用O/R Mapping,通過(guò)Entity Façade返回后可以很輕松地以O(shè)O的方式進(jìn)行后續(xù)處理!
不過(guò),盡管如此,還是有些Issues需要具體情況具體分析:
(1) Stored Procedure在帶來(lái)便利、高性能的同時(shí),也有移植上的問(wèn)題需要考慮;
(2) O/R Mapping在提高易用性的同時(shí),也為性能、復(fù)雜度付出了一定代價(jià);
(3) 何時(shí)采用DataReader,如何更快的訪問(wèn)DataSet,始終是個(gè)難以取舍的問(wèn)題(雖然作者曾經(jīng)對(duì)此作過(guò)斷言),愛(ài)恨兩難!
(4) 是否使用Distributed Process?安全問(wèn)題又如何解決?.NET Remoting沒(méi)有給出很好地解決方案,WebServices雖然有,但能保證與其它系統(tǒng)兼容嗎?
僅舉4例,可見(jiàn)一斑。
雖然這些現(xiàn)實(shí)問(wèn)題都要一一解決,但在DAF這棵大樹(shù)下,您還是有較大的自由度,不必再為統(tǒng)一架構(gòu)設(shè)計(jì)而頻添很多煩惱了!
Ø Storage不在話下:Data Entity Facade!
在這里,作者認(rèn)為,或許稱(chēng)之為“Persistence不在話下”更貼切一些。
可以這么說(shuō),DAL的基石來(lái)自DAF,而DAF和外界的Bridge則是Data Entity Façade。正是其統(tǒng)一的外表才讓我們得以自由應(yīng)付隨時(shí)可能發(fā)生的各種變化!
返回XML?沒(méi)問(wèn)題!
返回XML后不想修改調(diào)用代碼?很簡(jiǎn)單,做個(gè)EntityConvert!
O/R Mapping很酷,讓我返回對(duì)象吧?改一下配置文件,再寫(xiě)個(gè)
O/R Mapping Data Access Logic!是不是也很酷啊?
DataSet令我們的系統(tǒng)不堪重負(fù),客戶最近頻繁投訴:您呼叫的
網(wǎng)頁(yè)暫時(shí)沒(méi)有應(yīng)答,請(qǐng)稍后再刷,咋辦呢?
這也不難:撤下DataSet,換上DataReader,Data Entity
Façade已將不同的數(shù)據(jù)訪問(wèn)基站構(gòu)建到您的Server上,它
會(huì)確保您的系統(tǒng)99.98%位于服務(wù)區(qū)內(nèi)(還有0.01%可能是您
忘打.NET Framework的最新Patch了,剩下的0.01%也很好
辦,快去買(mǎi)條新內(nèi)存or加個(gè)CPU吧)!
……(如您需要返回其它系統(tǒng)無(wú)法辨認(rèn)的東東,請(qǐng)撥打如下免費(fèi)電話:800820xxxx,DAF Solution小組將為您提供幫助……)
u n-Tier架構(gòu)下n之真諦
很簡(jiǎn)單,2句話結(jié)尾:
n==?不重要,關(guān)鍵是:數(shù)據(jù)訪問(wèn)層!
若要架構(gòu)好,接口是命脈!
l 參考
u MSDN
Ø .NET Framework 1.2 Documentation
Ø Longhorn SDK
Ø Data Access and Storage
Ø C# 2.0 Specification
u Design Patterns
Ø GOF 23
Ø Microsoft Patterns & Practices
u Community
Ø The Microsoft .NET Framework Community
Ø TheServerSide.NET
Ø ASP.NET Starter Kits
Ø The Code Project
Ø Dot Net Persistence
u 其它
Ø Developing the Microsoft Business Framework
Ø Borland ECO
Ø Constructor
Ø DotNetNuke
Ø Rational XDE
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!