1.項目概述與架構分析
微軟剛推出了基於ASP.NET 2.0下的Pet Shop 4, 該版本有了一個全新的用戶界面。是研究ASP.NET 2.0的好範例啊,大家都知道,一直以來,在.NET和Java之間爭論不休,到底使用哪個平台開發的企業級應用性能最好、結構最優、生產力最高。為了用事實說話,通過對項目各方面的性能評估進而在比較.NET和Java的高下。用戶做比較的這個項目就是Petshop。正因為Petshop肩負著上面所說的重任,各方面必須是最優的,架構設計應該是經過慎重考慮的。所以其一經推出,便成為了開發者、架構師等人學習、研究的典範。
日前微軟推出了基於.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
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更全面複雜。
序號 | 項目名稱 | 描述 |
1 | BLL | 業務邏輯層 |
2 | CacheDependencyFactory | 緩存依賴類的工廠類 |
3 | WEB | 表示層 |
4 | DALFactory | 數據層的抽像工廠 |
5 | DBUtility | 數據訪問類組件 |
6 | IBLLStrategy | 同步/異步策略接口 |
7 | ICacheDependency | 緩存依賴類接口 |
8 | IDAL | 數據訪問層接口定義 |
9 | IMessaging | 異時處理消息隊列接口定義 |
10 | IProfileDAL | Profile的數據訪問層接口定義 |
11 | Membership | Membership認證和授權管理 |
12 | MessagingFactory | 異時處理消息隊列的抽像工廠 |
13 | Model | 業務實體 |
14 | MSMQMessaging | 異時處理消息隊列的實現 |
15 | OracleDAL | Oracle數據訪問層 |
16 | OracleProfileDAL | Oracle的Profile Providers 做用戶狀態管理,包括購物車等 |
17 | OrderProcessor | 後台處理進程,處理訂單隊列 |
18 | Profile | Profile的數據訪問層 |
19 | ProfileDALFactory | ProfileDAL的工廠類(反射創建ProfileDAL) |
20 | SQLProfileDAL | SQL Server 的Profile Providers 做用戶狀態管理,包括購物車等 |
21 | SQLServerDAL | SQLServer數據訪問層 |
22 | TableCacheDependency | 緩存依賴實現類 |
項目分解:
由於整體已經有22個項目,所以,對於初學者一看就暈了,所以,我做了分解,可以大體上分幾塊去理解。
序號 | 項目名稱 | 描述 |
1 | WEB | 表示層 |
2 | Model | 業務實體 |
3 | BLL | 業務邏輯層 |
4 | DALFactory | 數據層的抽像工廠 |
5 | IDAL | 數據訪問層接口定義 |
6 | SQLServerDAL | SQLServer數據訪問層 |
7 | OracleDAL | Oracle數據訪問層 |
8 | DBUtility | 數據庫訪問組件基礎類 |
9 | CacheDependencyFactory | 緩存依賴類的工廠類 |
10 | ICacheDependency | 緩存依賴類接口 |
11 | TableCacheDependency | 緩存依賴實現類 |
12 | IBLLStrategy | 同步/異步處理策略接口(實現在bll根據配置反射選擇) |
13 | MessagingFactory | 異時處理消息隊列的抽像工廠 |
14 | IMessaging | 異時處理消息隊列接口定義 |
15 | MSMQMessaging | 異時處理消息隊列的實現 |
16 | Profile | Profile的數據訪問層 |
17 | ProfileDALFactory | ProfileDAL的工廠類(反射創建ProfileDAL) |
18 | IProfileDAL | Profile的數據訪問層接口定義 |
19 | OracleProfileDAL | Oracle的Profile Providers 做用戶狀態管理 |
20 | SQLProfileDAL | SQL Server 的Profile Providers 做用戶狀態管理 |
21 | Membership | Membership認證和授權管理 |
22 | OrderProcessor | 後台處理進程,處理訂單隊列 |
3.Petshop 4中的設計模式:
工廠模式:
首當其衝的就是工廠模式,很容易就可以看出來,也是應用最多的。
DALFactory:數據訪問層的抽像工廠(決定創建哪種數據庫類型的數據訪問層。可以選擇:SQLServer,Oracle)
CacheDependencyFactory:緩存依賴類的工廠類。(創建具體表的緩存依賴)
MessagingFactory :異時處理消息隊列的抽像工廠(反射創建具體的異時處理類)
ProfileDALFactory:ProfileDAL的工廠類(反射選擇創建Oracle 和SQL Server的 ProfileDAL)
策略模式: IorderStrategy
中介模式
CategoryDataProxy ItemDataProxy ProductDataProxy
暫時只看了這麼多,以後有時間繼續分解,如果你有不同的見解或經驗,也請寫下來,好讓大家來共同學習,共同探討,共同進步。
(作者:李天平 轉載請註明)
具體介紹可以參看MSDN:
.NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp
下載:
留言列表