`
wangyihust
  • 浏览: 439498 次
文章分类
社区版块
存档分类
最新评论

浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)

阅读更多

    对于Microsoft .net PetShop程序中的购物车和订单处理模块,文中主要分析两种技术的应用:

1. Profile技术在PetShop程序中用于三处:

    1) 购物车ShoppingCart    -下面的例子围绕购物车流程进行

    2) 收藏WishList

    3)  用户信息AccountInfo

  注册新用户 NewUser.aspx :使用的是CreateUserWizard 控件,基于MemberShip机制,在数据库MSPetShop4Services的表aspnet_Users中创建用户<o:p></o:p>

  修改用户注册信息 UserProfile.aspx: 基于Profile技术,在数据库MSPetShop4Profile的表Profiles和Account中创建用户信息

2. 异步消息处理技术运用于订单处理

4.1 Web.config配置

Profile可以利用数据库存储关于用户的个性化信息,有点象session对象,但session对象是有生存期的,在生存期后,session对象自动失效了。而profile不同,除非显式移除它。要实现profile功能,必须先在web.config中进行定义。<o:p></o:p>

web.congfig中,将会定义一些属性/值,分别存贮将要保存的变量和值,比如language属性,定义其值是string类型,如此类推。而<group>标签,则是将一些相同或类似功能的变量值放在一起。<o:p></o:p>

程序中使用方法:Profile.language = ddlLanguage.SelectedItem.Value;<o:p></o:p>

 <o:p></o:p>

<profile automaticSaveEnabled="false" defaultProvider="ShoppingCartProvider"><o:p></o:p>

              <providers><o:p></o:p>

                   <add name="ShoppingCartProvider" connectionStringName="SQLProfileConnString" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/><o:p></o:p>

                   <add name="WishListProvider" connectionStringName="SQLProfileConnString" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/><o:p></o:p>

                   <add name="AccountInfoProvider" connectionStringName="SQLProfileConnString" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/><o:p></o:p>

              </providers><o:p></o:p>

              <properties><o:p></o:p>

                   <add name="ShoppingCart" type="PetShop.BLL.Cart" allowAnonymous="true" provider="ShoppingCartProvider"/><o:p></o:p>

                   <add name="WishList" type="PetShop.BLL.Cart" allowAnonymous="true" provider="WishListProvider"/><o:p></o:p>

                   <add name="AccountInfo" type="PetShop.Model.AddressInfo" allowAnonymous="false" provider="AccountInfoProvider"/><o:p></o:p>

              </properties><o:p></o:p>

         </profile><o:p></o:p>

4.2 购物车程序流程-Profile技术<o:p></o:p>

1.       点击“加入购物车”: http://localhost:2327/Web/ShoppingCart.aspx?addItem=EST-34

2.     ShoppingCart.aspx文件处理:在init方法之前处理<o:p></o:p>

      protected void Page_PreInit(object sender, EventArgs e) {<o:p></o:p>

        if (!IsPostBack) {<o:p></o:p>

            string itemId = Request.QueryString["addItem"];<o:p></o:p>

            if (!string.IsNullOrEmpty(itemId)) {<o:p></o:p>

                Profile.ShoppingCart.Add(itemId); //注意ShoppingCart的类型是PetShop.BLL.Cart<o:p></o:p>

                //Save 方法将修改后的配置文件属性值写入到数据源,如ShoppingCart属性已经改变<o:p></o:p>

                Profile.Save();    <o:p></o:p>

          <o:p></o:p>

                // Redirect to prevent duplictations in the cart if user hits "Refresh"<o:p></o:p>

                //防止刷新造成 多次提交<o:p></o:p>

                Response.Redirect("~/ShoppingCart.aspx", true);  //将客户端重定向到新的 URL。指定新的 URL 并指定当前页的执行是否应终止。<o:p></o:p>

            }<o:p></o:p>

        }<o:p></o:p>

3.     PetShop.BLL.Cart类<o:p></o:p>

// Dictionary: key/value  <o:p></o:p>

private Dictionary<string, CartItemInfo> cartItems = new Dictionary<string, CartItemInfo>();<o:p></o:p>

 <o:p></o:p>

/// <summary><o:p></o:p>

        /// Add an item to the cart.<o:p></o:p>

        /// When ItemId to be added has already existed, this method will update the quantity instead.<o:p></o:p>

        /// </summary><o:p></o:p>

        /// <param name="itemId">Item Id of item to add</param><o:p></o:p>

        public void Add(string itemId) {<o:p></o:p>

CartItemInfo cartItem;<o:p></o:p>

//获取与指定的键相关联的值TryGetValue(TKey key,out TValue value)<o:p></o:p>

            if (!cartItems.TryGetValue(itemId, out cartItem)) {<o:p></o:p>

                Item item = new Item();<o:p></o:p>

                ItemInfo data = item.GetItem(itemId);<o:p></o:p>

                if (data != null) {<o:p></o:p>

                    CartItemInfo newItem = new CartItemInfo(itemId, data.ProductName, 1, (decimal)data.Price, data.Name, data.CategoryId, data.ProductId);<o:p></o:p>

                    cartItems.Add(itemId, newItem);<o:p></o:p>

                }<o:p></o:p>

            }<o:p></o:p>

            else<o:p></o:p>

                cartItem.Quantity++;<o:p></o:p>

        }<o:p></o:p>

 <o:p></o:p>

4.     更新Profile<o:p></o:p>

//Save 方法将修改后的配置文件属性值写入到数据源,如ShoppingCart属性已经改变<o:p></o:p>

                Profile.Save();  <o:p></o:p>

如何更新:<o:p></o:p>

    根据配置中的ShoppingCartProvider类型 PetShop.Profile.PetShopProfileProvider。<o:p></o:p>

 <o:p></o:p>

ASP.NET 配置文件提供对用户特定属性的持久性存储和检索。配置文件属性值和信息按照由 ProfileProvider 实现确定的方式存储在数据源中。

每个用户配置文件在数据库的 Profiles 表中进行唯一标识。该表包含配置文件信息,如应用程序名称和上次活动日期。

CREATE TABLE Profiles<o:p></o:p>
(<o:p></o:p>
  UniqueID AutoIncrement NOT NULL PRIMARY KEY,<o:p></o:p>
  Username Text (255) NOT NULL,<o:p></o:p>
  ApplicationName Text (255) NOT NULL,<o:p></o:p>
  IsAnonymous YesNo, <o:p></o:p>
  LastActivityDate DateTime,<o:p></o:p>
  LastUpdatedDate DateTime,<o:p></o:p>
  CONSTRAINT PKProfiles UNIQUE (Username, ApplicationName)<o:p></o:p>
)<o:p></o:p>

 <o:p></o:p>

5.     PetShop.Profile. PetShopProfileProvider类, 继承自ProfileProvider<o:p></o:p>

// 创建 PetShop.SQLProfileDAL.PetShopProfileProvider类-数据库操作<o:p></o:p>

         private static readonly IPetShopProfileProvider dal <o:p></o:p>

= DataAccess.CreatePetShopProfileProvider();<o:p></o:p>

 <o:p></o:p>

/// <summary><o:p></o:p>

        /// 设置指定的属性设置组的值<o:p></o:p>

        /// </summary><o:p></o:p>

         public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) {<o:p></o:p>

              string username = (string)context["UserName"];<o:p></o:p>

              CheckUserName(username);                         <o:p></o:p>

              bool isAuthenticated = (bool)context["IsAuthenticated"];<o:p></o:p>

 <o:p></o:p>

              int uniqueID = dal.GetUniqueID(username, isAuthenticated, false, ApplicationName);<o:p></o:p>

              if(uniqueID == 0)<o:p></o:p>

                   uniqueID = dal.CreateProfileForUser(username, isAuthenticated, ApplicationName);<o:p></o:p>

 <o:p></o:p>

              foreach(SettingsPropertyValue pv in collection) {<o:p></o:p>

                   if(pv.PropertyValue != null) {<o:p></o:p>

                       switch(pv.Property.Name) {<o:p></o:p>

                            case PROFILE_SHOPPINGCART:   //ShoppingCart<o:p></o:p>

                                 SetCartItems(uniqueID, (Cart)pv.PropertyValue, true);<o:p></o:p>

                                 break;<o:p></o:p>

                            case PROFILE_WISHLIST:<o:p></o:p>

                                 SetCartItems(uniqueID, (Cart)pv.PropertyValue, false);<o:p></o:p>

                                 break;<o:p></o:p>

                            case PROFILE_ACCOUNT:<o:p></o:p>

                                 if(isAuthenticated)<o:p></o:p>

分享到:
评论

相关推荐

    .net petshop非常详细的说明解释

    PetShop还涉及性能优化,如缓存策略的实施、数据库查询的优化等,以提升系统的响应速度和处理能力。 总结,.NET PetShop是一个涵盖广泛.NET技术的实战项目,对于学习和理解.NET开发具有极高的参考价值。通过研究...

    asp.net PetShop系统演示(源码)

    ASP.NET PetShop是一个经典的示例应用,用于演示和学习ASP.NET技术,特别是对于那些想深入理解微软.NET框架下的Web应用程序开发的开发者和架构师。这个系统以一个宠物商店的业务流程为背景,提供了完整的源码,让...

    .Net petshop 4.0+文档

    .Net PetShop 4.0 是微软推出的一个开源示例项目,旨在演示如何利用 .NET Framework 构建一个完整的、分层的企业级应用程序。这个项目对于初学者,尤其是那些在IT行业中刚刚起步的“菜鸟”来说,是一个极好的学习...

    .NET PetShop购物程序

    .NET PetShop是一个经典的开源项目,它是一个基于ASP.NET技术构建的在线宠物商店示例应用,旨在展示.NET Framework和Microsoft ASP.NET平台的开发能力。这个项目为开发者提供了学习和理解Web应用程序设计、开发以及...

    Microsoft .NET PetShop4.0 详解[重新整理,清晰图]

    PetShop是一个由微软创建的示例应用程序,旨在展示使用.NET框架开发企业级系统的潜力。该应用经常被用来对比.NET与J2EE平台的性能,尽管这种比较往往带有商业竞争的色彩。PetShop的最新版本,即PetShop4.0,基于.NET...

    asp.net 经典 petshop4.0+5.0

    ASP.NET PetShop 4.0 和 5.0 是微软为开发者提供的两个经典示例项目,旨在演示如何在 .NET 平台上构建企业级 web 应用程序。这两个版本分别基于 .NET Framework 2.0 和 3.5,展示了 ASP.NET 技术在不同版本中的应用...

    .Net Petshop4.0及相关资料

    在PetShop3_0文件中,可能是早期版本的源代码或相关资料,你可以对比研究不同版本之间的改进和优化,这将有助于你理解软件演进的过程和.NET技术的发展。 总的来说,.Net PetShop4.0项目是.NET开发者学习三层架构、...

    asp.net petshop 4.0

    ASP.NET Pet Shop 4.0 是一个经典的开源项目,它为开发者提供了一个全面的示例,展示了如何使用ASP.NET技术和Microsoft .NET Framework构建一个完整的网上商店应用。这个项目旨在教育和帮助开发人员学习如何在实际...

    asp.net 经典petshop (代码+ppt)

    PetShop是一款基于ASP.NET技术的经典示例应用,它在.NET Framework 2.0的环境下运行,是学习和理解ASP.NET开发模式、设计原则和最佳实践的理想案例。这个项目以其清晰的架构、模块化的代码和实际的业务场景,吸引了...

    PetShop微软官方.NET示例程序

    《PetShop:微软官方.NET示例程序深度解析》 PetShop是微软官方发布的一个.NET示例程序,旨在为开发者提供一个全面了解.NET框架及其开发工具的实战案例。这个项目不仅包含了一个完整的应用程序,还整合了数据库,...

    PetShop 4.0 官方详解

    .NET PetShop 4.0 还包含了新的功能,如自定义的ASP.NET 2.0 配置文件提供程序和通过MSMQ(Microsoft Message Queuing)进行的异步订单处理,这些都是提高系统性能和可靠性的重要组成部分。 #### 从 ASP.NET 1.1 ...

    .net petshop

    ### .NET PetShop项目中的Membership模块详解 #### 一、Membership模块概述 .NET PetShop项目中的**Membership**模块是.NET框架中的一个重要组成部分,主要用于管理应用程序中的用户账户信息,包括用户的注册、...

    PetShop for .NET3.5

    通过研究PetShop for .NET 3.5,开发者可以深入理解如何利用.NET Framework 3.5和Visual Studio 2008构建一个完整的企业级应用,涉及的技术包括但不限于ASP.NET MVC、ADO.NET、XML Web Services、缓存管理、事务处理...

    [源代码] .NET Pet Shop 4.0 (精校代码)

    ☆ 程序说明:☆ The .NET Pet Shop application is designed to show the best practices for building enterprise, n-tier .NET 2.0 applications that may need to support a variety of database platforms and...

    ASP.NET开发实例PetShop源代码+数据库

    ASP.NET是一种由微软开发的用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的功能和工具,简化了Web应用的开发过程。在"PetShop"这个实例中,我们将会探讨ASP.NET的核心特性和在实际开发中的...

    PetShop 4.0 (宠物商店C#版)

    在这里,我们可以看到如何使用ASP.NET控件(如GridView、FormView等)来显示和交互数据,以及如何使用HTTP模块和处理程序来扩展应用程序的功能。同时,PetShop 4.0也展示了状态管理、页面生命周期、自定义控件和用户...

    .net PetShop购物程序V1.5.2

    这是一套asp.net的网络购物系统,系统来源于国外,系统的运行需要.net支持环境,系统具备的功能很是强大。相当不错。解压密码:pengyouyi

    PetShop4.0源码 详细的解析资料 两种同步和基于MSMQ的异步处理 缓存处理策略 Master Pages Wizard Control

    微软提供PetShop4.0,最佳的ASP.NET学习资料。...4.对于订单的处理提供了两种同步和基于MSMQ的异步处理。 5.使用了ASP.NET2.0中的Master Pages,Wizard Control等 6.使用SqlCacheDependency缓存处理策略

Global site tag (gtag.js) - Google Analytics