.Net PetShop 4.0的配置文件屬性管理

.NET 2.0中,提供了ASP.NET成員資格管理、ASP.NET角色管理以及ASP.NET配置文件屬性等功能。在本文中,重點探討.Net PetShop 4.0配置文件屬性管理的設計與實現。

配置文件屬性用於給用戶提供個性化的服務。在.Net PetShop 4.0中,與配置文件屬性直接相同的命名空間如下:

PetShop.IProfileDAL
PetShop.OracleProfileDAL
PetShop.SQLProfileDAL
PetShop.ProfileDALFactory
PetShop.Profile

從它們的命名空間就可以看出,配置文件屬性管理也使用了工廠模式。下面具體看一下各個命名空間的內容:

一、PetShop.IProfileDAL命名空間

PetShop.IProfileDAL命名空間提供了一個接口IPetShopProfileProvider,該接口定義了十個方法,分別爲:

GetAccountInfo
SetAccountInfo
GetCartItems
SetCartItems
UpdateActivityDates
GetUniqueID
CreateProfileForUser
GetInactiveProfiles
DeleteProfile
GetProfileInfo

這些方法有些是對購物車的處理,有些是對賬戶附屬信息的處理,有些是對配置文件的處理。

二、PetShop.OracleProfileDAL和PetShop.SQLProfileDAL命名空間

這兩個命名空間各自包含了一個PetShopProfileProvider類,該類是對接口IPetShopProfileProvider的實現。當然,由命名空間的名字也可以看出,PetShop.OracleProfileDAL是連接Oracle數據庫的,PetShop.SQLProfileDAL是連接SQL Server數據庫的。

三、PetShop.ProfileDALFactory命名空間

PetShop.ProfileDALFactory提供了一個自封裝的類DataAccess,該類只有一個方法CreatePetShopProfileProvider,根據web.config中的ProfileDAL設置,產生出符合IPetShopProfileProvider接口的PetShopProfileProvider類實例。當然,這正是典型的工廠模式。

四、PetShop.Profile命名空間

PetShop.Profile命名空間中提供了一人自封裝的類PetShopProfileProvider,該類繼承了.Net框架ProfileProvider類,重寫了Initialize、SettingsPropertyValueCollection、SetPropertyValues、DeleteProfiles、DeleteProfiles、DeleteInactiveProfiles、FindProfilesByUserName、FindInactiveProfilesByUserName、GetAllProfiles、GetAllInactiveProfiles和GetNumberOfInactiveProfiles方法,創建了一些靜態方法。創建的靜態方法通過PetShop.ProfileDALFactory.DataAccess類實現對PetShopProfileProvider中方法的調用。

五、使用配置文件屬性

在使用配置文件屬性時,首先要在web.config文件中添加配置文件屬性的配置段。.Net PetShop 4.0的web.config文件中與配置文件屬性相關的配置如下:

<profile automaticSaveEnabled="false" defaultProvider="ShoppingCartProvider">
  
<providers>
    
<add name="ShoppingCartProvider" connectionStringName="SQLProfileConnString" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/>
    
<add name="WishListProvider" connectionStringName="SQLProfileConnString" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/>
    
<add name="AccountInfoProvider" connectionStringName="SQLProfileConnString" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/>
  
</providers>
  
<properties>
    
<add name="ShoppingCart" type="PetShop.BLL.Cart" allowAnonymous="true" provider="ShoppingCartProvider"/>
    
<add name="WishList" type="PetShop.BLL.Cart" allowAnonymous="true" provider="WishListProvider"/>
    
<add name="AccountInfo" type="PetShop.Model.AddressInfo" allowAnonymous="false" provider="AccountInfoProvider"/>
  
</properties>
</profile>

配置完後,就可以在ASP.NET Web頁面中通過如下方式使用:

Profile.AccountInfo = AddressForm.Address;
Profile.Save();

在上面添加的配置文件屬性中ShoppingCart和WishList分別表示購物車和缺貨登記,它們的類型都是業務邏輯層的Cart類,AccountInfo表示賬戶信息,但由於用戶名密碼的管理是由.Net成員資格管理中實現的,其它的屬性都是地址類信息,它在類型是PetShop.Model.AddressInfo。

另外,在Global.asax中的Profile_MigrateAnonymous事件,用於匿名用戶到註冊用戶的信息轉移,也就是在未登錄時的信息,在註冊用戶登錄後不會丟失。

注:引自 http://blog.csdn.net/fengfangfang/archive/2006/09/07/1189061.aspx 

發佈了17 篇原創文章 · 獲贊 0 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章