关于网站购物车的实现的思考
2014-03-04 15:02
246 查看
写在前面的话:刚来公司的的时候,老大安排了一个任务,企业站,但是需要实现购物车的功能,以前没做过,所有就向周围的人请教了一下如何实现购物车,自己也在网上搜了一下,有了些自己的认识,于是写了下来
这三种方法的不同之处就在于保存用户操作的方式不同,其中Session现在用的不多,由于Session的生命周期,在浏览器关闭时会失效,所以容易使数据丢失,如果用户在浏览网站是不小心关闭了浏览器,当用户再次打开时,加入购物车的物品就会丢失,所以不可取。
Cookie的实现方式是在用户点击加入购物车之后将数据以Cookie的形式存储的客户端,每次用户登录该网站时,首先从Cookie中读取数据出来,这种方式数据库不易丢失,读取速度也快。
数据库的实现方式是最安全的,但是这种方式也是最占用服务器资源的,而且当数据量较大时,会影响服务器响应速度。
页面组成:ProductList.aspx、ProductShow.aspx、ShoppingCart.aspx
ProductList.aspx.cs文件
View Code
此页面的功能只是简单的从Cookie中读取已有数据,并显示在页面上,由于只是简单侧说,所以没有实现从购物车取消购买功能,只是简单的罗列。
运行页面如下:
我简单介绍一下这三个层,是传统的BLL、DAL、Model三层,DAL用来从数据库读取数据,BLL其实没有什么作用,只是为了成为三层,因为这个小例子太简单,没有什么业务逻辑可以处理(不知道自己这样使用三层会不会太生拉硬套了,反正就是想让自己从小例子开始习惯使用三层吧),Model层定义了一个Product类来表示商品,最后定义了一个Cart类,它只是实现了将数据写入CooKie和从Cookie读去数据的功能。到此这个小例子就完全结束了。
写在后面的话:当我思考了许久,才想出购物车的实现思路,结构最后才发现,组长给我的任务是在企业站中实现购物车,而企业站中实现购物的功能大都是以留言的方式是实现的,所以自己的这个方案也没有用上;不过,我也从中学到了很多,学到了面对问题,应该首先自己去思考如何解决问题。
1、实现思路:
在网上查了一下资料,以及向身边请教之后发现,对于网站购物车的实现大体分为三种方法:Session实现、Cookie实现、数据库实现,其实这三种实现,指的只是如何跟踪用户的操作,即用户购买物品,加入购物车,加入了什么物品,加入了多少物品等信息的暂时保存。这三种方法的不同之处就在于保存用户操作的方式不同,其中Session现在用的不多,由于Session的生命周期,在浏览器关闭时会失效,所以容易使数据丢失,如果用户在浏览网站是不小心关闭了浏览器,当用户再次打开时,加入购物车的物品就会丢失,所以不可取。
Cookie的实现方式是在用户点击加入购物车之后将数据以Cookie的形式存储的客户端,每次用户登录该网站时,首先从Cookie中读取数据出来,这种方式数据库不易丢失,读取速度也快。
数据库的实现方式是最安全的,但是这种方式也是最占用服务器资源的,而且当数据量较大时,会影响服务器响应速度。
2、我选择的方式:
我初步设想是在物品展示页面中做成类似淘宝网、当当网的那种展示页面,在每个物品下面放置一个加入购物车按钮,希望在用户浏览该页面时,点击该按钮将自己喜欢的物品加入购物车。页面组成:ProductList.aspx、ProductShow.aspx、ShoppingCart.aspx
ProductList.aspx.cs文件
public partial class ShoppingCart : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Bind(); this.DataBind(); } protected void Bind() { Cart cart = new Cart(); rptCart.DataSource = cart.ReadCookies(); } }
View Code
此页面的功能只是简单的从Cookie中读取已有数据,并显示在页面上,由于只是简单侧说,所以没有实现从购物车取消购买功能,只是简单的罗列。
运行页面如下:
3、总结:
本文就是简单的描述一下自己对于购物车实现的想法,如果有不对的,还请各位多多指教,由于自己最近才开始练习使用三层架构,因此这个小例子也使用了三层,这样做确实使代码的层次结构很容易理解了。我简单介绍一下这三个层,是传统的BLL、DAL、Model三层,DAL用来从数据库读取数据,BLL其实没有什么作用,只是为了成为三层,因为这个小例子太简单,没有什么业务逻辑可以处理(不知道自己这样使用三层会不会太生拉硬套了,反正就是想让自己从小例子开始习惯使用三层吧),Model层定义了一个Product类来表示商品,最后定义了一个Cart类,它只是实现了将数据写入CooKie和从Cookie读去数据的功能。到此这个小例子就完全结束了。
写在后面的话:当我思考了许久,才想出购物车的实现思路,结构最后才发现,组长给我的任务是在企业站中实现购物车,而企业站中实现购物的功能大都是以留言的方式是实现的,所以自己的这个方案也没有用上;不过,我也从中学到了很多,学到了面对问题,应该首先自己去思考如何解决问题。
相关文章推荐
- 关于大型网站技术演进的思考(二)--存储的瓶颈(2)
- 关于大型网站技术演进的思考(四)--存储的瓶颈(4)[转]
- 基于ElementUI的网站换主题的一些思考与实现
- 关于大型网站技术演进的思考(七)--存储的瓶颈(7)
- 发现一个好的javascript网站(http://www.softcomplex.com/products/tigra_menu/demo/steps/)有关于用JAVASCRIPT实现下拉菜单。
- 关于大型网站技术演进的思考(一)--存储的瓶颈(上)
- 关于大型网站技术演进的思考(七)--存储的瓶颈(7)
- 关于大型网站技术演进的思考(四)--存储的瓶颈(4)
- 关于商城网站商品sku选择的js简易实现
- 关于研发框架实现模式的一点思考
- 关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)
- 关于大型网站技术演进的思考(十)--网站静态化处理—动静整合方案(2)
- 关于大型网站技术演进的思考(十六)--网站静态化处理—前后端分离—下(8)
- 关于网站做多语言切换功能的最简单实现思路
- 关于大型网站技术演进的思考(七)--存储的瓶颈(7)
- 关于大型网站技术演进的思考(十)--网站静态化处理—动静整合方案(2)
- 关于云服务器的ASP.Net MVC网站实现被外网访问
- 关于大型网站技术演进的思考(十二)--网站静态化处理―缓存(4)
- 关于大型网站技术演进的思考(二十一):网站静态化处理—Web前端优化(下)(13)
- [请教]关于超大数据量网站的数据搜索和分页的实现方法