使用Profile和Provider技术实现 -- 购物车
2010-02-25 12:08
309 查看
一、ASP.NET的Profile属性
1.提供对配置文件(Web.config)属性值和信息的非类型化访问
2.Web应用程序运行时,ASP.NET创建一个从ProfileBase类动态继承下来的动态生成出来的ProfileCommon类。动态ProfileCommon类包含了你在Web应用程序配置文件中指定的Profile属性所拥有的字段。一个动态ProfileCommon类的实例被设置成了当前HttpContext的Profile属性,并可以在应用程序的各个页面中使用。
二、Profile作用
1.存储和使用唯一与用户对应的信息
2.展现个人化版本的Web应用程序
3.用户的唯一身份标识在再次访问时识别用户
=========常用的Web保存数据的方式=========
1.Session
只要Session不超时,那么保存在Session的数据就不会丢失
优点:
<1>数据私有性
<2>会话结束,释放资源,节省访问器内存
缺点:
<1>易丢失,超时时间很难确定
<2>Asp.Net1.0将Session保存到数据库方式,持久保存数据,导致网站性能降低
使用:
Profile属性的作用
1.存储和使用唯一与用户对应的信息
2.展现个人化版本的Web应用程序
3.用户的唯一身份标识在再次访问时识别用户
1.提供对配置文件(Web.config)属性值和信息的非类型化访问
2.Web应用程序运行时,ASP.NET创建一个从ProfileBase类动态继承下来的动态生成出来的ProfileCommon类。动态ProfileCommon类包含了你在Web应用程序配置文件中指定的Profile属性所拥有的字段。一个动态ProfileCommon类的实例被设置成了当前HttpContext的Profile属性,并可以在应用程序的各个页面中使用。
二、Profile作用
1.存储和使用唯一与用户对应的信息
2.展现个人化版本的Web应用程序
3.用户的唯一身份标识在再次访问时识别用户
=========常用的Web保存数据的方式=========
1.Session
只要Session不超时,那么保存在Session的数据就不会丢失
优点:
<1>数据私有性
<2>会话结束,释放资源,节省访问器内存
缺点:
<1>易丢失,超时时间很难确定
<2>Asp.Net1.0将Session保存到数据库方式,持久保存数据,导致网站性能降低
使用:
=Value] 2.Cookie 保存到客户端的少量文本数据 优点: <1>可自定义有效期 <2>不占用服务器磁盘空间 <3>稳定性比较好 缺点: <1>易丢失 <2>安全性差 <3>只能存储文本数据 使用:Response.Cookies["Key"].Value=值;//向Cookie写入数据,String类型 string value = Request.Cookies["Key"];//读取
3.Application
4.Cache
5.XML
6.文件
7.数据库
=========购物车=========
一、特点
1.私有性:每位用户操作自己的购物车
2.安全性:保障用户支付信息的安全
3.稳定性:可以支持高负载
4.持久性:购物车内的物品不能丢失
二、抽象
<1> 购物车中的商品类(购物车容器中的实例)
===CartItem类的属性===
ID: 唯一标识 (只读)
Name: 商品名称 (只读)
Price: 商品价格 (只读)
Quantity: 商品数量
===CartItem的方法===<2>购物车(存放商品的容器) ===Cart类的属性=== Items :商品集合(Hashtable) Hashtable Items = new Hashtable(); //返回购物车中商品的集合 public ICollection CartItems { Get{return Items.Values;} }
CartItems: 获取全部商品
Total: 商品总价格
===Cart类的方法===public void AddItem(int id,string name,decimal price) //增加项 { //无商品增加. 有商品更改数量,通过检验Hashtable中 键来判断有无商品 CartItem item = (CartItem)Items[id]; if(item ==null) { //增加 Items.Add(id,new CartItem(id,name,price)); } else { items.Quantity++; items[id] = item; } } public void RemoveItem(int id);//移出项 { item.Quantity--; if(item.Quantity ==0)//如果没数量,移除 { Items.Remove(id); } else { items[id] =item; } }
=========Provider提供程序==========
1.Profile属性
2.配置层:Web.Config
3.提供程序层:SqlProfileProvider
4.数据层:Aspnetdb数据库//Web.config <connectionStrings> <add name="profileConnStr" connectionString="server=.\sqlexpress;database=test;uid=sa;pwd=123456"/> </connectionStrings> <system.web> <!-- 匿名用户也可访问profile --> <anonymousIdentification enabled="true"/> <profile enabled="true" automaticSaveEnabled="true" defaultProvider="SqlProvide"> <providers> <add name="SqlProvide" connectionStringName="profileConnStr" type="System.Web.Profile.SqlProfileProvider"/> </providers> <properties> <add name="ShoppingCart" type="Cart" allowAnonymous="true" serializeAs="Binary"/> </properties> </profile> ...... <!-- 通过 <authentication> 节可以配置 ASP.NET 用来 识别进入用户的 安全身份验证模式。 --> <authentication mode="Forms" /> </system.web>//采用硬编码方式进行用户认证: string name = txtName.Text.Trim(); string pwd = txtPassword.Text.Trim(); if (name == "niunan" && pwd == "123456") { FormsAuthentication.SetAuthCookie(name, false); Response.Redirect("~/product.aspx"); }//匿名用户的购物车数据向实名用户的购物车数据迁移 //即,未登陆时收藏到购物车. 结账时 登陆.将匿名用户的购物车转移到登陆账户中 //Global.asax文件中加入如下内容: protected void Profile_MigrateAnonymous(object s, ProfileMigrateEventArgs e) { ProfileCommon anonProfile = Profile.GetProfile(e.AnonymousID); foreach (CartItem ci in anonProfile.ShoppingCart.GetItems()) { Profile.ShoppingCart.AddItem(ci); } ProfileManager.DeleteProfile(e.AnonymousID); // 删除匿名用户的profile AnonymousIdentificationModule.ClearAnonymousIdentifier(); // 清除匿名用户标识 Profile.Save(); }=============Aspnetdb数据库中内容===============
aspnet_Users | 基础表 |
aspnet_Applications | 基础表 |
aspnet_Profile | 个性化用户配置部分 |
aspnet_PersonalizationPerUser | 页面个性化设置部分 |
aspnet_Paths | 页面个性化设置部分 |
aspnet_PersonalizationAllUsers | 页面个性化配置部分 |
aspnet_Roles | 角色管理部分 |
aspnet_UserInRoles | 角色管理部分 |
aspnet_Membership | 成员资格管理部分 |
=============Asp.net提供程序基类===============
类 | 描述 |
MembershipProvider | 成员资格提供程序的基类,用来管理用户账户信息 |
ProfileProvider | 个性化提供程序的基类,用来永久存储和检索用户的配置信息 |
RoleProvider | 角色提供程序的基类,用来管理用户角色信息 |
SessionStateStoreProviderBase | 会话状态存储器提供程序的基类,这些提供程序用来把会话状态信息保存在持久性存储介质中,或从中检索会话状态信息 |
SiteMapProvider | 管理站点地图信息的基类 |
1.存储和使用唯一与用户对应的信息
2.展现个人化版本的Web应用程序
3.用户的唯一身份标识在再次访问时识别用户
=============Sql ServerProvider对Asp.net提供程序的支持===============
类 | 描述 |
SqlMembershipProvider类 | 成员资格 |
SqlRoleProvider类 | 角色管理 |
SqlProfileProvider类 | 个性化配置 |
SqlPersonalizationProvider类 | Web部件个性化设置 |
SqlWebEventProvider类 | Web事件 |
相关文章推荐
- asp.net基于Profile和Provider技术实现购物车
- 使用session技术来实现网上商城购物车的功能
- 使用session技术来实现网上商城购物车的功能【整理】
- Ajax技术实现的购物车,使用Cookie保存。
- 使用session技术来实现网上商城购物车的功能
- 使用Servlet技术实现购物车总体介绍
- Ajax技术实现的购物车,使用Cookie保存。
- 使用session技术来实现网上商城购物车的功能
- 使用session技术实现购物车的功能
- 使用session技术来实现网上商城购物车的功能
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示ORM对象与DataGridView的绑定技术-商品字典的另一个实现
- 利用maven的resources、filter和profile实现不同环境使用不同配置文件
- cookie的使用,并用cookie实现购物车功能
- 综合应用WPF/WCF/WF/LINQ之五:将Workflow使用WCF技术Host到IIS中,并实现调用
- 模拟网易邮箱实现全选,全不的功能/使用DataList实现 加入购物车,编辑,删除,更新,取消功能。/试完成Datalist使用存储过程来分页
- ASP.NET知识点(三):购物车与收藏蓝的实现[Profile]
- 使用非阻塞I/O技术实现多用户聊天 服务器端程序
- Java开发中经常使用到的几种WebService技术实现方案
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能
- 浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)