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