胡必波 王素芳 .廣州工商職業(yè)技術(shù)學(xué)院 50850;.廣東白云學(xué)院 50450
基于.NET電子商務(wù)網(wǎng)站購(gòu)物車(chē)功能設(shè)計(jì)與實(shí)現(xiàn)
胡必波1王素芳21.廣州工商職業(yè)技術(shù)學(xué)院 510850;2.廣東白云學(xué)院 510450
本文結(jié)合ASP.NET 2.0技術(shù)提供的個(gè)性化用戶(hù)配置功能,剖析了實(shí)現(xiàn)電子商務(wù)網(wǎng)站中購(gòu)物車(chē)功能關(guān)鍵技術(shù),介紹實(shí)現(xiàn)該功能設(shè)計(jì)方法與技巧。
電子商務(wù);購(gòu)物車(chē);個(gè)性化用戶(hù)配置
電子商務(wù)是指整個(gè)事務(wù)活動(dòng)和貿(mào)易活動(dòng)的電子化,它通過(guò)先進(jìn)的信息網(wǎng)絡(luò),將事務(wù)活動(dòng)和貿(mào)易活動(dòng)中發(fā)生關(guān)系的各方有機(jī)地聯(lián)系起來(lái)。電子商務(wù)網(wǎng)站實(shí)際上就是銷(xiāo)售企業(yè)為消費(fèi)者提供的網(wǎng)上購(gòu)物商城,在該網(wǎng)站中用戶(hù)可以購(gòu)買(mǎi)任何商品,而管理員可以對(duì)商品和訂單等信息進(jìn)行管理。購(gòu)物車(chē)功能的實(shí)現(xiàn)是電子商務(wù)網(wǎng)站的關(guān)鍵,這里結(jié)合ASP.NET 2.0技術(shù)分析電子商務(wù)網(wǎng)站中購(gòu)物車(chē)功能設(shè)計(jì)技巧。
電子商務(wù)網(wǎng)站最常見(jiàn)的是購(gòu)物車(chē)功能。只要用戶(hù)按照提示輸入用戶(hù)名和密碼,就能夠登錄站點(diǎn)。當(dāng)用戶(hù)登錄站點(diǎn)之后,應(yīng)用程序?qū)@示待銷(xiāo)售商品列表和購(gòu)物車(chē)信息。如圖1所示,左半部分顯示的是待銷(xiāo)售商品列表,右半部分顯示的購(gòu)物車(chē)信息。用戶(hù)可以單擊待銷(xiāo)售商品列表中的“購(gòu)買(mǎi)”按鈕,將商品添加到購(gòu)物車(chē)中。同時(shí),也可以單擊購(gòu)物車(chē)信息列表中的“清除”按鈕來(lái)刪除其中的商品。購(gòu)物車(chē)可以對(duì)商品總價(jià)進(jìn)行計(jì)算。當(dāng)關(guān)閉應(yīng)用程序并重新登錄站點(diǎn)時(shí),頁(yè)面將顯示用戶(hù)上次訪問(wèn)應(yīng)用程序時(shí)購(gòu)物車(chē)操作的結(jié)果。
圖1 購(gòu)物車(chē)功能演示
圖2 購(gòu)物車(chē)類(lèi)圖
實(shí)現(xiàn)購(gòu)物車(chē)功能。由應(yīng)用程序需求可知,購(gòu)物車(chē)主要具有添加和刪除商品信息、計(jì)算車(chē)內(nèi)商品總價(jià)等功能。這些功能只需要一些簡(jiǎn)單的方法就能夠?qū)崿F(xiàn)。訪問(wèn)、存儲(chǔ)和顯示購(gòu)物車(chē)數(shù)據(jù)的機(jī)制。我們?cè)趙eb.config的<profile>配置節(jié)為應(yīng)用程序定義了一個(gè)用戶(hù)配置屬性,其名稱(chēng)為ShoppingCart,數(shù)據(jù)類(lèi)型為ShoppingCart。類(lèi)型ShoppingCart是一個(gè)復(fù)雜數(shù)據(jù)類(lèi)型,它的主體是購(gòu)物車(chē)類(lèi)。另外購(gòu)物車(chē)是一個(gè)自定義數(shù)據(jù)類(lèi)型,為了能夠?qū)崿F(xiàn)存儲(chǔ),必須注意設(shè)置該類(lèi)實(shí)例對(duì)象的序列化。這樣,購(gòu)物車(chē)中的數(shù)據(jù)將通過(guò)Profile屬性得以訪問(wèn)和存儲(chǔ)。例如,訪問(wèn)ShoppingCart屬性數(shù)據(jù),可以調(diào)用Profile. ShoppingCart。待售商品列表數(shù)據(jù)來(lái)自SQL Serevr 2000示例數(shù)據(jù)庫(kù)Northwind的數(shù)據(jù)表Products??梢允褂煤?jiǎn)單的SQL語(yǔ)句結(jié)合數(shù)據(jù)源控件SqlDataSource來(lái)獲取數(shù)據(jù)。然后,將這些數(shù)據(jù)集合綁定到GridView數(shù)據(jù)綁定控件上顯示出來(lái)。為了顯示購(gòu)物車(chē)數(shù)據(jù),必須使其具備與數(shù)據(jù)綁定控件集成的能力,同時(shí)要考慮如何才能更容易地實(shí)現(xiàn)添加、刪除數(shù)據(jù)等功能。這里使用了哈希表(HashTable)來(lái)存儲(chǔ)購(gòu)物車(chē)內(nèi)數(shù)據(jù)。哈希表是System.Collections名字空間提供的一個(gè)容器,用于處理類(lèi)似key/value的鍵值對(duì)。該類(lèi)提供了簡(jiǎn)單的添加、刪除和檢索數(shù)據(jù)方法。使用哈希表的另一原因是使用Hashtable類(lèi)的Values屬性可以返回ICollection類(lèi)型的數(shù)據(jù)集合(也就是購(gòu)物車(chē)中存儲(chǔ)的商品數(shù)據(jù))。該數(shù)據(jù)集合可以輕松與GridView控件綁定在一起,并將數(shù)據(jù)顯示出來(lái)。
ShoppingCart.cs的文件定義類(lèi)的類(lèi)圖如圖2所示。
CartItem類(lèi)以面向?qū)ο蟮姆绞綐?gòu)建了購(gòu)物車(chē)中的單條商品對(duì)象。該類(lèi)包括4個(gè)屬性和一個(gè)構(gòu)造函數(shù)。這四個(gè)屬性分別是ID、Name、Price和Quantity。前三個(gè)屬性分別對(duì)應(yīng)Products數(shù)據(jù)表中的ProductID、Product Name和UnitPrice列,另外一個(gè)屬性Quantity表示用戶(hù)購(gòu)買(mǎi)該商品的數(shù)量。利用CartItem類(lèi)構(gòu)造函數(shù)能夠生成一個(gè)表示某商品的對(duì)象實(shí)例。
ShoppingCart類(lèi)主要實(shí)現(xiàn)購(gòu)物車(chē)中商品數(shù)據(jù)的添加和刪除功能。該類(lèi)包括一個(gè)Hashtable類(lèi)型的字段_ _CartItems,以哈希表方式存儲(chǔ)購(gòu)物車(chē)內(nèi)所有商品數(shù)據(jù)。ShoppingCart類(lèi)還包括兩個(gè)屬性,一個(gè)是表示返回購(gòu)物車(chē)所有商品數(shù)據(jù)的ICollection類(lèi)型的CartItems屬性,另一個(gè)是用于獲得商品總價(jià)的屬性Total。另外,該類(lèi)還實(shí)現(xiàn)了兩個(gè)方法,一個(gè)是向購(gòu)物車(chē)中添加商品數(shù)據(jù)的方法AddItem,另一個(gè)是從購(gòu)物車(chē)中刪除指定商品的方法RemoveItem,分別使用了Hashtable類(lèi)提供的Add和Remove方法。
當(dāng)匿名用戶(hù)訪問(wèn)某電子商務(wù)網(wǎng)站時(shí),應(yīng)用程序首先不是為用戶(hù)展示琳瑯滿(mǎn)目的商品,而是硬生生的顯示用戶(hù)注冊(cè)界面。那么某些用戶(hù)不會(huì)在選擇商品之前,花費(fèi)寶貴的時(shí)間和經(jīng)歷來(lái)注冊(cè)。即使每個(gè)匿名用戶(hù)都注冊(cè)并登錄站點(diǎn)了,也并非所有注冊(cè)用戶(hù)都會(huì)購(gòu)買(mǎi)商品。這種情況的發(fā)生,不僅需要應(yīng)用程序處理大量的用戶(hù)注冊(cè)任務(wù),而且必然在數(shù)據(jù)庫(kù)中產(chǎn)生大量無(wú)用數(shù)據(jù)。解決以上問(wèn)題的理想方式是,首先,站點(diǎn)允許匿名用戶(hù)登錄,并使用購(gòu)物車(chē)功能選擇商品,然后,用戶(hù)可以進(jìn)行注冊(cè)并使用注冊(cè)帳號(hào)登錄站點(diǎn)。這時(shí)候,購(gòu)物車(chē)中顯示的是用戶(hù)在匿名方式下所選擇商品的列表。換句話(huà)說(shuō),匿名用戶(hù)購(gòu)物車(chē)中的商品列表,在從匿名用戶(hù)轉(zhuǎn)向注冊(cè)用戶(hù)的過(guò)程中,平穩(wěn)的轉(zhuǎn)移到了注冊(cè)用戶(hù)的購(gòu)物車(chē)中。如圖3所示。
圖3 匿名用戶(hù)購(gòu)買(mǎi)商品
由于允許匿名用戶(hù)訪問(wèn),必須在在web.config配置文件中啟用應(yīng)用程序的匿名驗(yàn)證功能,即將anonymousIdentification屬性設(shè)為true。然后在ShoppingCart用戶(hù)配置屬性中設(shè)置allowAnonymous="true"。這樣應(yīng)用程序就會(huì)存儲(chǔ)匿名用戶(hù)的ShoppingCart屬性數(shù)據(jù)。
在應(yīng)用程序中可以增加Global.asax文件,相關(guān)代碼如下。
//獲取匿名用戶(hù)的Profile對(duì)象
這里關(guān)鍵是實(shí)現(xiàn)ProfileModule類(lèi)中的MigrateAnonymous事件。該事件在包含用戶(hù)配置屬性數(shù)據(jù)的匿名用戶(hù)登錄時(shí)發(fā)生,對(duì)應(yīng)的事件處理程序是Profile_ MigrateAnonymous。與其他事件處理程序不同的是,該事件處理程序必須在Global.asax文件中定義。這里該事件主要實(shí)現(xiàn)了3個(gè)任務(wù):一是從匿名用戶(hù)的Profile屬性中復(fù)制相關(guān)信息,并將其存儲(chǔ)到注冊(cè)用戶(hù)的Profile屬性中;二是為減少冗余數(shù)據(jù),刪除aspnetdb數(shù)據(jù)庫(kù)中存儲(chǔ)的匿名用戶(hù)的用戶(hù)配置;三是刪除匿名用戶(hù)標(biāo)識(shí),以避免再次為已經(jīng)登錄的用戶(hù)激發(fā)MigrateAnonymous事件。
購(gòu)物車(chē)技術(shù)是電子商務(wù)網(wǎng)站關(guān)鍵技術(shù)之一,其功能設(shè)計(jì)實(shí)質(zhì)上是使用ASP. NET 2.0提供的個(gè)性化用戶(hù)配置功能,將配置信息與單個(gè)用戶(hù)關(guān)聯(lián),并采用持久化方式存儲(chǔ)信息。配置信息可以是任何與用戶(hù)相關(guān)的信息,所存儲(chǔ)的配置信息可以是任何數(shù)據(jù)類(lèi)型的對(duì)象,單個(gè)用戶(hù)可以是注冊(cè)用戶(hù),也可以是匿名用戶(hù),持久化存儲(chǔ)采用SQL Server數(shù)據(jù)庫(kù)方式,并且無(wú)需自行創(chuàng)建和維護(hù)該數(shù)據(jù)庫(kù),由ASP.NET 2.0自動(dòng)完成。
[1]包空軍,劉海燕.ASP.NET電子商務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 福建電腦,2007,02
[2]羅愛(ài)群,熊麗婷,張永紅. 基于Web的電子商務(wù)開(kāi)發(fā)技術(shù)及系統(tǒng)設(shè)計(jì)[J].商場(chǎng)現(xiàn)代化,2008,10
[3]張應(yīng)征, 成新紅.電子商務(wù)網(wǎng)站中購(gòu)物車(chē)及訂單管理功能設(shè)計(jì)研究[J]. 企業(yè)技術(shù)開(kāi)發(fā),2010,11
10.3969/j.issn.1001-8972.2012.07.054