李 航,許春艷
長(zhǎng)春職業(yè)技術(shù)學(xué)院,吉林長(zhǎng)春 130033
基于ASP.NET Web用戶控件站點(diǎn)流量統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)
李 航,許春艷
長(zhǎng)春職業(yè)技術(shù)學(xué)院,吉林長(zhǎng)春 130033
通過(guò)采用ASP.NET技術(shù)下的Web用戶控件可以簡(jiǎn)化表示層的頁(yè)面復(fù)雜度,讓程序員可以專心設(shè)計(jì)流量系統(tǒng)的業(yè)務(wù)邏輯而不必在代碼維護(hù)方面花費(fèi)太多的精力。本文對(duì)站點(diǎn)流量統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)進(jìn)行了論述。
表示層;業(yè)務(wù)邏輯;站點(diǎn)流量;Web用戶控件;ascx
隨著互聯(lián)網(wǎng)技術(shù)的逐漸普及,中國(guó)網(wǎng)民的數(shù)量正在以迅猛的增長(zhǎng),如何招攬更多的點(diǎn)擊率,獲取更多訪問(wèn)量,如何及時(shí)調(diào)整網(wǎng)站內(nèi)容已經(jīng)成為了廣大網(wǎng)站管理者目前最為關(guān)心的問(wèn)題。
由此產(chǎn)生的各種輕量級(jí)的站點(diǎn)流量統(tǒng)計(jì)系統(tǒng)也開(kāi)始應(yīng)運(yùn)而生,本文主要探討目前應(yīng)用范圍比較廣的基于ASP.NET Web用戶控件的站點(diǎn)流量統(tǒng)計(jì)系統(tǒng)(以下簡(jiǎn)稱流量系統(tǒng))的設(shè)計(jì)思路。
就目前而言流量系統(tǒng)一般要具備快速統(tǒng)計(jì)站點(diǎn)流量、欄目流量、IP流量等信息。而如果單純地將以上功能的代碼直接編輯在表示層的頁(yè)面中,通常會(huì)造成代碼混亂、不易維護(hù)等問(wèn)題。這里可以采用ASP.NET技術(shù)下的Web用戶控件來(lái)簡(jiǎn)化表示層的頁(yè)面復(fù)雜度。讓程序員可以專心設(shè)計(jì)流量系統(tǒng)的業(yè)務(wù)邏輯而不必在代碼維護(hù)方面花費(fèi)太多的精力。
Web用戶控件與 ASP.NET 窗體有以下區(qū)別:
1)Web用戶控件的文件擴(kuò)展名為 .ascx;
2)Web用戶控件中沒(méi)有 @ Page 指令,而是包含 @ Control 指令,該指令對(duì)配置及其他屬性進(jìn)行定義;
3)Web用戶控件不能作為獨(dú)立文件運(yùn)行。而必須像處理任何控件一樣,將它們添加到 ASP.NET 窗體頁(yè)中;
4)Web用戶控件中沒(méi)有 html、body 或 form 元素。這些元素必須位于宿主頁(yè)中。
可以在用戶控件上使用與在 ASP.NET 網(wǎng)頁(yè)上所用相同的HTML 元素(html、body 或 form 元素除外)和 Web 控件。例如,如果要?jiǎng)?chuàng)建一個(gè)將用作工具欄的用戶控件,則可以將一系列Button Web 服務(wù)器控件放在該控件上,并創(chuàng)建這些按鈕的事件處理程序
在流量系統(tǒng)中通常會(huì)提供給用戶一個(gè)系統(tǒng)的實(shí)時(shí)時(shí)間提示,同樣這個(gè)功能可以將這些代碼封裝到一個(gè)Web用戶控件中,當(dāng)需要顯示系統(tǒng)時(shí)間時(shí),只要拖動(dòng)這個(gè)Web用戶控件的文件到具體頁(yè)面的設(shè)計(jì)視圖下就可以了。
例1:在所需網(wǎng)站根目錄下添加一個(gè)Web用戶控件,命名為DisplayTime.ascx,在其源視圖下添加如下代碼:

例2:設(shè)計(jì)顯示當(dāng)月訪問(wèn)量的Web用戶控件DisplayMonthCount.ascx
在網(wǎng)站根目錄下添加新項(xiàng)Web用戶控件:“DisplayMonthCount.ascx”并在其源視圖下添加如下代碼:

進(jìn)入DisplayMonthCount.ascx.cs頁(yè)面,添加如下代碼,其中using DAL.traffic;為引入剛剛建立的DataBase.cs數(shù)據(jù)庫(kù)操作類所在的命名空間。通過(guò)創(chuàng)建DataTime對(duì)象獲取當(dāng)前月份,并將當(dāng)前月份作為檢索Func表的條件獲取滿足該月份的記錄總算,即select count(*) from func where month(loadtime)=month,其中count(*)為自動(dòng)求和函數(shù)。值得注意的是當(dāng)前訪問(wèn)表Func的方式為通過(guò)構(gòu)建SQL語(yǔ)句在數(shù)據(jù)庫(kù)意外的環(huán)境下操作,因此需要對(duì)數(shù)據(jù)庫(kù)查詢語(yǔ)句進(jìn)行字符串式的封裝構(gòu)建,因此就有了定義一個(gè)String類型的數(shù)據(jù)庫(kù)查詢字符串str的定義,在此讀者應(yīng)重點(diǎn)留意帶有查詢條件(參數(shù))的查詢字符串String str=@"select count(*) from func where month(loadtime)="+month;的構(gòu)建特點(diǎn)。最后將查詢結(jié)果以一個(gè)DataReader數(shù)據(jù)集的方式返回,并字符串的方式賦值給標(biāo)簽控件Label1的Text值

例3:設(shè)計(jì)顯示當(dāng)日訪問(wèn)量Web用戶控件getDayCount.ascx
在網(wǎng)站根目錄下添加新項(xiàng)Web用戶控件“getDayCount.ascx”在其源視圖下添加如下代碼:

進(jìn)入DisplayMonthCount.ascx.cs頁(yè)面添加如下代碼, 當(dāng)日訪問(wèn)量設(shè)計(jì)思路與顯示當(dāng)月訪問(wèn)量設(shè)計(jì)思路相同,只是篩選表Func記錄的條件改成了當(dāng)前日期即DataTime.Now.Day


[1]鄭耀東.ASP.NET從入門到實(shí)踐[M].北京:清華大學(xué)出版社,2009,9.
[2]劉亮亮,潘中強(qiáng).精通ASP.NET 2.0數(shù)據(jù)綁定技術(shù)[M].北京:人民郵電出版社.
TP393
A
1674-6708(2010)18-0127-02
李航,助教,現(xiàn)就職于長(zhǎng)春職業(yè)技術(shù)學(xué)院,從事軟件技術(shù)專業(yè)教學(xué)工作