论文部分内容阅读
[摘要]传统的交互式开发在处理复杂的数据结构时采用了相当复杂的机制,并且给后期的维护工作带来极大的不便。探讨基于微软的VS.NET提供的全新WEB开发架构(framework),以实现电子商务网站的购物车的各种功能(包括购物车商品的添加,修改,删除,价格统计)为例,介绍通过自定义结构进行映射的方法,使得WEB开发更简洁高效。测试的结果表明此方法确实可行并能达到预期的目标,值得在WEB项目的开发过程中推广。
[关键词]NET 购物车 结构 数据库
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0820105-01
一、引言
自从微软推出.NET架构,使得WEB开发和桌面开发的界限更加模糊,WEB开发在更高层次上获得更大的灵活性,越来越多的WEB开发人员正向此架构靠拢,.NET显示了其强大的优越性。
在.NET出现以前,处理复杂数据结构往往伴随复杂的算法,从而使WEB应用的健壮性和可读性难以保证。以下通过.NET框架(使用VB.NET为前台开发工具,SQL2000作为后台存储,三层结构)实现电子商务(BtoC)应用的购物车的实例,充分领略.NET在这方面不可比拟的优势。
二、实例分析
购物车往往是电子商务网站开发的重要部分,通常客户除了浏览商品以外的绝大多数操作都和购物车有关。虽然可以用二维的关系型结构表示,但却不方便使用数据库实现,因为客户在提交前可能会多次修改购物车内容,这样会频繁访问和操作远程数据库,增加服务器负担。以下方法显示在内存中建立二维结构来实现购物车,当客户确认后生成订单,然后再一次性提交到数据库存储。
三、数据结构映射
首先,需要在Global.asax.vb中声明购物车数据结构。
Public Shared lsb AsNew DataTable()
这是一个全局成员,原因是客户可能在不同的页面填充(或删除)他的购物车,必须让任何对象都可以访问此成员。此外,购物车存储了客户选择了什么商品,多少数量以及这种商品的单价等信息,因此用表能简单映射这种复杂的关系模式。
在商品浏览页面初始过程中使用类似以下代码:(省略与主题无关代码)
Imports hzg.Global‘引用Global.asax.vb声明
If Not Page.IsPostBack Then'定义购物车结构
lsb.Columns.Add("编号",GetType(Int32))
lsb.Columns.Add("名称",GetType(String))
lsb.Columns.Add("单价",GetType(Single))
lsb.Columns.Add("数量",GetType(Int32))
lsb.Columns.Add("总价",GetType(Single))
lsb.Columns(0).Unique=True'声明索引列
Dim key(1) As DataColumn
key(0)=lsb.Columns(0)
lsb.PrimaryKey=key‘声明关键字
四、在相应的触发事件中实现各种功能
(一)实现向购物车添加选购商品
现在lsb是一个结构复杂的全局成员,可以被各个页面调用。假设在商品浏览页面在商品列表中对每样商品都提供了触发链接或按钮,在触发事件中使用类似以下代码(省略与主题无关代码),这样使得用户每单击一次,就有一件商品填充进他的购物车,当然默认的数量是1。Dim sj As DataRow=lsb.NewRow()'声明一行
Dim nr As Label=e.Item.FindControl("label3")
sj(0)=nr.Text'添加编号
nr=e.Item.FindControl("label6")
sj(1)=nr.Text'添加品名
nr=e.Item.FindControl("label8")
sj(2)=nr.Text'添加单价
sj(3)=1'设置缺省购买数量
sj(4)=sj(2)*sj(3)'添加每样商品总价
lsb.Rows.Add(sj)'加入购物车
(二)实现对购物车的商品进行修改
客户在选购了商品后可能会改变初衷,增加选购数量或不购买原来选择的商品。因此需要实现购物车的编辑和删除。假设已经创建编辑购物车的触发链接或按钮,在触发事件中使用类似以下代码:(省略与主题无关代码)
If lsb.Rows.Count>0 Then Response.Redirect("mygwc.aspx")
Else Response.Write("alert('你的购物车还是空的,请选购商品。')")
End If
在mygwc.aspx中使用Datagrid控件提供客户直观操作,并且对应使用类似以下代码以实现其功能:Imports hzg.Global
If Not Page.IsPostBack Then
Datagrid3.DataSource=lsb.DefaultView'显示购物车的内容
Datagrid3.DataBind()
zj()'计算总价
End If
在购物车中删除选购商品:
lsb.Rows(e.Item.ItemIndex).Delete()
在购物车中修改选购商品的数量。在用户单击“改变数量”的触发链接时,提供一个可以接受输入的文本框来事先商品数量的更改。
Dim zhi As TextBox=e.Item.FindControl("TextBox1")
lsb.Rows(e.Item.ItemIndex)(3)=zhi.Text
lsb.Rows(e.Item.ItemIndex)(4)=zhi.Text*lsb.Rows(e.Item.ItemIndex)(2)
显示目前购物车中商品的总价,这个过程在相应的事件发生时会被反复调用,以确保在用户对购物车进行修改后仍然能正确现实当前的总价,同时给一个准确的提示为用户下一步操作提供参考。
生成订单并存储到数据库(代码略)
五、结论
目前有一些方法也可以在web中实现复杂的数据结构,但不外乎通过在页面中进行类的定义,然后进行包含引用,编码显得很复杂。而且往往是基于非编译语言开发的,所以在运行效率上也有缺憾。通过以上实例体现这种方法的简洁和高效,甚至可以针对某些应用开发成组件。
参考文献:
[1](美)HershBhasin著,高健英宇等译.ASP.NET专业项目实例开发[M].北京:中国水利水电出版社,2002.
[2](美)FredBarwellRichardBlair著,康博译.ASP.NET专业项目实例开发[M].北京:清华大学出版社,2002.
[关键词]NET 购物车 结构 数据库
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0820105-01
一、引言
自从微软推出.NET架构,使得WEB开发和桌面开发的界限更加模糊,WEB开发在更高层次上获得更大的灵活性,越来越多的WEB开发人员正向此架构靠拢,.NET显示了其强大的优越性。
在.NET出现以前,处理复杂数据结构往往伴随复杂的算法,从而使WEB应用的健壮性和可读性难以保证。以下通过.NET框架(使用VB.NET为前台开发工具,SQL2000作为后台存储,三层结构)实现电子商务(BtoC)应用的购物车的实例,充分领略.NET在这方面不可比拟的优势。
二、实例分析
购物车往往是电子商务网站开发的重要部分,通常客户除了浏览商品以外的绝大多数操作都和购物车有关。虽然可以用二维的关系型结构表示,但却不方便使用数据库实现,因为客户在提交前可能会多次修改购物车内容,这样会频繁访问和操作远程数据库,增加服务器负担。以下方法显示在内存中建立二维结构来实现购物车,当客户确认后生成订单,然后再一次性提交到数据库存储。
三、数据结构映射
首先,需要在Global.asax.vb中声明购物车数据结构。
Public Shared lsb AsNew DataTable()
这是一个全局成员,原因是客户可能在不同的页面填充(或删除)他的购物车,必须让任何对象都可以访问此成员。此外,购物车存储了客户选择了什么商品,多少数量以及这种商品的单价等信息,因此用表能简单映射这种复杂的关系模式。
在商品浏览页面初始过程中使用类似以下代码:(省略与主题无关代码)
Imports hzg.Global‘引用Global.asax.vb声明
If Not Page.IsPostBack Then'定义购物车结构
lsb.Columns.Add("编号",GetType(Int32))
lsb.Columns.Add("名称",GetType(String))
lsb.Columns.Add("单价",GetType(Single))
lsb.Columns.Add("数量",GetType(Int32))
lsb.Columns.Add("总价",GetType(Single))
lsb.Columns(0).Unique=True'声明索引列
Dim key(1) As DataColumn
key(0)=lsb.Columns(0)
lsb.PrimaryKey=key‘声明关键字
四、在相应的触发事件中实现各种功能
(一)实现向购物车添加选购商品
现在lsb是一个结构复杂的全局成员,可以被各个页面调用。假设在商品浏览页面在商品列表中对每样商品都提供了触发链接或按钮,在触发事件中使用类似以下代码(省略与主题无关代码),这样使得用户每单击一次,就有一件商品填充进他的购物车,当然默认的数量是1。Dim sj As DataRow=lsb.NewRow()'声明一行
Dim nr As Label=e.Item.FindControl("label3")
sj(0)=nr.Text'添加编号
nr=e.Item.FindControl("label6")
sj(1)=nr.Text'添加品名
nr=e.Item.FindControl("label8")
sj(2)=nr.Text'添加单价
sj(3)=1'设置缺省购买数量
sj(4)=sj(2)*sj(3)'添加每样商品总价
lsb.Rows.Add(sj)'加入购物车
(二)实现对购物车的商品进行修改
客户在选购了商品后可能会改变初衷,增加选购数量或不购买原来选择的商品。因此需要实现购物车的编辑和删除。假设已经创建编辑购物车的触发链接或按钮,在触发事件中使用类似以下代码:(省略与主题无关代码)
If lsb.Rows.Count>0 Then Response.Redirect("mygwc.aspx")
Else Response.Write("
End If
在mygwc.aspx中使用Datagrid控件提供客户直观操作,并且对应使用类似以下代码以实现其功能:Imports hzg.Global
If Not Page.IsPostBack Then
Datagrid3.DataSource=lsb.DefaultView'显示购物车的内容
Datagrid3.DataBind()
zj()'计算总价
End If
在购物车中删除选购商品:
lsb.Rows(e.Item.ItemIndex).Delete()
在购物车中修改选购商品的数量。在用户单击“改变数量”的触发链接时,提供一个可以接受输入的文本框来事先商品数量的更改。
Dim zhi As TextBox=e.Item.FindControl("TextBox1")
lsb.Rows(e.Item.ItemIndex)(3)=zhi.Text
lsb.Rows(e.Item.ItemIndex)(4)=zhi.Text*lsb.Rows(e.Item.ItemIndex)(2)
显示目前购物车中商品的总价,这个过程在相应的事件发生时会被反复调用,以确保在用户对购物车进行修改后仍然能正确现实当前的总价,同时给一个准确的提示为用户下一步操作提供参考。
生成订单并存储到数据库(代码略)
五、结论
目前有一些方法也可以在web中实现复杂的数据结构,但不外乎通过在页面中进行类的定义,然后进行包含引用,编码显得很复杂。而且往往是基于非编译语言开发的,所以在运行效率上也有缺憾。通过以上实例体现这种方法的简洁和高效,甚至可以针对某些应用开发成组件。
参考文献:
[1](美)HershBhasin著,高健英宇等译.ASP.NET专业项目实例开发[M].北京:中国水利水电出版社,2002.
[2](美)FredBarwellRichardBlair著,康博译.ASP.NET专业项目实例开发[M].北京:清华大学出版社,2002.