首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET PetShop 4.0 配置文件屬性管理架構深度解析

     編輯:關於.NET

前言

.NET 2.0 引入 Profile 提供個性化服務。本文深度剖析 PetShop 4.0 中 Profile 屬性管理的工廠模式架構、多提供者實現與配置應用。

核心命名空間架構

PetShop.IProfileDAL          // 接口定義
PetShop.OracleProfileDAL     // Oracle 實現
PetShop.SQLProfileDAL        // SQL Server 實現
PetShop.ProfileDALFactory    // 工廠創建
PetShop.Profile              // 高層封裝,繼承 ProfileProvider

各層詳細實現

1. 接口層:IProfileDAL

定義 IPetShopProfileProvider 十大方法:

  • 賬戶信息:GetAccountInfo、SetAccountInfo
  • 購物車:GetCartItems、SetCartItems
  • 活動日期:UpdateActivityDates
  • 唯一標識:GetUniqueID
  • Profile 生命週期:CreateProfileForUser、GetInactiveProfiles、DeleteProfile、GetProfileInfo

2. 實現層:雙數據庫提供者

  • PetShop.OracleProfileDAL.PetShopProfileProvider:Oracle 實現
  • PetShop.SQLProfileDAL.PetShopProfileProvider:SQL Server 實現
  • 同一接口、不同數據庫訪問邏輯,體現依賴倒置原則

3. 工廠層:ProfileDALFactory

public sealed class DataAccess
{
    public static IPetShopProfileProvider CreatePetShopProfileProvider()
    {
        // 根據 web.config [ProfileDAL] 設置實例化對應提供者
    }
}

典型工廠模式:配置驅動、運行時綁定具體實現。

4. 高層封裝:Profile 命名空間

PetShop.Profile.PetShopProfileProvider 繼承 System.Web.Profile.ProfileProvider,重寫核心方法:

  • 初始化:Initialize
  • 屬性讀寫:GetPropertyValues、SetPropertyValues
  • Profile 管理:DeleteProfiles、DeleteInactiveProfiles、FindProfilesByUserName、GetAllProfiles 等
  • 靜態門面方法:委託工廠創建實例調用 DAL 層

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" ... />
        <add name="AccountInfoProvider" ... />
    </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>

關鍵配置點

  • automaticSaveEnabled="false":手動調用 Profile.Save() 持久化
  • 三大 Provider 分離關注點:購物車、願望清單、賬戶信息
  • allowAnonymous:匿名用戶是否可用(購物車/願望清單允許,賬戶信息需登錄)
  • type:序列化目標類型(BLL.Cart、Model.AddressInfo)

頁面使用示例

// 保存賬戶地址信息
Profile.AccountInfo = AddressForm.Address;
Profile.Save();

// 匿名遷移:Global.asax
void Profile_MigrateAnonymous(object sender, ProfileMigrateEventArgs e)
{
    // 匿名用戶註冊登錄後,原匿名 Profile 數據遷移到新用戶
}

架構優勢總結

結語

PetShop 4.0 Profile 架構展示了企業級應用中個性化服務的最佳實踐:多提供者隔離、工廠解耦、ASP.NET 原生整合、匿名遷移支撐。可作為自定義 Profile 系統的參考藍本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
層次職責設計模式
IProfileDAL契約定義介面隔離
SQL/Oracle DAL具體數據訪問策略模式、依賴倒置
ProfileDALFactory實例創建工廠模式、配置驅動
ProfileASP.NET 整合封裝適配器模式、門面模式