asp.net 2.0 網(wǎng)站開發(fā)全程解析 第2版_第1頁(yè)
asp.net 2.0 網(wǎng)站開發(fā)全程解析 第2版_第2頁(yè)
asp.net 2.0 網(wǎng)站開發(fā)全程解析 第2版_第3頁(yè)
asp.net 2.0 網(wǎng)站開發(fā)全程解析 第2版_第4頁(yè)
asp.net 2.0 網(wǎng)站開發(fā)全程解析 第2版_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ASP.NET 2.0 網(wǎng)站開發(fā)全程解析 第2版第1章 項(xiàng)目介紹TheBeerHouse1.1 提出問題1.2 設(shè)計(jì)方案1.3 解決方案1.4 小結(jié)第2章 進(jìn)行網(wǎng)站設(shè)計(jì)2.1 提出問題2.2 設(shè)計(jì)方案 設(shè)計(jì)網(wǎng)站布局 實(shí)現(xiàn)設(shè)計(jì)時(shí)用到的技術(shù) 在樣式表文件中使用CSS定義樣式 避免使用HTML表格控制布局 在多個(gè)頁(yè)面中共享通用設(shè)計(jì) 創(chuàng)建可供用戶選擇的主題 創(chuàng)建一個(gè)導(dǎo)航系統(tǒng) 創(chuàng)建一個(gè)可訪問的網(wǎng)站 在所有頁(yè)面上共享通用行為2.3 解決方案 創(chuàng)建網(wǎng)站設(shè)計(jì) 創(chuàng)建模板頁(yè)面 創(chuàng)建站點(diǎn)地圖文件 創(chuàng)建第一個(gè)主題 創(chuàng)建一個(gè)示例Default.aspx頁(yè)面 創(chuàng)建第二個(gè)主題 創(chuàng)建ThemeSelector用戶控件 再對(duì)樣

2、式進(jìn)行小修改2.4 小結(jié)第3章 設(shè)計(jì)體系結(jié)構(gòu)3.1 提出問題3.2 設(shè)計(jì)方案 設(shè)計(jì)分層結(jié)構(gòu) 選擇一個(gè)數(shù)據(jù)庫(kù) 設(shè)計(jì)數(shù)據(jù)訪問層 設(shè)計(jì)業(yè)務(wù)邏輯層 存儲(chǔ)連接字符串及其他設(shè)置 用戶界面3.3 解決方案 TheBeerHouse的配置部分 DAL的基類:DataAccess BLL的基類:BizObject 配置健康監(jiān)控系統(tǒng)3.4 小結(jié)第4章 成員和用戶配置4.1 提出問題4.2 設(shè)計(jì)方案 密碼存儲(chǔ)方法 認(rèn)證模式:Windows security 還是自定義登錄表單 讓每件事情都由自己完成 Membership和MembershipUser類 提供程序模型設(shè)計(jì)模式 關(guān)于SqlMembershipProvi

3、der的更多細(xì)節(jié) 瀏覽默認(rèn)的SQL Server數(shù)據(jù)庫(kù) 圖形登錄控件 建立和使用角色 建立和使用用戶資料 網(wǎng)站管理工具 設(shè)計(jì)解決方案4.3 解決方案 配置文件 創(chuàng)建登錄框4.3.3 AccessDenied.aspx頁(yè)面 UserProfile控件 用戶資料編輯頁(yè)面 將用戶選擇的主題持久化 管理部分4.4 小結(jié)第5章 新聞與文章管理5.1 提出問題5.2 設(shè)計(jì)方案 要實(shí)現(xiàn)的功能 存儲(chǔ)過程 設(shè)計(jì)配置模塊 設(shè)計(jì)數(shù)據(jù)訪問層 設(shè)計(jì)業(yè)務(wù)層 設(shè)計(jì)用戶界面 安全需要5.3 解決方案 數(shù)據(jù)庫(kù)解決方案 實(shí)現(xiàn)配置模塊 實(shí)現(xiàn)數(shù)據(jù)訪問層 實(shí)現(xiàn)業(yè)務(wù)邏輯層 實(shí)現(xiàn)用戶界面 進(jìn)行安全性設(shè)置 帶有UrlMapping的友好UR

4、L5.4 小結(jié)第6章 民意調(diào)查6.1 提出問題6.2 設(shè)計(jì)方案 要實(shí)現(xiàn)的功能 處理多次投票 設(shè)計(jì)數(shù)據(jù)庫(kù)表 管理數(shù)據(jù)庫(kù)的存儲(chǔ)過程 設(shè)計(jì)配置模塊 設(shè)計(jì)數(shù)據(jù)訪問層 設(shè)計(jì)業(yè)務(wù)層 設(shè)計(jì)用戶界面6.2.9 PollBox用戶控件6.3 解決方案 數(shù)據(jù)庫(kù)部分的工作 實(shí)現(xiàn)配置模塊 實(shí)現(xiàn)數(shù)據(jù)訪問層 實(shí)現(xiàn)業(yè)務(wù)邏輯層 實(shí)現(xiàn)用戶界面6.4 小結(jié)第7章 郵件列表7.1 提出問題7.2 設(shè)計(jì)方案 關(guān)于垃圾郵件的聲明 創(chuàng)建和發(fā)送E-mail 處理服務(wù)器上的長(zhǎng)時(shí)間操作 設(shè)計(jì)數(shù)據(jù)庫(kù)表 存儲(chǔ)過程 設(shè)計(jì)配置模塊 設(shè)計(jì)數(shù)據(jù)訪問層 設(shè)計(jì)業(yè)務(wù)層 設(shè)計(jì)用戶界面7.3 解決方案 實(shí)現(xiàn)配置模塊 實(shí)現(xiàn)數(shù)據(jù)訪問層 實(shí)現(xiàn)業(yè)務(wù)邏輯層 實(shí)現(xiàn)用戶界面7.

5、4 小結(jié)第8章 論壇8.1 提出問題8.2 設(shè)計(jì)方案 設(shè)計(jì)數(shù)據(jù)庫(kù)表 存儲(chǔ)過程 設(shè)計(jì)配置模塊 設(shè)計(jì)數(shù)據(jù)訪問層 設(shè)計(jì)業(yè)務(wù)類 設(shè)計(jì)用戶界面8.3 解決方案 數(shù)據(jù)庫(kù)實(shí)現(xiàn) 實(shí)現(xiàn)數(shù)據(jù)訪問層 實(shí)現(xiàn)業(yè)務(wù)邏輯層 實(shí)現(xiàn)用戶界面8.4 小結(jié)第9章 電子商店9.1 提出問題9.2 設(shè)計(jì)方案 選擇一種在線付款方案 使用PayPal作為支付服務(wù) 設(shè)計(jì)數(shù)據(jù)庫(kù)表和存儲(chǔ)過程 設(shè)計(jì)配置模塊 設(shè)計(jì)數(shù)據(jù)訪問層 設(shè)計(jì)業(yè)務(wù)層 設(shè)計(jì)用戶界面9.3 解決方案 實(shí)現(xiàn)業(yè)務(wù)邏輯層 實(shí)現(xiàn)用戶界面9.4 小結(jié)第10章 個(gè)性化設(shè)置與Web Part10.1 提出問題10.2 設(shè)計(jì)方案 開發(fā)Web Part Web Part架構(gòu)內(nèi)置控件 配置Web Pa

6、rt架構(gòu) 總結(jié):設(shè)計(jì)解決方案10.3 解決方案 創(chuàng)建Web Part 修改模板頁(yè)面 允許進(jìn)行頁(yè)面級(jí)別的個(gè)性化設(shè)置10.4 小結(jié)第11章 網(wǎng)站本地化11.1 提出問題11.2 設(shè)計(jì)方案 回顧ASP.NET 1.x中的本地化11.2.2 ASP.NET 2.0中新的本地化功能 使用全局資源 使用頁(yè)面級(jí)資源 對(duì)更多的靜態(tài)內(nèi)容進(jìn)行本地化 設(shè)置當(dāng)前語言11.3 解決方案11.4 小結(jié)第12章 部署網(wǎng)站12.1 提出問題12.2 設(shè)計(jì)方案 在SQL Server 2005中部署數(shù)據(jù)庫(kù) 部署網(wǎng)站12.3 解決方案12.4 小結(jié)方案 12.4 小結(jié)第1章項(xiàng)目介紹TheBeerHouse 本章介紹的是在本書中要

7、開發(fā)的一個(gè)項(xiàng)目。將解釋該示例網(wǎng)站所涉及到的概念。在閱讀過程中,讀者應(yīng)當(dāng)意識(shí)到這是一種多功能的、數(shù)據(jù)驅(qū)動(dòng)的、基于內(nèi)容模式的網(wǎng)站,而且可以方便地修改該網(wǎng)站以滿足實(shí)際需求。雖然本書中會(huì)使用許多ASP.NET舊的功能,但重點(diǎn)還是介紹如何在實(shí)際網(wǎng)站開發(fā)過程中使用ASP.NET 2.0的強(qiáng)大功能。 本書的每一章都使用“提出問題一設(shè)計(jì)方案一解決方案”的方法進(jìn)行講述:“提出問題”部分提出每章所要完成的模塊的業(yè)務(wù)需求,“設(shè)計(jì)方案”部分開發(fā)符合這些需求的解決方案,“解決方案”部分編寫代碼來實(shí)現(xiàn)設(shè)計(jì)方案。與傳統(tǒng)的計(jì)算機(jī)書籍不一樣,本書并沒有重點(diǎn)介紹基本概念,而是著重展示如何應(yīng)用學(xué)到的知識(shí)來解決實(shí)際的業(yè)務(wù)需求。本書可

8、能并不適合初學(xué)者,如果您對(duì)網(wǎng)站開發(fā)的基本概念和ASP.NET(任何版本的ASP.NET)已經(jīng)有所了解,并已經(jīng)實(shí)踐過,而且您想學(xué)習(xí)ASP.NET 2.0中的新知識(shí),那么我們開始吧!1.1 提出問題在博洛尼亞(意大利的一個(gè)城市)有將近一半的人口是學(xué)生,包括許多留學(xué)生。由于年輕人很多,所以這里有很多酒吧和娛樂場(chǎng)所,能夠讓他們?cè)谕砩虾椭苣┮黄鸪鰜砘顒?dòng)。音樂會(huì)、聚會(huì)、表演秀等活動(dòng)經(jīng)常舉辦。為了具有競(jìng)爭(zhēng)力,每個(gè)酒吧必須找到一些其他酒吧所沒有的、能夠吸引潛在顧客的特色。要有競(jìng)爭(zhēng)力,營(yíng)銷也非常重要,我們的一個(gè)客戶希望在這一方面做得更強(qiáng)。該客戶原來一直使用傳統(tǒng)印刷廣告來宣傳她的酒吧TheBeerHouse(一個(gè)

9、虛構(gòu)名字),但現(xiàn)在想嘗試新的媒體方式創(chuàng)建一個(gè)令人興奮的網(wǎng)站。她認(rèn)為這很有用,因?yàn)轭櫩鸵坏┦煜ち怂木W(wǎng)站就可以去那里看最新活動(dòng)的報(bào)道;通過郵箱接收新聞郵件;可以瀏覽過去活動(dòng)的照片,對(duì)它們進(jìn)行排名;還能同網(wǎng)站的其他訪問者分享信息、建立聯(lián)系,而且日后他們還能在酒吧里當(dāng)面進(jìn)行交流。建立網(wǎng)站的目的就是吸引顧客,尤其是使目標(biāo)顧客習(xí)慣于通過網(wǎng)站來獲得新聞和活動(dòng)的信息。酒吧是典型的娛樂場(chǎng)所,擁有很多顧客,它可能要比傳統(tǒng)的酒店更需要這樣的網(wǎng)站。1.2設(shè)計(jì)方案每章的“設(shè)計(jì)方案”部分對(duì)該章提出的問題進(jìn)行討論,然后設(shè)計(jì)解決方案。這意味著需要記錄一系列業(yè)務(wù)需求、項(xiàng)目需要實(shí)現(xiàn)的功能、用于數(shù)據(jù)存儲(chǔ)的必要數(shù)據(jù)庫(kù)對(duì)象的設(shè)計(jì),以

10、及用于獲取數(shù)據(jù)、處理數(shù)據(jù)和向用戶展示數(shù)據(jù)的類的結(jié)構(gòu)。在項(xiàng)目的開始階段要考慮用戶有何需求,以及怎樣來處理這些需求,在時(shí)間和預(yù)算允許的條件下盡量擴(kuò)展需求,使用戶能在此基礎(chǔ)上獲得更多的功能。正如“提出問題”部分所述,在本書場(chǎng)景中,我們的客戶擁有一個(gè)酒吧,她希望建立一個(gè)網(wǎng)站來推廣她的酒吧,該網(wǎng)站上將提供最新活動(dòng)的預(yù)告信息、已結(jié)束活動(dòng)的報(bào)道等。有很多方法可以對(duì)這些設(shè)想進(jìn)行擴(kuò)展,這樣就可以創(chuàng)建一個(gè)內(nèi)容豐富的網(wǎng)站,這對(duì)酒吧主人和顧客(也可以是潛在顧客)都有好處。項(xiàng)目開始時(shí),我們先列出了當(dāng)今基于內(nèi)容的網(wǎng)站所應(yīng)具有的功能:·一個(gè)吸引人的用戶界面。外觀很重要,因?yàn)橛脩羰紫葧?huì)注意界面,然后才關(guān)注網(wǎng)站的功能

11、和服務(wù)。但用戶界面不能完全靠圖片解決問題,應(yīng)當(dāng)合理地組織網(wǎng)站上的信息,使用戶可以方便地獲得所需的信息。網(wǎng)站應(yīng)當(dāng)符合用戶的使用習(xí)慣,即用戶可以很方便地瀏覽,方便地進(jìn)行交互。要注意跨瀏覽器的兼容性,例如:要保證網(wǎng)站在不同的平臺(tái)上和瀏覽器中都可以正常顯示和操作。如果無法預(yù)知用戶會(huì)使用何種瀏覽器來訪問網(wǎng)站,那么這尤為重要。·一個(gè)成功的內(nèi)容網(wǎng)站會(huì)在它的用戶中有很好的聲望。忠誠(chéng)的用戶會(huì)經(jīng)常訪問網(wǎng)站來發(fā)帖子、參加投票或其他活動(dòng),正是他們才使得網(wǎng)站保持增長(zhǎng)。要為這些積極的會(huì)員創(chuàng)建一個(gè)有活力的社區(qū),需要把他們同其他普通會(huì)員區(qū)別開來。因此,網(wǎng)站需要一個(gè)注冊(cè)功能,作為身份認(rèn)證的一個(gè)基礎(chǔ)部分,該功能也將用于

12、授權(quán)以及限制訪問網(wǎng)站中的某些頁(yè)面。·網(wǎng)站需要不斷更新以保持活力,如果內(nèi)容一成不變,那么訪問者就會(huì)對(duì)該網(wǎng)站失去興趣而不再訪問了。一個(gè)酒吧的網(wǎng)站應(yīng)當(dāng)定期更新活動(dòng)、聚會(huì)和音樂會(huì)的預(yù)告信息,否則網(wǎng)站不會(huì)成功。試想用戶在瀏覽網(wǎng)站時(shí)看不到上次聚會(huì)時(shí)拍的照片會(huì)有何反應(yīng)?要實(shí)現(xiàn)內(nèi)容的不斷更新,就需要一些方法,能讓網(wǎng)站編輯人員方便地更新動(dòng)態(tài)內(nèi)容。而且,負(fù)責(zé)網(wǎng)站內(nèi)容更新的編輯人員很可能不是技術(shù)人員,因此應(yīng)當(dāng)創(chuàng)建一些簡(jiǎn)單的管理頁(yè)面,這樣非技術(shù)人員也可以通過這些頁(yè)面方便地對(duì)網(wǎng)站進(jìn)行內(nèi)容更新。·當(dāng)網(wǎng)站上有了新內(nèi)容之后,網(wǎng)站管理員應(yīng)當(dāng)想辦法來提醒用戶。并非所有的用戶每天都訪問該網(wǎng)站,因此管理員應(yīng)當(dāng)主動(dòng)

13、提示用戶有關(guān)近期的更新。如果用戶已經(jīng)在網(wǎng)站注冊(cè)過,并提供了Email地址,那么也可以通過郵件使他們獲得網(wǎng)站的更新以及其他內(nèi)容。當(dāng)然,還有很多其他的方法能夠提供這些信息,例如:提供真正簡(jiǎn)單的整合(Really Simple Syndication,RSS),這樣,用戶注冊(cè)后就可以使用RSS閱讀器自動(dòng)獲得新聞通知,無需每天訪問網(wǎng)站來獲得信息了。·像這樣的網(wǎng)站最適合進(jìn)行一些顧客問卷調(diào)查。例如:顧客在酒吧中最喜歡什么?他們喜歡什么牌子的啤酒?與朋友一起喝酒時(shí)是否想聽音樂或是否覺得酒吧太過于吵鬧等。建立一些用戶與網(wǎng)站之間的溝通是很重要的,如果能得到相當(dāng)數(shù)量的反饋信息,那么這些信息將引導(dǎo)管理者做

14、出正確的戰(zhàn)略決策和改變,從而提高經(jīng)營(yíng)狀況。·如果說用戶與網(wǎng)站之間的溝通是很重要的話,那么用戶與用戶之間的交流則更加重要,這是為用戶建立社區(qū)的主要目的。他們經(jīng)常訪問網(wǎng)站進(jìn)行聊天,并討論網(wǎng) 站上的新聞,針對(duì)即將舉行的活動(dòng)向其他用戶咨詢建議。這些都能為網(wǎng)站帶來更多的訪問量,讓網(wǎng)站無論在短期還是在長(zhǎng)期運(yùn)營(yíng)中都能獲得回報(bào)。·商店有了一定顧客基礎(chǔ)以后,店主就可以對(duì)它進(jìn)行擴(kuò)展來實(shí)現(xiàn)在線銷售。事實(shí)上,酒吧已經(jīng)為啤酒愛好者提供了一系列商品,像杯子、T恤、鑰匙鏈等。網(wǎng)站的訪問量高了,也是提高商品銷售的一個(gè)好辦法,因?yàn)轭櫩涂梢圆挥玫骄瓢删湍苜?gòu)買這些商品。如果用戶看到自己喜歡的商品可以對(duì)它進(jìn)行投票

15、排名,從而讓其他用戶知道自己對(duì)該商品的感受。在線商店應(yīng)當(dāng)能夠方便地由非技術(shù)人員進(jìn)行管理,因?yàn)楹芸赡苁窃摼瓢芍魅擞H自添加、修改商品信息和進(jìn)行定單管理的。因此,網(wǎng)站應(yīng)有一個(gè)操作簡(jiǎn)單明了的用戶界面,它能夠自動(dòng)完成盡量多的操作,并且引導(dǎo)用戶在整個(gè)過程中進(jìn)行操作。·由于網(wǎng)站上提供新聞、文章、商品列表、用戶討論等動(dòng)態(tài)內(nèi)容,因此可以想象網(wǎng)站主頁(yè)會(huì)變得很擁擠。太多的信息可能會(huì)造成閱讀困難,引起誤解。如果訪問者能夠根據(jù)自己的愛好親自構(gòu)建屬于自己的主頁(yè)那就再好不過了。他可能想看活動(dòng)預(yù)告而不關(guān)心在線商店,很好!我們將為他提供這樣的功能,他可以在自己的主頁(yè)上對(duì)內(nèi)容進(jìn)行添加和刪除,也可以將內(nèi)容進(jìn)行移動(dòng),使內(nèi)容

16、重新排列,這樣瀏覽者閱讀起來會(huì)更舒服并且容易獲得有用的信息。許多大型網(wǎng)站都提供了這種自定義功能,像Windows Live及My MSN都是非常好的示例,自定義功能能夠幫助網(wǎng)站吸引更多的用戶進(jìn)行注冊(cè)。·前面已經(jīng)提到,酒吧的客人會(huì)來自很多不同的國(guó)家,我們希望不同國(guó)家的人所訪問到的網(wǎng)站是一致的,因此,網(wǎng)站應(yīng)當(dāng)全部或者部分地翻譯成多種語言,讓大部分用戶都能容易理解。不僅文本需要翻譯,像日期格式和數(shù)字格式這樣的信息也應(yīng)當(dāng)根據(jù)用戶的本地設(shè)置進(jìn)行顯示,這樣就不會(huì)有人把即將舉行的聚會(huì)或者活動(dòng)的時(shí)間看錯(cuò)。綜上所述,TheBeerHouse網(wǎng)站將擁有當(dāng)今內(nèi)容網(wǎng)站的全部功能,包括動(dòng)態(tài)文章和新聞、問卷調(diào)查

17、、論壇、郵件列表、RSS、在線購(gòu)物、個(gè)性化主頁(yè)以及內(nèi)容本地化。通過構(gòu)建示例網(wǎng)站,可以學(xué)習(xí)構(gòu)建當(dāng)今大多數(shù)內(nèi)容網(wǎng)站和商務(wù)網(wǎng)站所包含的主要功能,在將來開發(fā)網(wǎng)站時(shí)會(huì)用到它們。1.3解決方案每章的“解決方案”部分包含了設(shè)計(jì)步驟和實(shí)際代碼,用于實(shí)現(xiàn)前面兩個(gè)部分中所提出的功能、需求以及設(shè)計(jì)。下面概述以后各章所要講述的內(nèi)容。 在第2章中,將實(shí)現(xiàn)網(wǎng)站的設(shè)計(jì)、圖形,以及布局。通過使用Master PageASP.NET2.0中的一個(gè)新功能,能夠讓布局在網(wǎng)站的所有頁(yè)面之間共享。還可以使用“主題”ASENET 2.0的另外一個(gè)新功能,為Master Page創(chuàng)建一系列不同的外觀。這樣就可以創(chuàng)建一種機(jī)制使訪問者可以從下

18、拉列表中選擇自己喜歡的主題,根據(jù)自己的喜好來改變網(wǎng)站的色彩和外觀,甚至能夠避免視覺障礙。最后通過新的web.sitemap文件以及Menu和SiteMapPath控件來創(chuàng)建一個(gè)靈活且易于維護(hù)的導(dǎo)航系統(tǒng)。第3章將為構(gòu)建一個(gè)靈活的、容易配置的功能網(wǎng)站打基礎(chǔ)。首先,需要一個(gè)插入式的數(shù)據(jù)訪問層(Data Access Layer,DAL),DAL可以支持任何類型的數(shù)據(jù)存儲(chǔ),有良好的擴(kuò)展性,在高使用量中有很好的表現(xiàn)。然后在DAL的上面構(gòu)建一個(gè)業(yè)務(wù)邏輯層,使得數(shù)據(jù)以面向?qū)ο蟮姆绞秸故?。邏輯層還包含了所必需的驗(yàn)證邏輯、事務(wù)管理、事件曰志以及高速緩存。最后,介紹用戶界面(UI)和表示層,它們利用新的GridV

19、iew、DetailsView和FormView控件,并結(jié)合ObjectDataSource可以快速生成功能強(qiáng)大且由數(shù)據(jù)驅(qū)動(dòng)的復(fù)雜頁(yè)面。在第4章中,將把ASP.NET 2.0中新的成員功能整合到網(wǎng)站中,以生成用戶注冊(cè)表單,并且支持用戶的身份驗(yàn)證和授權(quán)。本章將介紹新的Profile模塊,它允許定義用戶級(jí)別的屬性,該屬性的值可以持久保存。這與傳統(tǒng)的Session狀態(tài)變量有很大的區(qū)別,Session狀態(tài)變量只存在于用戶瀏覽網(wǎng)站期間。我們將要構(gòu)建一個(gè)完整的管理模塊,它允許管理員查看成員列表,限制那些在網(wǎng)站上有惡劣行為的成員,查看和編輯每個(gè)用戶的詳細(xì)資料。在第5章中,將構(gòu)建一種內(nèi)容管理系統(tǒng),這個(gè)模塊為管

20、理員提供了一個(gè)直觀的界面來管理網(wǎng)站中的文章,非技術(shù)用戶也可以使用它。該模塊內(nèi)置了一個(gè)成員系統(tǒng)來確保模塊只對(duì)有權(quán)限的人員開放,并跟蹤文章作者的最新動(dòng)態(tài)。該模塊可以對(duì)全部分類或指定分類中的新內(nèi)容進(jìn)行匯集而發(fā)布一個(gè)RSS源,同時(shí)還支持排名和評(píng)論等其他許多功能。這些功能很強(qiáng)大,網(wǎng)站編輯人員只要事先準(zhǔn)備好格式豐富的內(nèi)容,并且設(shè)置好內(nèi)容自動(dòng)發(fā)布和刪除的時(shí)間,網(wǎng)站就會(huì)自動(dòng)完成更新,這樣網(wǎng)站的更新就變得非常簡(jiǎn)單,只需要很少的操作和時(shí)間。本章最后將描述新的GridView、DetailsView和ObjectDataSource控件,通過使用這些控件,可以將面向?qū)ο髽I(yè)務(wù)類中的數(shù)據(jù)同用戶界面進(jìn)行綁定,業(yè)務(wù)類所包含

21、的數(shù)據(jù)來自數(shù)據(jù)訪問層。在第6章中,將討論如何在網(wǎng)站上創(chuàng)建和管理調(diào)查問卷。此模塊提供了一個(gè)管理控制臺(tái),用于通過Web瀏覽器來管理投票。還提供了一個(gè)用戶控件,只需要幾行代碼就可以把一個(gè)調(diào)查問卷插入到任何頁(yè)面中,同時(shí)還包括了一個(gè)歷史頁(yè)面,可以在該頁(yè)面上查看所有的歷史投票記錄。在第7章中,將為網(wǎng)站增加一個(gè)完整的郵件列表模塊,用于向那些注冊(cè)了詳細(xì)個(gè)人資料的用戶發(fā)送新聞郵件。郵件是通過后臺(tái)線程發(fā)送的,沒有使用處理頁(yè)面請(qǐng)求的主線程,這樣頁(yè)面不會(huì)產(chǎn)生超時(shí),更重要的是,網(wǎng)站編輯人員不會(huì)碰到那種好幾分鐘看到的都是空白頁(yè)面的情況。使用異步JavaScript及XML編程技術(shù)(Asynchronous JavaScr

22、ipt and XMLProgramming,AJAX)可以實(shí)現(xiàn)頁(yè)面部分更新,提供新聞的實(shí)時(shí)更新。用戶能夠在一個(gè)歸檔頁(yè)面中看到過去的新聞郵件列表。要實(shí)現(xiàn)所有這些功能,需要使用一些ASENET 2.0的高級(jí)功能,例如多線程編程、新的腳本回調(diào)功能以及新的郵件發(fā)送類。在第8章中,將創(chuàng)建一個(gè)論壇系統(tǒng),該系統(tǒng)支持多個(gè)子論壇,有合適的可選項(xiàng),可以對(duì)主題和回復(fù)進(jìn)行分頁(yè)列表顯示,可以用不同方式進(jìn)行排序,并且支持標(biāo)準(zhǔn)RSS,可以配置用戶排名,支持簽名檔、引用以及當(dāng)今大多數(shù)論壇的主要功能。該論壇系統(tǒng)還提供了完整的管理功能(刪除、編輯、批準(zhǔn)、移動(dòng)、關(guān)閉主題和帖子)。在第9章中,將為網(wǎng)站添加一個(gè)在線商店。它具有在線商

23、店所必要的功能,包括完整的商品分類和定單管理系統(tǒng)、購(gòu)物車、使用信用卡在線支付的功能、商品排名、商品庫(kù)存狀態(tài)、使用文本和圖片對(duì)商品進(jìn)行描述、配置送貨方式、查看定單狀態(tài)等。很榮幸能有機(jī)會(huì)為本書作序,而本書的作者又是一個(gè)與我并肩工作的摯友,這不僅是一種榮譽(yù),還是一種極大的快樂!作為讀者,您可能急于去閱讀隨后的章節(jié),而對(duì)我是在何時(shí)以及如何認(rèn)識(shí)Marco的可能不感興趣,但我相信這個(gè)故事還是值得一聽。在20世紀(jì)90年代后期,我開始建造網(wǎng)站,并且迅速受到VB擁護(hù)者的歡迎,之后的幾個(gè)月,Marco開始把他的文章用E-mail發(fā)給我,很快我就清楚地意識(shí)到,他是一個(gè)很聰明的程序員,具有把經(jīng)驗(yàn)變成文字的杰出天賦。幾

24、年之后,我決定寫一個(gè)VB6的商業(yè)插件,并且尋求Marco的幫助。在幾個(gè)月內(nèi),我們發(fā)布了VBMaximizer,VBMaximizer后來被Visual Basic Programmers Journal的讀者評(píng)為最具生產(chǎn)力的工具之一。這個(gè)故事中最引人注目的細(xì)節(jié)是Marco和我是通過E-mail來工作的,沒有進(jìn)行過電話交流。我從來不用解釋我需要什么,難以置信的是,我從他那兒得到的代碼第一次測(cè)試就幾乎是完美的。那時(shí),我不知道Marco僅僅20多歲,否則,我對(duì)他一定早有印象了。我真正見到Marco是在幾年之后,那時(shí)我和他已經(jīng)共同開發(fā)了好幾個(gè)軟件項(xiàng)目。我不斷地驚訝于他做每件事時(shí)所展現(xiàn)出的職業(yè)水準(zhǔn),不論

25、是對(duì)于一個(gè)程序、一個(gè)會(huì)議還是一篇文章或者整本書。Marco是我認(rèn)識(shí)的人中少數(shù)幾個(gè)能真正不計(jì)時(shí)間來完成一項(xiàng)任務(wù)的人,他真正感到自豪的是結(jié)果。您閱讀的這本書也是讓他感到自豪的作品之一。正如作者在本書前言中所說的那樣,本書與您在書店中看到的大部分書是不同的,那些都是參考類的書籍,對(duì)ASP.NET 2.0或者.NET Framework的細(xì)節(jié)很少剖析,大多數(shù)都是給出了一個(gè)簡(jiǎn)短的列表,闡述每個(gè)功能。我寫過了許多有關(guān)這樣的參考書,所以對(duì)此很熟悉。Marco在本書中使用了一種本質(zhì)上不同的方法:他解釋了如何將ASP.NET 2.0的所有功能聚集起來,產(chǎn)生像杠桿一樣的力量去設(shè)計(jì)開發(fā)完全意義上的Web網(wǎng)站。不要被

26、TheBeerHouse 網(wǎng)站迷惑了,那只是給假想的客戶提供的假想網(wǎng)站。如果說示例網(wǎng)站和真實(shí)網(wǎng)站之間主要的區(qū)別在于其可執(zhí)行性、安全性、健壯性、可測(cè)性和對(duì)您所渴望細(xì)節(jié)的關(guān)注程度,那么Marco 設(shè)計(jì)的TheBeerHouse網(wǎng)站比我最近見過的大多數(shù)真實(shí)網(wǎng)站還要真實(shí)。實(shí)際上,與大多數(shù)網(wǎng)站的作者不同,Marco能將所有的時(shí)間用來實(shí)現(xiàn)一些功能和修復(fù)他所遇到的bug。并且他也不同于大多數(shù)示例程序的編寫者,他從來不會(huì)將開發(fā)人員在日常開發(fā)中碰到的問題忽略掉。在第5章的文章/新聞管理模塊和第9章的電子商務(wù)模塊中,他花費(fèi)的時(shí)間比開發(fā)其他模塊所用的時(shí)間多得多。經(jīng)過不懈的努力,這兩個(gè)模塊的質(zhì)量遠(yuǎn)遠(yuǎn)超過了普通的演示程

27、序所應(yīng)有的期望,是目前ASP.NET 2.0功能演示程序中性能最好的模塊(包括Microsoft的Starter Kits在內(nèi))。從教學(xué)的角度來看,本書的最大價(jià)值在于它是以開發(fā)階段所采用的設(shè)計(jì)實(shí)現(xiàn)方法為基礎(chǔ)的。實(shí)際上,Marco所做的工作遠(yuǎn)比剛才介紹的要多,他羅列了所有選擇贊成與反對(duì)的理由,并針對(duì)每個(gè)問題解釋了他是如何努力尋找完美解決方案的。他就像坐在您身旁的一個(gè)專家,能明白您的心思,在您犯錯(cuò)誤之前幫您改掉錯(cuò)誤。Francesco BalenaCode Architects Srl的合伙創(chuàng)始人親愛的讀者,感謝您購(gòu)買這本書,歡迎閱讀基于ASP.NET 2.0的新版的ASP.NET網(wǎng)站開發(fā)全程解析

28、。因?yàn)榭释幸槐緯軌蚪淌谌绾蝿?chuàng)建真正的Web網(wǎng)站,所以在2001年我萌生了寫書的想法,當(dāng)時(shí)是ASP.NET 1.0。本書第1版在2002年出版,幸運(yùn)的是它很成功,我相信這歸因于當(dāng)時(shí)市場(chǎng)上有關(guān)ASP.NET的書大多數(shù)都是參考類型的,這些書介紹每個(gè)單獨(dú)的控件和它們的屬性及用法,并且提供的示例都是用單一頁(yè)面演示怎樣使用一個(gè)控件。這類書的普遍缺陷是沒有講授如何整合ASP.NET所有的功能和控件來構(gòu)建一個(gè)功能豐富的獨(dú)立網(wǎng)站,而這正是讀者在工作中經(jīng)常需要做的。從一個(gè)簡(jiǎn)單的示例中學(xué)會(huì)設(shè)計(jì)實(shí)現(xiàn)一個(gè)真正的Web網(wǎng)站是很困難的,所以我認(rèn)為本書對(duì)開發(fā)人員解決工作中的實(shí)際問題是很有幫助的。這本新版的書經(jīng)過了重新編寫

29、,盡可能地包括了ASP.NET 2.0的全部新功能。我希望本書在以下方面能做得比較好:開發(fā)的項(xiàng)目更加完整(例如有一個(gè)電子商務(wù)模塊)和更專業(yè),每一章都提供足夠的ASP.NET 2.0背景資料,即便您沒有使用過ASP.NET 2.0,也可以輕松地閱讀,這些是在第1版中沒有考慮到的。最重要的是本書的目的是描述、設(shè)計(jì)和實(shí)現(xiàn)一個(gè)網(wǎng)站,它或許與您正在開發(fā)的或者不久將要開發(fā)的網(wǎng)站很相似,同時(shí)還對(duì)功能強(qiáng)大的ASP.NET 2.0 Framework提供的許多新功能進(jìn)行了介紹。本書中并沒有為了使解決方案變得既簡(jiǎn)單又簡(jiǎn)短,而回避那些比較難的問題。相反,我盡力向您解釋了在開發(fā)Web網(wǎng)站時(shí)會(huì)遇到的一些典型問題,并給這

30、些問題提供了一個(gè)或多個(gè)解決方案。結(jié)果是實(shí)現(xiàn)了一個(gè)Web網(wǎng)站,展示了一個(gè)用戶可選擇主題的設(shè)計(jì)、成員資格系統(tǒng)、用于發(fā)布文章和圖片的內(nèi)容管理系統(tǒng)、民意調(diào)查系統(tǒng)、郵件列表、論壇、一個(gè)支持信用卡實(shí)時(shí)支付的電子商店、個(gè)性化主頁(yè)和本地化(參考第1章中的詳細(xì)介紹)。我希望您能喜歡本書,它能為您加速開發(fā)下一個(gè)項(xiàng)目提供向?qū)В怪哂懈玫目煽啃?、可擴(kuò)展性和良好的組織性??梢栽诰€瀏覽Web網(wǎng)站:我的博客網(wǎng)址為本書主要內(nèi)容本書從基礎(chǔ)架構(gòu)開始,逐步實(shí)現(xiàn)了一系列模塊的設(shè)計(jì)和解決方案,最終完成了一個(gè)大型的示例網(wǎng)站。本書的結(jié)構(gòu)和書中所開發(fā)的完整項(xiàng)目,使得“全程解析”系列圖書能夠獨(dú)立于Wrox其他系列圖書之外。本書將帶領(lǐng)您通過

31、一個(gè)完整的ASP.NET 2.0 Web網(wǎng)站開發(fā)過程,掌握如何開發(fā)當(dāng)今流行的具備多期望功能的內(nèi)容網(wǎng)站和電子商務(wù)網(wǎng)站。這些多期望的功能主要包括:       用戶注冊(cè)、個(gè)性化和主題       新聞和事件,及其分類管理       調(diào)查問卷       郵件列表       論壇  

32、;     有購(gòu)物車和定單管理功能的電子商店       本地化從管理的角度來看,還包含了下列功能和問題:       完全在線后臺(tái)管理,通過直觀的用戶界面來處理所有的數(shù)據(jù)       網(wǎng)站部署在實(shí)現(xiàn)每一個(gè)模塊的同時(shí),對(duì)ASP.NET 2.0中的新功能進(jìn)行了講解,這些功能如下:       Master Page

33、60;      主題       個(gè)性化和Web Part       會(huì)員和個(gè)人資料       個(gè)性化       諸如GridView、DetailsView、FormView、Wizard、MultiView等新的服務(wù)器端用戶界面控件、新的xxxDataSource和導(dǎo)航控件  

34、     新的編譯和部署模式       新的網(wǎng)站監(jiān)測(cè)架構(gòu),以及異常處理架構(gòu)       新的ADO.NET 2.0功能(如用數(shù)據(jù)庫(kù)依賴進(jìn)行緩存)       易于進(jìn)行分布式事務(wù)管理的新類本書不僅包含了ASP.NET 2.0的新功能,還示范了如何把這些功能整合在一起,去開發(fā)一個(gè)功能完善的網(wǎng)站。全部設(shè)計(jì)決策都是經(jīng)過解釋和討論的,包括數(shù)據(jù)庫(kù)設(shè)計(jì)、數(shù)據(jù)訪問和業(yè)務(wù)邏輯組件設(shè)計(jì),以及整個(gè)

35、網(wǎng)站的構(gòu)架。在本書結(jié)束時(shí),您將學(xué)會(huì)怎樣開發(fā)一個(gè)可靠的、具有一定規(guī)模且可擴(kuò)展的Web網(wǎng)站。本書的結(jié)構(gòu)安排本書從開始到結(jié)束構(gòu)建了一個(gè)完整的項(xiàng)目,在這個(gè)項(xiàng)目中,每一章(除了第1章)都是一個(gè)獨(dú)立的單元,并且由以下三部分構(gòu)成。       提出問題:在這一章中您需要什么?要在網(wǎng)站上加入什么樣的功能,它們?yōu)槭裁粗匾??需要考慮一些限制和其他因素嗎?       設(shè)計(jì)方案:?jiǎn)栴}提出之后,這部分描述解決這些問題需要用到什么功能。對(duì)于解決方案如何工作,或者解決問題的過程中要用到的內(nèi)容,這部分將給

36、出一個(gè)總的想法。       解決方案:在經(jīng)過提出問題和設(shè)計(jì)方案之后,我們將討論和生成代碼以及其他需要的內(nèi)容,用于設(shè)計(jì)和解決在本章開始時(shí)所提出的問題。在這部分,您可以馬上創(chuàng)建代碼,進(jìn)行練習(xí)。本書旨在讓您從頭到尾進(jìn)行閱讀,這樣就能夠從無到有地生成一個(gè)隨時(shí)可以發(fā)布的、完整的、可部署的Web網(wǎng)站。此外,本書遵循一個(gè)模塊化的結(jié)構(gòu),每一章都是一個(gè)獨(dú)立單元,如有必要的話,可以將某一章中實(shí)現(xiàn)的功能提取出來用在其他Web網(wǎng)站上。本書讀者對(duì)象首先聲明,這不是一本為初學(xué)者或者從沒接觸過ASP.NET和.NET Framework的開發(fā)者編寫的書。本書教給

37、讀者如何去開發(fā)一個(gè)實(shí)際的Web網(wǎng)站,從開始進(jìn)行設(shè)計(jì)直到最后進(jìn)行部署,但本書并沒有解釋每一個(gè)技術(shù)細(xì)節(jié),而是專注于設(shè)計(jì)和編寫實(shí)際的解決方法。為了能更好地閱讀本書,您應(yīng)該具有ASP.NET 1.x的工作經(jīng)驗(yàn),即使沒用過其高級(jí)功能。學(xué)習(xí)本書,不要求您了解ASP.NET 2.0,因?yàn)樵诿空轮心鷮⒂玫叫乱氲目丶凸δ埽緯峁┝俗銐虻谋尘百Y料去實(shí)現(xiàn)解決方案。如果您想進(jìn)一步學(xué)習(xí)和完全掌握某個(gè)控件,那么可以參考MSDN的官方資料或其他參考書,如由清華大學(xué)出版社引進(jìn)并已出版的ASP.NET 2.0高級(jí)編程(特別版)。使用本書的要求如果您想在自己的計(jì)算機(jī)上跟隨本書建立項(xiàng)目,或運(yùn)行下載的現(xiàn)成項(xiàng)目,您的計(jì)算機(jī)需要以

38、下配置:       Windows XP Professional、Windows Server 2003,或者Windows 2000 Professional 或Server。       Visual Studio 2005的任何一個(gè)版本,需要能夠運(yùn)行C#,包括免費(fèi)的Visual Web Developer 2005 Expression Edition。至少應(yīng)該配備Visual Studio 2005 Standard。即使您根本沒有使用微軟的編輯器(有可能您更喜歡

39、Macromedia Dreamweaver MX或是其他文本編輯器),也能夠隨著本書運(yùn)行示例項(xiàng)目,因?yàn)橛行┱鹿?jié)在“設(shè)計(jì)方案”部分向Visual Studio設(shè)計(jì)人員進(jìn)行了介紹和演示,而在“解決方案”部分沒有用它來編寫代碼。       可能的話請(qǐng)使用SQL Server 2005 Standard Edition,在最后一章中將使用到它。源代碼運(yùn)行本書的示例時(shí),您可以選擇手工輸入代碼,也可以使用本書附帶的源代碼文件。本書源代碼可從或提示:由于許多書的標(biāo)題相似,因此最簡(jiǎn)單的方法是通過ISBN找到該書。本書的EISBN是0-7645-8

40、464-2(在2007年7月新的ISBN 13位數(shù)字編號(hào)施行后,已變?yōu)?78-0-7645-8464-0)。下載代碼之后,用您喜歡的解壓縮工具進(jìn)行解壓縮即可。您還可以登錄Wrox的代碼下載頁(yè)面勘誤表盡管我們已經(jīng)盡了各種努力來保證文章或代碼不出現(xiàn)錯(cuò)誤,但是錯(cuò)誤總是難免的,如果您在本書中找到了錯(cuò)誤,例如拼寫錯(cuò)誤或代碼錯(cuò)誤,請(qǐng)發(fā)送郵件至wkservice,我們將不勝感激。我們將檢查您的信息,如果是正確的,就會(huì)在本書的后續(xù)版本中采用。通過這種方式,可以讓其他讀者避免受挫,當(dāng)然,這還有助于提供更高質(zhì)量的信息。要在網(wǎng)站上找到本書的英文勘誤表,可以登錄,通過Search工具框或書名列表查找本書,然后在本書的

41、信息頁(yè)面上,單擊Book Errata鏈接。在這個(gè)頁(yè)面上,可以查看已經(jīng)提交并通過編輯檢查的所有勘誤。此外,在 booklist.shtml頁(yè)面上還提供了完整的書籍列表以及相關(guān)的勘誤表鏈接。p2p. P2P論壇()是為作者和同行之間的討論而設(shè)立的。該論壇是一個(gè)基于Web的系統(tǒng),可用于粘貼與Web圖書和技術(shù)相關(guān)的信息,與其他讀者和技術(shù)用戶交流。該論壇提供了訂閱功能,在論壇上出現(xiàn)新貼子時(shí),可以接收到自己感興趣的電子郵件。Wrox作者、編輯、其他業(yè)界專家和讀者都會(huì)出現(xiàn)在這些論壇上。在上,有許多不同的論壇,您可以從許多不同的列表中獲得幫助,這不僅對(duì)閱讀本書有所幫助,還可以在開發(fā)應(yīng)用程序時(shí)獲得幫助。要加入

42、該論壇,可以遵循下面的步驟:(1) 進(jìn)入并單擊Register鏈接。(2) 閱讀使用條款并單擊Agree按鈕。(3) 填寫表單中要求填寫的信息,以及其他可選信息,然后單擊Submit按鈕,即可加入論壇。您將接收到一封確認(rèn)電子郵件,其中列出了如何驗(yàn)證您的賬戶和加入論壇的完整步驟。提示:不加入P2P論壇也可瀏覽其中的信息,但要發(fā)布新消息,則必須注冊(cè)。在加入該論壇后,您就可發(fā)布新消息并回復(fù)其他人的文章。可在任意時(shí)刻通過Web閱讀其中的信息。如果需要,也可通過電子郵件訂閱論壇中特定主題的新信息,為此,請(qǐng)?jiān)谡搲斜碇羞x中特定論壇名稱所對(duì)應(yīng)的Subscribe to this Forum圖標(biāo)。要更詳細(xì)地了

43、解如何使用Wrox P2P論壇,請(qǐng)閱讀P2P FAQ,其中列出了論壇軟件如何工作等眾多常見的問題。單擊P2P論壇中任意頁(yè)面的FAQ鏈接即可閱讀相關(guān)內(nèi)容。本章介紹的是我們將在本書中要開發(fā)的一個(gè)項(xiàng)目。將解釋該示例網(wǎng)站所涉及到的概念。在閱讀過程中,讀者應(yīng)當(dāng)意識(shí)到這是一種多功能的、數(shù)據(jù)驅(qū)動(dòng)的、基于內(nèi)容模式的網(wǎng)站,而且可以方便地修改該網(wǎng)站以滿足實(shí)際需求。雖然本書中會(huì)使用許多ASP.NET舊的功能,但重點(diǎn)還是介紹如何在實(shí)際網(wǎng)站開發(fā)過程中使用ASP.NET 2.0的強(qiáng)大功能。本書的每一章都使用“提出問題設(shè)計(jì)方案解決方案”的方法進(jìn)行講述:“提出問題”部分提出每章所要完成的模塊的業(yè)務(wù)需求,“設(shè)計(jì)方案”部分開發(fā)符

44、合這些需求的解決方案,“解決方案”部分編寫代碼來實(shí)現(xiàn)設(shè)計(jì)方案。與傳統(tǒng)的計(jì)算機(jī)書籍不一樣,本書并沒有重點(diǎn)介紹基本概念,而是著重展示如何應(yīng)用學(xué)到的知識(shí)來解決實(shí)際的業(yè)務(wù)需求。本書可能并不適合初學(xué)者,如果您對(duì)網(wǎng)站開發(fā)的基本概念和ASP.NET(任何版本的ASP.NET)已經(jīng)有所了解,并已經(jīng)實(shí)踐過,而且您想學(xué)習(xí)ASP.NET 2.0中的新知識(shí),那么我們開始吧!1.1  提出問題在博洛尼亞(意大利的一個(gè)城市)有將近一半的人口是學(xué)生,包括許多留學(xué)生。由于年輕人很多,所以這里有很多酒吧和娛樂場(chǎng)所,能夠讓他們?cè)谕砩虾椭苣┮黄鸪鰜砘顒?dòng)。音樂會(huì)、聚會(huì)、表演秀等活動(dòng)經(jīng)常舉辦。為了具有競(jìng)爭(zhēng)力,每個(gè)酒吧必須找到

45、一些其他酒吧所沒有的、能夠吸引潛在顧客的特色。要有競(jìng)爭(zhēng)力,營(yíng)銷也非常重要,我們的一個(gè)客戶希望在這一方面做得更強(qiáng)。該客戶原來一直使用傳統(tǒng)印刷廣告來宣傳她的酒吧TheBeerHouse (一個(gè)虛構(gòu)名字),但現(xiàn)在想嘗試新的媒體方式創(chuàng)建一個(gè)令人興奮的網(wǎng)站。她認(rèn)為這很有用,因?yàn)轭櫩鸵坏┦煜ち怂木W(wǎng)站就可以去那里看最新活動(dòng)的報(bào)道;通過郵箱接收新聞郵件;可以瀏覽過去活動(dòng)的照片,對(duì)它們進(jìn)行排名;還能同網(wǎng)站的其他訪問者分享信息、建立聯(lián)系,而且日后他們還能在酒吧里當(dāng)面進(jìn)行交流。建立網(wǎng)站的目的就是吸引顧客,尤其是使目標(biāo)顧客習(xí)慣于通過網(wǎng)站來獲得新聞和活動(dòng)的信息。酒吧是典型的娛樂場(chǎng)所,擁有很多顧客,它可能要比

46、傳統(tǒng)的酒店更需要這樣的網(wǎng)站。1.2  設(shè)計(jì)方案每章的“設(shè)計(jì)方案”部分對(duì)該章提出的問題進(jìn)行討論,然后設(shè)計(jì)解決方案。這意味著需要記錄一系列業(yè)務(wù)需求、項(xiàng)目需要實(shí)現(xiàn)的功能、用于數(shù)據(jù)存儲(chǔ)的必要數(shù)據(jù)庫(kù)對(duì)象的設(shè)計(jì),以及用于獲取數(shù)據(jù)、處理數(shù)據(jù)和向用戶展示數(shù)據(jù)的類的結(jié)構(gòu)。在項(xiàng)目的開始階段要考慮用戶有何需求,以及怎樣來處理這些需求,在時(shí)間和預(yù)算允許的條件下盡量擴(kuò)展需求,使用戶能在此基礎(chǔ)上獲得更多的功能。正如“提出問題”部分所述,在本書場(chǎng)景中,我們的客戶擁有一個(gè)酒吧,她希望建立一個(gè)網(wǎng)站來推廣她的酒吧,該網(wǎng)站上將提供最新活動(dòng)的預(yù)告信息、已結(jié)束活動(dòng)的報(bào)道等。有很多方法可以對(duì)這些設(shè)想進(jìn)行擴(kuò)展,這樣就可以創(chuàng)建一個(gè)

47、內(nèi)容豐富的網(wǎng)站,這對(duì)酒吧主人和顧客(也可以是潛在顧客)都有好處。項(xiàng)目開始時(shí),我們先列出了當(dāng)今基于內(nèi)容的網(wǎng)站所應(yīng)具有的功能:l       一個(gè)吸引人的用戶界面。外觀很重要,因?yàn)橛脩羰紫葧?huì)注意界面,然后才關(guān)注網(wǎng)站的功能和服務(wù)。但用戶界面不能完全靠圖片解決問題,應(yīng)當(dāng)合理地組織網(wǎng)站上的信息,使用戶可以方便地獲得所需的信息。網(wǎng)站應(yīng)當(dāng)符合用戶的使用習(xí)慣,即用戶可以很方便地瀏覽,方便地進(jìn)行交互。要注意跨瀏覽器的兼容性,例如:要保證網(wǎng)站在不同的平臺(tái)上和瀏覽器中都可以正常顯示和操作。如果無法預(yù)知用戶會(huì)使用何種瀏覽器來訪問網(wǎng)站,那么這尤為重要

48、。l       一個(gè)成功的內(nèi)容網(wǎng)站會(huì)在它的用戶中有很好的聲望。忠誠(chéng)的用戶會(huì)經(jīng)常訪問網(wǎng)站來發(fā)帖子、參加投票或其他活動(dòng),正是他們才使得網(wǎng)站保持增長(zhǎng)。要為這些積極的會(huì)員創(chuàng)建一個(gè)有活力的社區(qū),需要把他們同其他普通會(huì)員區(qū)別開來。因此,網(wǎng)站需要一個(gè)注冊(cè)功能,作為身份認(rèn)證的一個(gè)基礎(chǔ)部分,該功能也將用于授權(quán)以及限制訪問網(wǎng)站中的某些頁(yè)面。l       網(wǎng)站需要不斷更新以保持活力,如果內(nèi)容一成不變,那么訪問者就會(huì)對(duì)該網(wǎng)站失去興趣而不再訪問了。一個(gè)酒吧的網(wǎng)站應(yīng)當(dāng)定期更新活動(dòng)

49、、聚會(huì)和音樂會(huì)的預(yù)告信息,否則網(wǎng)站不會(huì)成功。試想用戶在瀏覽網(wǎng)站時(shí)看不到上次聚會(huì)時(shí)拍的照片會(huì)有何反應(yīng)?要實(shí)現(xiàn)內(nèi)容的不斷更新,就需要一些方法,能讓網(wǎng)站編輯人員方便地更新動(dòng)態(tài)內(nèi)容。而且,負(fù)責(zé)網(wǎng)站內(nèi)容更新的編輯人員很可能不是技術(shù)人員,因此應(yīng)當(dāng)創(chuàng)建一些簡(jiǎn)單的管理頁(yè)面,這樣非技術(shù)人員也可以通過這些頁(yè)面方便地對(duì)網(wǎng)站進(jìn)行內(nèi)容更新。l       當(dāng)網(wǎng)站上有了新內(nèi)容之后,網(wǎng)站管理員應(yīng)當(dāng)想辦法來提醒用戶。并非所有的用戶每天都訪問該網(wǎng)站,因此管理員應(yīng)當(dāng)主動(dòng)提示用戶有關(guān)近期的更新。如果用戶已經(jīng)在網(wǎng)站注冊(cè)過,并提供了Email地址,那么也可以通過郵件

50、使他們獲得網(wǎng)站的更新以及其他內(nèi)容。當(dāng)然,還有很多其他的方法能夠提供這些信息,例如:提供真正簡(jiǎn)單的整合(Really Simple Syndication,RSS),這樣,用戶注冊(cè)后就可以使用RSS閱讀器自動(dòng)獲得新聞通知,無需每天訪問網(wǎng)站來獲得信息了。l       像這樣的網(wǎng)站最適合進(jìn)行一些顧客問卷調(diào)查。例如:顧客在酒吧中最喜歡什么?他們喜歡什么牌子的啤酒?與朋友一起喝酒時(shí)是否想聽音樂或是否覺得酒吧太過于吵鬧等。建立一些用戶與網(wǎng)站之間的溝通是很重要的,如果能得到相當(dāng)數(shù)量的反饋信息,那么這些信息將引導(dǎo)管理者做出正確的戰(zhàn)略決策和

51、改變,從而提高經(jīng)營(yíng)狀況。l       如果說用戶與網(wǎng)站之間的溝通是很重要的話,那么用戶與用戶之間的交流則更加重要,這是為用戶建立社區(qū)的主要目的。他們經(jīng)常訪問網(wǎng)站進(jìn)行聊天,并討論網(wǎng)站上的新聞,針對(duì)即將舉行的活動(dòng)向其他用戶咨詢建議。這些都能為網(wǎng)站帶來更多的訪問量,讓網(wǎng)站無論在短期還是在長(zhǎng)期運(yùn)營(yíng)中都能獲得回報(bào)。l       商店有了一定顧客基礎(chǔ)以后,店主就可以對(duì)它進(jìn)行擴(kuò)展來實(shí)現(xiàn)在線銷售。事實(shí)上,酒吧已經(jīng)為啤酒愛好者提供了一系列商品,像杯子、T恤、鑰匙鏈等。網(wǎng)

52、站的訪問量高了,也是提高商品銷售的一個(gè)好辦法,因?yàn)轭櫩涂梢圆挥玫骄瓢删湍苜?gòu)買這些商品。如果用戶看到自己喜歡的商品可以對(duì)它進(jìn)行投票排名,從而讓其他用戶知道自己對(duì)該商品的感受。在線商店應(yīng)當(dāng)能夠方便地由非技術(shù)人員進(jìn)行管理,因?yàn)楹芸赡苁窃摼瓢芍魅擞H自添加、修改商品信息和進(jìn)行定單管理的。因此,網(wǎng)站應(yīng)有一個(gè)操作簡(jiǎn)單明了的用戶界面,它能夠自動(dòng)完成盡量多的操作,并且引導(dǎo)用戶在整個(gè)過程中進(jìn)行操作。l       由于網(wǎng)站上提供新聞、文章、商品列表、用戶討論等動(dòng)態(tài)內(nèi)容,因此可以想象網(wǎng)站主頁(yè)會(huì)變得很擁擠。太多的信息可能會(huì)造成閱讀困難,引起誤解。如

53、果訪問者能夠根據(jù)自己的愛好親自構(gòu)建屬于自己的主頁(yè)那就再好不過了。他可能想看活動(dòng)預(yù)告而不關(guān)心在線商店,很好!我們將為他提供這樣的功能,他可以在自己的主頁(yè)上對(duì)內(nèi)容進(jìn)行添加和刪除,也可以將內(nèi)容進(jìn)行移動(dòng),使內(nèi)容重新排列,這樣瀏覽者閱讀起來會(huì)更舒服并且容易獲得有用的信息。許多大型網(wǎng)站都提供了這種自定義功能,像Windows Live及My MSN都是非常好的示例,自定義功能能夠幫助網(wǎng)站吸引更多的用戶進(jìn)行注冊(cè)。l       前面已經(jīng)提到,酒吧的客人會(huì)來自很多不同的國(guó)家,我們希望不同國(guó)家的人所訪問到的網(wǎng)站是一致的,因此,網(wǎng)站應(yīng)當(dāng)全部或者

54、部分地翻譯成多種語言,讓大部分用戶都能容易理解。不僅文本需要翻譯,像日期格式和數(shù)字格式這樣的信息也應(yīng)當(dāng)根據(jù)用戶的本地設(shè)置進(jìn)行顯示,這樣就不會(huì)有人把即將舉行的聚會(huì)或者活動(dòng)的時(shí)間看錯(cuò)。綜上所述,TheBeerHouse網(wǎng)站將擁有當(dāng)今內(nèi)容網(wǎng)站的全部功能,包括動(dòng)態(tài)文章和新聞、問卷調(diào)查、論壇、郵件列表、RSS、在線購(gòu)物、個(gè)性化主頁(yè)以及內(nèi)容本地化。通過構(gòu)建示例網(wǎng)站,可以學(xué)習(xí)構(gòu)建當(dāng)今大多數(shù)內(nèi)容網(wǎng)站和商務(wù)網(wǎng)站所包含的主要功能,在將來開發(fā)網(wǎng)站時(shí)會(huì)用到它們。1.3  解決方案每章的“解決方案”部分包含了設(shè)計(jì)步驟和實(shí)際代碼,用于實(shí)現(xiàn)前面兩個(gè)部分中所提出的功能、需求以及設(shè)計(jì)。下面概述以后各章所要講述的內(nèi)容。

55、在第2章中,將實(shí)現(xiàn)網(wǎng)站的設(shè)計(jì)、圖形,以及布局。通過使用Master PageASP.NET 2.0中的一個(gè)新功能,能夠讓布局在網(wǎng)站的所有頁(yè)面之間共享。還可以使用“主題”ASP.NET 2.0的另外一個(gè)新功能,為Master Page創(chuàng)建一系列不同的外觀。這樣就可以創(chuàng)建一種機(jī)制使訪問者可以從下拉列表中選擇自己喜歡的主題,根據(jù)自己的喜好來改變網(wǎng)站的色彩和外觀,甚至能夠避免視覺障礙。最后通過新的web.sitemap文件以及Menu和SiteMapPath控件來創(chuàng)建一個(gè)靈活且易于維護(hù)的導(dǎo)航系統(tǒng)。第3章將為構(gòu)建一個(gè)靈活的、容易配置的功能網(wǎng)站打基礎(chǔ)。首先,需要一個(gè)插入式的數(shù)據(jù)訪問層(Data Acces

56、s Layer,DAL),DAL可以支持任何類型的數(shù)據(jù)存儲(chǔ),有良好的擴(kuò)展性,在高使用量中有很好的表現(xiàn)。然后在DAL的上面構(gòu)建一個(gè)業(yè)務(wù)邏輯層,使得數(shù)據(jù)以面向?qū)ο蟮姆绞秸故?。邏輯層還包含了所必需的驗(yàn)證邏輯、事務(wù)管理、事件日志以及高速緩存。最后,介紹用戶界面(UI)和表示層,它們利用新的GridView、DetailsView和FormView控件,并結(jié)合ObjectDataSource可以快速生成功能強(qiáng)大且由數(shù)據(jù)驅(qū)動(dòng)的復(fù)雜頁(yè)面。在第4章中,將把ASP.NET 2.0中新的成員功能整合到網(wǎng)站中,以生成用戶注冊(cè)表單,并且支持用戶的身份驗(yàn)證和授權(quán)。本章將介紹新的Profile模塊,它允許定義用戶級(jí)別的屬

57、性,該屬性的值可以持久保存。這與傳統(tǒng)的Session狀態(tài)變量有很大的區(qū)別,Session狀態(tài)變量只存在于用戶瀏覽網(wǎng)站期間。我們將要構(gòu)建一個(gè)完整的管理模塊,它允許管理員查看成員列表,限制那些在網(wǎng)站上有惡劣行為的成員,查看和編輯每個(gè)用戶的詳細(xì)資料。在第5章中,將構(gòu)建一種內(nèi)容管理系統(tǒng),這個(gè)模塊為管理員提供了一個(gè)直觀的界面來管理網(wǎng)站中的文章,非技術(shù)用戶也可以使用它。該模塊內(nèi)置了一個(gè)成員系統(tǒng)來確保模塊只對(duì)有權(quán)限的人員開放,并跟蹤文章作者的最新動(dòng)態(tài)。該模塊可以對(duì)全部分類或指定分類中的新內(nèi)容進(jìn)行匯集而發(fā)布一個(gè)RSS源,同時(shí)還支持排名和評(píng)論等其他許多功能。這些功能很強(qiáng)大,網(wǎng)站編輯人員只要事先準(zhǔn)備好格式豐富的內(nèi)

58、容,并且設(shè)置好內(nèi)容自動(dòng)發(fā)布和刪除的時(shí)間,網(wǎng)站就會(huì)自動(dòng)完成更新,這樣網(wǎng)站的更新就變得非常簡(jiǎn)單,只需要很少的操作和時(shí)間。本章最后將描述新的GridView、DetailsView和 ObjectDataSource控件,通過使用這些控件,可以將面向?qū)ο髽I(yè)務(wù)類中的數(shù)據(jù)同用戶界面進(jìn)行綁定,業(yè)務(wù)類所包含的數(shù)據(jù)來自數(shù)據(jù)訪問層。在第 6 章中,將討論如何在網(wǎng)站上創(chuàng)建和管理調(diào)查問卷。此模塊提供了一個(gè)管理控制臺(tái),用于通過Web瀏覽器來管理投票。還提供了一個(gè)用戶控件,只需要幾行代碼就可以把一個(gè)調(diào)查問卷插入到任何頁(yè)面中,同時(shí)還包括了一個(gè)歷史頁(yè)面,可以在該頁(yè)面上查看所有的歷史投票記錄。在第7章中,將為網(wǎng)站增

59、加一個(gè)完整的郵件列表模塊,用于向那些注冊(cè)了詳細(xì)個(gè)人資料的用戶發(fā)送新聞郵件。郵件是通過后臺(tái)線程發(fā)送的,沒有使用處理頁(yè)面請(qǐng)求的主線程,這樣頁(yè)面不會(huì)產(chǎn)生超時(shí),更重要的是,網(wǎng)站編輯人員不會(huì)碰到那種好幾分鐘看到的都是空白頁(yè)面的情況。使用異步JavaScript及XML編程技術(shù)(Asynchronous JavaScript and XML Programming,AJAX)可以實(shí)現(xiàn)頁(yè)面部分更新,提供新聞的實(shí)時(shí)更新。用戶能夠在一個(gè)歸檔頁(yè)面中看到過去的新聞郵件列表。要實(shí)現(xiàn)所有這些功能,需要使用一些ASP.NET 2.0的高級(jí)功能,例如多線程編程、新的腳本回調(diào)功能以及新的郵件發(fā)送類。在第8章中,將創(chuàng)建一個(gè)論壇系統(tǒng),該系統(tǒng)支持多個(gè)子論壇,有合適的可選項(xiàng),可以對(duì)主題和回復(fù)進(jìn)行分頁(yè)列表顯示,可以用不同方式進(jìn)行排序,并且支持標(biāo)準(zhǔn)RSS,可以配置用戶排名,支持簽名檔、引用以及當(dāng)今大多數(shù)論壇的主要功能。該論壇系統(tǒng)還提供了完整的管理功能(刪除、編輯、批準(zhǔn)、移動(dòng)、關(guān)閉主題和帖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論