天天看點

Microsoft .NET Pet Shop 4 架構與技術分析

<b>1</b><b>.項目概述與架構分析</b>

微軟剛推出了基于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&lt;ProductInfo&gt; GetProductsByCategory(string category)

        {

            // Return new if the string is empty

            if (string.IsNullOrEmpty(category))

                return new List&lt;ProductInfo&gt;();

            // 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.使用了消息隊列來實作異時訂單處理。

<b> </b>

<b>2.</b><b>整體架構:</b>

資料庫:(暫略)

項目清單:從整體可以看出,Pet Shop 4的項目體系已經很龐大,考慮的方面也較3.0更全面複雜。

<b>序号</b>

<b>項目名稱</b>

<b>描述</b>

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

緩存依賴實作類

<b>項目分解</b>:

由于整體已經有22個項目,是以,對于初學者一看就暈了,是以,我做了分解,可以大體上分幾塊去了解。

資料庫通路元件基礎類

同步/異步處理政策接口(實作在bll根據配置反射選擇)

做使用者狀态管理

<b>3</b><b>.Petshop 4中的設計模式</b>:

<b>工廠模式</b>:

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

DALFactory:資料通路層的抽象工廠(決定建立哪種資料庫類型的資料通路層。可以選擇:SQLServer,Oracle)

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

MessagingFactory :異時處理消息隊列的抽象工廠(反射建立具體的異時處理類)

ProfileDALFactory:ProfileDAL的工廠類(反射選擇建立Oracle 和SQL Server的 ProfileDAL)

<b>政策模式: </b><b>IorderStrategy</b>

<b>中介模式</b>

CategoryDataProxy ItemDataProxy  ProductDataProxy

暫時隻看了這麼多,以後有時間繼續分解,如果你有不同的見解或經驗,也請寫下來,好讓大家來共同學習,共同探讨,共同進步。

具體介紹可以參看MSDN:

.NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0

<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp">[url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp[/url]</a>

本文轉自 litp 51CTO部落格,原文連結:http://blog.51cto.com/litianping/123836,如需轉載請自行聯系原作者