• .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事件,用于匿名用户到注册用户的信息转移,也就是在未登录时的信息,在注册用户登录后不会丢失。

  • 相关阅读:
    Istio Ambient Mesh七层服务治理图文详解
    云数据库时代,DBA将走向何方?
    云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效
    ModelBox姿态匹配:抖抖手动动脚勤做深呼吸
    持续优化,欣欣向云 | RocketMQ Operator 0.3.0 正式发布
    Nacos 多语言体系再添新员:首个 Rust 语言版本正式发布!
    实战指南 | Serverless 架构下的应用开发
    大数据生态中的 RocketMQ 5.0
    Ubuntu不同于CentOS的命令
    orchestrator/raft一致性集群
  • 原文地址:https://www.cnblogs.com/zhangzheny/p/1031461.html
Copyright © 2020-2023  润新知