读 PetShop代码(Profile篇)

 

用于存储与用户有关的数据,维护应用程序状态。Profile对象提供一个创建强类型和持久化方式的会话状态的方法。

以Profile.ShoppingCart.Add();

   Profile.Save();

   的执行流程为例

首先配置文件部分代码如下:


<profile automaticSaveEnabled="false" defaultProvider="ShoppingCartProvider">
      
<providers>
        
<add name="ShoppingCartProvider" connectionStringName="SQLProfileConn" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/>
      
</providers>
      
<properties>
        
<add name="ShoppingCart" type="PetShop.BLL.Cart" allowAnonymous="true" provider="ShoppingCartProvider"/>
      
</properties>
</profile>

根据配置文件,属性也即需要存储的类型为PetShop.BLL.Cart,自定义用户配置提供程序为ShoppingCartProvider,用于存储PetShop.BLL.Cart类中的相关信息。由于ShoppingCartProvider为自定义用户配置提供程序,需要继承自System.Web.Profile.ProfileProvider,重写父类中的一些方法,如Initialize(),GetPropertyValues(),SetPropertyValues()等等。

启动Web应用程序,ASP.NET会根据配置文件中的相关配置创建一个ProfileCommon类的实例,该类继承自System.Web.Profile.ProfileBase类。根据ProfileCommon类的部分代码


public virtual PetShop.BLL.Cart ShoppingCart {
        
get {
            
return ((PetShop.BLL.Cart)(this.GetPropertyValue("ShoppingCart")));
        }
        
set {
            
this.SetPropertyValue("ShoppingCart", value);
        }
}

 

先调用重写的Initialize()方法,用来设置提供者实例的选项与初始值。然后根据(this.GetProertyValue("ShoppingCart")),调用GetPropertyValues方法,用来获取相关属性类型PetShop.BLL.Cart中的有关信息(存储在数据库中)后,进行强类型转换(PetShop.BLL.Cart)(this.GetProertyValue("ShoppingCart")),然后调用Cart.Add()方法。

调用Profile.Save()方法后,程序调用ShoppingCartProvider中重写的方法SetPropertyValue()来完成PetShop.BLL.Cart中相关信息的保存。

转至:http://www.cnblogs.com/sunny0311/archive/2008/09/22/1296241.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关键是系统架构和代码学习两方面,对初学和提高有很大帮助 petshop5.0比较大,代码已经解压出来 4.0和3.0没有解压出来,自行安装解压(需要SqlServer数据做连接或者在安装到数据库连接时直接拷贝出来) petshop5.0 基于.NET Framework 3.5 ------------ 使用LINQ to SQL改进数据访问层 PetShop.Model.DataContext.MSPetShop4DataContext 继承System.Data.Linq.DataContext PetShop.Model.ProductInfo与PetShop.Model.CategoryInfo实体类分别映射数据库PetShop.Model.ProductInfo其中的Category属性存在一对一的关系 PetShop.Model.CategoryInfo中的Products属性存在一对多的关系 使用WCF来提供RSS, web/FeedService.svc目录下 PetShop.SyndicationFeeds 并在UI层上做一些改进,如使用ASP.NET AJAX,ListView控件等。 在PetShop 5.0中引入了异步处理机制。 插入订单的策略可以分为同步和异步,两者的插入策略明显不同,但对于调用者而言,插入订单的接口是完全一样的,所以PetShop 5.0中设计了IBLLStrategy模块。 虽然在IBLLStrategy模块中,仅仅是简单的IOrderStategy,但同时也给出了一个范例和信息,那就是在业务逻辑的处理中,如果存在业务操作的多样化,或者是今后可能的变化,均应利用抽象的原理。或者使用接口,或者使用抽象类,从而脱离对具体业务的依赖。 不过在PetShop中,由于业务逻辑相对简单,这种思想体现得不够明显。 也正因为此,PetShop将核心的业务逻辑都放到了一个模块BLL中,并没有将具体的实现和抽象严格的按照模块分开。所以表示层和业务逻辑层之间的调用关系,其耦合度相对较高: PetShop4.0源代码 .NET Pet Shop4 应用程序的设计说明了构建企业 n 层 .NET 2.0 应用程序的最佳做法,这种应用程序可能需要支持各种数据库平台和部署方案。 .NET Pet Shop 4 项目的目标是: 工作效率:减少了 .NET Pet Shop 3 的代码数量 - 我们减少了近 25% 的代码。 利用 ASP.NET 2.0 的新功能 - 我们利用母版页、成员身份和配置文件,并设计出一个新的、吸引人的用户界面。 企业体系结构:构建一个灵活的最佳做法应用程序 - 我们实现了设计模式,以及表示层、业务层和数据层的分离。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值