close

1.項目概述與架構分析
微軟剛推出了基於ASP.NET 2.0下的Pet Shop 4, 該版本有了一個全新的用戶界面。是研究ASP.NET 2.0的好範例啊,大家都知道,一直以來,在.NETJava之間爭論不休,到底使用哪個平台開發的企業級應用性能最好、結構最優、生產力最高。為了用事實說話,通過對項目各方面的性能評估進而在比較.NETJava的高下。用戶做比較的這個項目就是Petshop。正因為Petshop肩負著上面所說的重任,各方面必須是最優的,架構設計應該是經過慎重考慮的。所以其一經推出,便成為了開發者、架構師等人學習、研究的典範。

 

日前微軟推出了基於.NET Framework 2.0開發的Petshop 4。新的Petshop4實現了與Petshop 3相同甚至更多的特性,由於採用了Master PagesMembership,以及ProfileSqlCacheDependency,但是代碼量卻減少了四分之一。同時,在事務、數據緩存、安全方面使用了.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 10gCustom  ASP.NET 2.0 Membership Provider

 

5.利用ASP.NET 2.0Custom 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

 

OracleProfile 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

 

OracleProfile Providers

 

做用戶狀態管理

 

20

 

SQLProfileDAL

 

SQL Server Profile Providers

 

做用戶狀態管理

 

21

 

Membership

 

Membership認證和授權管理

 

22

 

OrderProcessor

 

後台處理進程,處理訂單隊列

 

 

 

 

3Petshop 4中的設計模式

 

工廠模式:

 

首當其衝的就是工廠模式,很容易就可以看出來,也是應用最多的。

 

DALFactory:數據訪問層的抽像工廠(決定創建哪種數據庫類型的數據訪問層。可以選擇:SQLServerOracle

 

CacheDependencyFactory緩存依賴類的工廠類。(創建具體表的緩存依賴)

 

MessagingFactory 異時處理消息隊列的抽像工廠(反射創建具體的異時處理類

 

ProfileDALFactoryProfileDAL的工廠類(反射選擇創建Oracle SQL ServerProfileDAL)

 

 

策略模式: 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

 

 

下載

 

http://download.microsoft.com/download/8/0/1/801ff297-aea6-46b9-8e11-810df5df1032/Microsoft%20.NET%20Pet%20Shop%204.0.msi

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 11 的頭像
    11

    冠霖的部落格

    11 發表在 痞客邦 留言(0) 人氣()