以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.brpp.cn/bbs/index.asp) -- Microsoft.NET Framework (http://www.brpp.cn/bbs/list.asp?boardid=78) ---- Microsoft.NET PetShop4架構(gòu)與技術(shù)分析 (http://www.brpp.cn/bbs/dispbbs.asp?boardid=78&id=2645) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-12-15 11:21:46 -- Microsoft.NET PetShop4架構(gòu)與技術(shù)分析 1.項(xiàng)目概述與架構(gòu)分析 日前微軟推出了基于.NET Framework 2.0開(kāi)發(fā)的Petshop 4。新的Petshop4實(shí)現(xiàn)了與Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代碼量卻減少了四分之一。同時(shí),在事務(wù)、數(shù)據(jù)緩存、安全方面使用了.NET 2.0附帶的特性,構(gòu)建了一個(gè)靈活的最佳實(shí)踐的應(yīng)用程序。 他們利用了Project Conversion Wizard把項(xiàng)目從ASP.NET 1.1移植到了ASP.NET 2.0,然后做了以下改動(dòng): 1.用System.Transactions代替了原來(lái)的Serviced Components提供的事務(wù)功能 代碼實(shí)現(xiàn):PetShop.BLL.OrderSynchronous 的 public void Insert(PetShop.Model.OrderInfo order)。 2.用強(qiáng)類(lèi)型的范型集合代替了原來(lái)的弱類(lèi)型集合 public IList<ProductInfo> GetProductsByCategory(string category) { // Return new if the string is empty if (string.IsNullOrEmpty(category)) return new List<ProductInfo>();
// Run a search against the data store return dal.GetProductsByCategory(category); } 3.采用ASP.NET 2.0 Membership來(lái)做認(rèn)證和授權(quán) 4.創(chuàng)建了針對(duì)Oracle 10g的Custom ASP.NET 2.0 Membership Provider 5.利用ASP.NET 2.0的Custom Oracle 和 SQL Server Profile Providers 做用戶狀態(tài)管理,包括購(gòu)物車(chē)等 6.采用了Master Pages,取代了原來(lái)的用戶控件,來(lái)實(shí)現(xiàn)統(tǒng)一的界面效果 7.使用了ASP.NET 2.0 Wizard控件實(shí)現(xiàn)check-out 8.使用了SqlCacheDependency來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)層次的緩存更新(cache invalidation)功能 9.使用了消息隊(duì)列來(lái)實(shí)現(xiàn)異時(shí)訂單處理。
2.整體架構(gòu):
項(xiàng)目列表:從整體可以看出,Pet Shop 4的項(xiàng)目體系已經(jīng)很龐大,考慮的方面也較3.0更全面復(fù)雜。
項(xiàng)目分解: 由于整體已經(jīng)有22個(gè)項(xiàng)目,所以,對(duì)于初學(xué)者一看就暈了,所以,我做了分解,可以大體上分幾塊去理解。
3.Petshop 4中的設(shè)計(jì)模式: 工廠模式: 首當(dāng)其沖的就是工廠模式,很容易就可以看出來(lái),也是應(yīng)用最多的。 DALFactory:數(shù)據(jù)訪問(wèn)層的抽象工廠(決定創(chuàng)建哪種數(shù)據(jù)庫(kù)類(lèi)型的數(shù)據(jù)訪問(wèn)層。可以選擇:SQLServer,Oracle) CacheDependencyFactory:緩存依賴類(lèi)的工廠類(lèi)。(創(chuàng)建具體表的緩存依賴) MessagingFactory :異時(shí)處理消息隊(duì)列的抽象工廠(反射創(chuàng)建具體的異時(shí)處理類(lèi)) ProfileDALFactory:ProfileDAL的工廠類(lèi)(反射選擇創(chuàng)建Oracle 和SQL Server的 ProfileDAL) |