版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章構(gòu)建Web2.0網(wǎng)絡(luò)應(yīng)用的根底工程本書(shū)共介紹了6個(gè)Web2.0時(shí)代比較流行的網(wǎng)絡(luò)應(yīng)用程序。它們是RSS、Blog、WebTags、WebStore、XMLBBS、ASPNET2AjaxMail。這6個(gè)網(wǎng)絡(luò)應(yīng)用程序被組織在同一個(gè)解決方案——Web2ASPNET2中。并且,筆者還為這6個(gè)網(wǎng)絡(luò)應(yīng)用程序提供了3個(gè)根底工程,具體描述如下。工程O(píng)perateSqlServer,主要封裝和實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)的操作,如檢索、選擇、添加、修改、刪除、排序、過(guò)濾等。工程CommonOperation,主要封裝和實(shí)現(xiàn)了網(wǎng)絡(luò)應(yīng)用程序的通用操作,如數(shù)據(jù)類(lèi)型轉(zhuǎn)換、字符串處理、數(shù)據(jù)緩存等。7.1解決方案Web2ASPNET2解決方案Web2ASPNET2共包括6個(gè)網(wǎng)絡(luò)應(yīng)用程序〔RSS、Blog、WebTags、WebStore、XMLBBS和ASPNET2AjaxMail〕和3個(gè)根底工程〔OperateSqlServer、CommonOperation和UserCommonOperation〕。在VisualStudio2005中翻開(kāi)解決方案Web2ASPNET2,在【解決方案資源管理器】面板中查看該解決方案,7.2操作數(shù)據(jù)庫(kù)的工程O(píng)perateSqlServer工程O(píng)perateSqlServer包含兩個(gè)類(lèi)文件:OperateDatabase.cs和DataCommon.cs。其中,第一個(gè)文件定義了與數(shù)據(jù)庫(kù)操作相關(guān)的方法和屬性。第二個(gè)文件中定義了快捷執(zhí)行數(shù)據(jù)庫(kù)操作的方法和屬性。在VisualStudio2005的【解決方案資源管理器】面板中查看該工程,7.2.1獲取配置數(shù)據(jù)庫(kù)連接字符串的標(biāo)識(shí)在下述程序代碼中,類(lèi)OperateDatabase定義了兩個(gè)屬性:ReturnValueString和ConnectionStringNameInWebConfig。第一個(gè)屬性為保存執(zhí)行數(shù)據(jù)庫(kù)操作返回值的參數(shù)標(biāo)識(shí)。第二個(gè)屬性為從配置文件Web.Config中獲取數(shù)據(jù)庫(kù)連接字符串的標(biāo)識(shí)。它的值和配置文件Web.Config中的connectionstrings元素的Name屬性的值相等。定義這兩個(gè)屬性的程序代碼如下所示。7.2.2管理數(shù)據(jù)庫(kù)的連接在下述程序代碼中,類(lèi)OperateDatabase定義方法CreateSqlConnection()來(lái)創(chuàng)立連接。該方法首先從Cache中獲取數(shù)據(jù)庫(kù)連接字符串。如果為空,那么從配置文件Web.Config中獲取數(shù)據(jù)庫(kù)連接字符串,同時(shí)緩存獲取的字符串。然后創(chuàng)立一個(gè)新的連接對(duì)象SqlConnection。該方法的程序代碼如下所示。7.2.3創(chuàng)立存儲(chǔ)過(guò)程的參數(shù)在下述程序代碼中,類(lèi)OperateDatabase定義了4個(gè)創(chuàng)立存儲(chǔ)過(guò)程參數(shù)的方法,如下所示?!?〕privatestaticSqlParameterCreateParam〔stringParamName,SqlDbTypeDbTypeInt32Size,ParameterDirectionDirection,objectValue〕。〔2〕publicstaticSqlParameterCreateInParam(stringParamName,SqlDbTypeDbType,intSize,objectValue)?!?〕publicstaticSqlParameterCreateOutParam(stringParamName,SqlDbTypeDbType,intSize)。7.2.4創(chuàng)立執(zhí)行存儲(chǔ)過(guò)程的命令和適配器在下述程序代碼中,類(lèi)OperateDatabase定義了兩個(gè)創(chuàng)立執(zhí)行存儲(chǔ)過(guò)程的命令和適配器的方法,如下所示?!?〕privatestaticSqlCommandCreateSqlCommand〔stringprocName,paramsSqlParameter[]prams〕;〔2〕privatestaticSqlDataAdapterCreateSqlDataAdapter〔stringprocName,paramsSqlParameter[]prams〕。7.2.5獲取記錄的數(shù)量在下述程序代碼中,類(lèi)OperateDatabase定義了兩個(gè)獲取記錄的數(shù)量的方法,如下所示。〔1〕publicstaticintRunProcScalar〔stringprocName〕?!?〕publicstaticintRunProcScalar〔stringprocName,paramsSqlParameter[]prams〕。7.2.6使用SqlDataReader對(duì)象從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)在下述程序代碼中,類(lèi)OperateDatabase定義了兩個(gè)使用SqlDataReader對(duì)象從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)的方法,如下所示。〔1〕publicstaticvoidRunProc〔stringprocName,outSqlDataReaderdr〕?!?〕publicstaticvoidRunProc〔stringprocName,outSqlDataReaderdr,paramsSqlParameter[]prams〕。7.2.7獲取數(shù)據(jù)并填充DataSet對(duì)象在下述程序代碼中,類(lèi)OperateDatabase定義了4個(gè)獲取數(shù)據(jù)并填充DataSet對(duì)象的方法,如下所示?!?〕publicstaticvoidRunProc〔stringprocName,refDataSetds〕?!?〕publicstaticvoidRunProc〔stringprocName,refDataSetds,paramsSqlParameter[]prams〕。7.2.8對(duì)數(shù)據(jù)庫(kù)執(zhí)行插入、更新和刪除操作在下述程序代碼中,類(lèi)OperateDatabase定義了兩個(gè)對(duì)數(shù)據(jù)庫(kù)執(zhí)行插入、更新和刪除操作的方法,如下所示?!?〕publicstaticintRunProc〔stringprocName〕?!?〕publicstaticintRunProc〔stringprocName,paramsSqlParameter[]prams〕。7.2.9快捷執(zhí)行數(shù)據(jù)庫(kù)的操作工程O(píng)perateSqlServer定義了類(lèi)DataCommon,它提供了6個(gè)快捷執(zhí)行數(shù)據(jù)庫(kù)操作的方法。它們分別是:〔1〕publicstaticSqlDataReaderGetDataByReader〔stringprocName〕。〔2〕publicstaticDataSetGetDataByDataSet〔stringprocName〕。〔3〕publicstaticSqlDataReaderGetDataByReaderIDParam〔stringprocName,intidValue〕。7.2.10數(shù)據(jù)緩存工程O(píng)perateSqlServer定義了類(lèi)Cache,它提供了緩存數(shù)據(jù)的功能。在下述程序代碼中,該類(lèi)定義了用來(lái)保存數(shù)據(jù)的HashTable對(duì)象、緩存數(shù)據(jù)的方法CachingData〔stringkey,objectvalue〕和獲取數(shù)據(jù)的方法GetData〔stringkey〕。7.3通用操作的工程CommonOperation工程CommonOperation包含兩個(gè)類(lèi)文件:CommonOperation.cs和CustomCache.cs。其中,第一個(gè)文件定義了系統(tǒng)通用操作的方法和屬性。第二個(gè)文件中定義了緩存系統(tǒng)數(shù)據(jù)相關(guān)的方法和屬性。在VisualStudio2005的【解決方案資源管理器】面板中查看該工程,7.3.1轉(zhuǎn)換數(shù)據(jù)類(lèi)型在下述程序代碼中,類(lèi)DataTypeConvert定義了4個(gè)轉(zhuǎn)換數(shù)據(jù)類(lèi)型的靜態(tài)方法,如下所示。〔1〕publicstaticintConvertToInt〔stringvalue〕,把一個(gè)字符串轉(zhuǎn)換為一個(gè)整數(shù)?!?〕publicstaticDateTimeConvertToDateTime〔stringvalue〕,把一個(gè)字符串轉(zhuǎn)換為一個(gè)時(shí)間對(duì)象〔DateTime〕。7.3.2處理字符串在下述程序代碼中,類(lèi)DataTypeConvert定義了兩個(gè)處理字符串的靜態(tài)方法,如下所示。〔1〕publicstaticstringCreatedStringByTime(),把系統(tǒng)當(dāng)前時(shí)間轉(zhuǎn)換為一個(gè)字符串。該字符串由當(dāng)前時(shí)間的年、月、日、小時(shí)、分鐘、秒和毫秒的字符串組成?!?〕publicstaticstringFormatStringLength〔stringstr,intlength〕,把一個(gè)字符串轉(zhuǎn)換為一個(gè)指定最大長(zhǎng)度的字符串。其中,最大長(zhǎng)度由參數(shù)length指定。如果被轉(zhuǎn)換的字符串超過(guò)了參數(shù)length指定的長(zhǎng)度,那么只顯示長(zhǎng)度為length的字符串,并在最后添加“...〞。7.3.3設(shè)置按鈕可用性在下述程序代碼中,類(lèi)ButtonEnable定義了3個(gè)設(shè)置按鈕可用性的靜態(tài)方法。它們是:〔1〕publicstaticvoidControlButtonEnable〔Buttonbutton,int[]idList〕,根據(jù)整數(shù)數(shù)組設(shè)置按鈕的可用性。如果該數(shù)組中存在一個(gè)小于0的數(shù),那么該按鈕不可用?!?〕publicstaticvoidControlButtonEnable〔Buttonbutton,paramsListControl[]listControl〕,根據(jù)列表控件〔ListControl〕數(shù)組設(shè)置按鈕的可用性。如果該數(shù)組中存在一個(gè)列表控件的選擇項(xiàng)為空,那么該按鈕不可用。7.3.4綁定控件數(shù)據(jù)在下述程序代碼中,類(lèi)DataBinder定義了9個(gè)綁定控件〔列表控件、GridView控件和DataList控件〕數(shù)據(jù)的靜態(tài)方法。其中,綁定列表控件數(shù)據(jù)的方法如下所示?!?〕publicstaticvoidBindListData〔ListControllist,SqlDataReaderdataSource,stringdataTextField,stringdataValueField〕。其中,數(shù)據(jù)源為SqlDataReader對(duì)象,列表控件的值域和文本域分別由dataValueField和dataTextField參數(shù)指定。7.3.5設(shè)置列表選擇項(xiàng)在下述程序代碼中,類(lèi)ListSelectedItem定義了兩個(gè)設(shè)置列表控件的選擇項(xiàng)的靜態(tài)方法如下所示?!?〕publicstaticvoidListSelectedItemByValue〔ListControllist,stringvalue〕。如果列表控件list中某一個(gè)選擇項(xiàng)的Value屬性的值等于value參數(shù)的值,那么設(shè)置該選擇項(xiàng)為列表控件list的選擇項(xiàng)。〔2〕publicstaticvoidListSelectedItemByText〔ListControllist,stringtext〕。如果列表控件list中某一個(gè)選擇項(xiàng)的Text屬性的值等于text參數(shù)的值,那么設(shè)置該選擇項(xiàng)為列表控件list的選擇項(xiàng)。7.3.6緩存系統(tǒng)數(shù)據(jù)在下述程序代碼中,類(lèi)CustomCache定義了兩個(gè)與緩存系統(tǒng)數(shù)據(jù)相關(guān)的方法,如下所示?!?〕publicvoidAddValue〔stringkey,objectvalue〕。將被緩存的數(shù)據(jù)添加到Cache中。其中,鍵值由參數(shù)key指定,緩存的數(shù)據(jù)由參數(shù)value指定?!?〕publicobjectGetValue〔stringkey〕。從Cache中獲取緩存的數(shù)據(jù)。其中,鍵值由參數(shù)key指定。7.3.7彈出網(wǎng)頁(yè)對(duì)話(huà)框在下述程序代碼中,類(lèi)Dialog定義了兩個(gè)彈出網(wǎng)頁(yè)對(duì)話(huà)框的靜態(tài)方法,如下所示?!?〕publicstaticvoidOpenDialog〔HttpResponseresponse,stringmessage〕。在普通Web窗體頁(yè)中,彈出一個(gè)對(duì)話(huà)框。并且,該對(duì)話(huà)框中顯示的消息為參數(shù)message的值?!?〕publicstaticvoidOpenDialogInAjax〔Controlc,stringmessage〕。在ASP.NETAJAX環(huán)境中的Web窗體頁(yè)中,彈出一個(gè)對(duì)話(huà)框。并且,該對(duì)話(huà)框中顯示的消息為參數(shù)message的值。7.4管理用戶(hù)信息的工程UserCommonOperation工程UserCommonOperation包含一個(gè)類(lèi)文件:UserCommonOperation.cs。該文件定義了與用戶(hù)信息相關(guān)的方法和屬性。在VisualStudio2005的【解決方案資源管理器】面板中查看該工程,7.4.1封裝用戶(hù)登錄信息在下述程序代碼中,類(lèi)UserInfo封裝了與用戶(hù)登錄相關(guān)的信息,如用戶(hù)ID、用戶(hù)名稱(chēng)、登錄時(shí)間等。類(lèi)UserInfo定義了3個(gè)屬性,分別表示用戶(hù)的ID、名稱(chēng)和登錄時(shí)間。該類(lèi)還定義了四個(gè)構(gòu)造函數(shù),如下所示?!?〕publicUserInfo(),默認(rèn)構(gòu)造函數(shù)。〔2〕publicUserInfo〔intuserID〕,初始化用戶(hù)的ID值。7.4.2存儲(chǔ)用戶(hù)登錄信息在下述程序代碼中,類(lèi)UserCommonOperation定義了4個(gè)存儲(chǔ)用戶(hù)登錄相關(guān)信息的靜態(tài)方法,如下所示?!?〕publicstaticvoidStoreUserInfo〔HttpSessionStatesession,intuserID0,存儲(chǔ)用戶(hù)的ID值。〔2〕publicstaticvoidStoreUserInfo〔HttpSessionStatesession,intuserID,stringusername〕,存儲(chǔ)用戶(hù)的ID值和用戶(hù)名稱(chēng)。7.4.3獲取用戶(hù)登錄信息在下述程序代碼中,類(lèi)UserCommonOperation定義了一個(gè)獲取用戶(hù)登錄相關(guān)信息的靜態(tài)方法:publicstaticUserInfoGetUserInfo〔HttpSessionStatesession〕。該方法根據(jù)給定的鍵值從Session對(duì)象中獲取用戶(hù)登錄信息,并把獲取的信息保存在UserInfo對(duì)象。7.4.4取消用戶(hù)會(huì)話(huà)在下述程序代碼中,類(lèi)UserCommonOperation定義了一個(gè)取消用戶(hù)會(huì)話(huà)的靜態(tài)方法:ClearAndAbandon〔HttpSessionStatesession〕。該方法清空Session對(duì)象中的數(shù)據(jù),并停止當(dāng)前會(huì)話(huà)。第8章RSSRSS是Web2.0的重要元素。RSS是ReallySimpleSyndication的簡(jiǎn)稱(chēng),它是一種網(wǎng)頁(yè)內(nèi)容聯(lián)合格式〔WebContentSydicationFormat〕。本章將介紹RSS文檔的標(biāo)準(zhǔn)、如何創(chuàng)立一個(gè)簡(jiǎn)單的RSS文檔、訂閱RSS源的方法,并創(chuàng)立一個(gè)基于Web的RSS閱讀器來(lái)閱讀訂閱的RSS源。其中,該RSS閱讀器的效果,本章網(wǎng)絡(luò)應(yīng)用程序〔網(wǎng)站〕的名稱(chēng)為RSS。8.1什么是RSS本小節(jié)將介紹RSS的根底知識(shí)。內(nèi)容包括RSS的定義、RSS文檔的格式、RSS的技術(shù)標(biāo)準(zhǔn),以及目前比較流行的RSS的閱讀器。8.1.1RSS概述RSS文檔也是一種XML文檔。因此,RSS文檔都必須遵循XML1.0標(biāo)準(zhǔn)〔該標(biāo)準(zhǔn)發(fā)布在W3C網(wǎng)站上〕。目前,RSS存在多個(gè)版本:0.91〔2000年〕、0.92〔2000年12月〕、0.94〔2002年8月〕、〔2002年〕等。在每一個(gè)RSS文檔的開(kāi)頭處,存在一個(gè)<rss>元素。該元素包含屬性version,該屬性指定RSS文檔的版本。下面代碼標(biāo)識(shí)了RSS文檔的版本為2.0版本。<rssversion="2.0">8.1.2RSS技術(shù)標(biāo)準(zhǔn)本小節(jié)將介紹RSS文檔的技術(shù)標(biāo)準(zhǔn),主要包括RSS文檔的數(shù)據(jù)類(lèi)型和元素。1.?dāng)?shù)據(jù)類(lèi)型2.元素8.1.3目前流行的RSS閱讀器隨著RSS摘要數(shù)量的增加,RSS閱讀器已經(jīng)成為了Web2.0世界里面的一個(gè)必需品。它可以幫助用戶(hù)發(fā)現(xiàn)和組織感興趣的頻道列表,并提供統(tǒng)一的閱讀界面。下面將介紹國(guó)內(nèi)外目前比較流行的RSS閱讀器。1.看天下〔〕2.新聞螞蟻〔〕3.周博通〔〕4.資訊通〔〕5.新浪點(diǎn)點(diǎn)通8.2總體功能設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)用程序RSS主要實(shí)現(xiàn)RSS訂閱、RSS閱讀器兩大功能。其中,RSS訂閱包括訂閱互聯(lián)網(wǎng)上包含RSS新聞的頁(yè)面等功能。RSS閱讀器包括讀取RSS頁(yè)面的內(nèi)容,并解釋該頁(yè)面的功能。8.2.1總體功能設(shè)計(jì)應(yīng)用程序RSS主要實(shí)現(xiàn)了RSS訂閱和RSS閱讀器兩大功能。其中,RSS訂閱主要處理RSS源。RSS閱讀器主要處理RSS頁(yè)面的內(nèi)容。具體說(shuō)明如下:1.RSS訂閱2.RSS閱讀器8.2.2表設(shè)計(jì)應(yīng)用程序RSS的數(shù)據(jù)庫(kù)比較簡(jiǎn)單,它僅僅包含一個(gè)表——RSSUrl。該表存儲(chǔ)RSS頁(yè)面的鏈接地址。RSS閱讀器將讀取該表中存儲(chǔ)地址的頁(yè)面的內(nèi)容。下面對(duì)RSS外鏈接地址表RSSUrl作下介紹。8.3應(yīng)用程序RSS本小節(jié)主要介紹應(yīng)用程序RSS的組成,及其通用模塊的設(shè)計(jì)。其中,該應(yīng)用程序由Web窗體頁(yè)、類(lèi)文件、主題文件、資源文件等組成。通用模塊包括一個(gè)名稱(chēng)為“模塊標(biāo)題〞的用戶(hù)控件ModuleTitle.ascx,它存放在UserControl目錄下。8.3.1應(yīng)用程序RSS的組成應(yīng)用程序RSS包含Admin、App_Code、App_Themes、Bin、Portal和UserControl目錄,以及頁(yè)面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展開(kāi)Admin和Portal目錄,在【解決方案資源管理器】面板中查看應(yīng)用程序RSS組成,如圖8.3所示。應(yīng)用程序RSS的各個(gè)目錄和文件的功能具體說(shuō)明如下:Admin目錄,主要包含超級(jí)管理員使用的后臺(tái)管理頁(yè)面,如注冊(cè)新用戶(hù)、用戶(hù)管理等頁(yè)面。8.3.2配置文件Web.Config應(yīng)用程序RSS的配置文件Web.Config放置在其根目錄下。筆者在該文件中配置了訪問(wèn)數(shù)據(jù)庫(kù)Web2ASPNET2DB的鏈接字符串“datasource=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB〞。同時(shí)還配置了應(yīng)用程序RSS的驗(yàn)證方式為“Windows〞。8.3.3添加應(yīng)用程序的引用文件應(yīng)用程序RSS使用了3個(gè)根底工程〔第2章已經(jīng)詳細(xì)介紹過(guò)〕中的功能。在此,筆者該應(yīng)用程序中添加了這三個(gè)引用〔即文件的后綴名為.dll〕。它們具體為:。。。8.3.4主頁(yè)Default.aspx應(yīng)用程序RSS的主頁(yè)Default.aspx特別簡(jiǎn)單。該頁(yè)面在Page_Load〔objectsender,EventArgse〕事件中重定向到用戶(hù)登錄頁(yè)面UserLogin.aspx。程序代碼如下所示。protectedvoidPage_Load(objectsender,EventArgse){Response.Redirect("~/Portal/UserLogin.aspx");///重定向到登錄頁(yè)面}8.3.5通用模塊設(shè)計(jì)應(yīng)用程序RSS中的通用模塊設(shè)計(jì)只包含一個(gè)名稱(chēng)為“模塊標(biāo)題〞的用戶(hù)控件。實(shí)現(xiàn)該控件的文件為ModuleTitle.ascx,它的代碼隱藏文件為。該用戶(hù)控件的設(shè)計(jì)界面,8.4關(guān)鍵技術(shù)詳解本小節(jié)將介紹應(yīng)用程序RSS中的關(guān)鍵技術(shù)——?jiǎng)?chuàng)立一個(gè)簡(jiǎn)單的RSS頁(yè)面。在此,筆者定義了名稱(chēng)為SampleRss的類(lèi),它專(zhuān)門(mén)用來(lái)創(chuàng)立一個(gè)簡(jiǎn)單的RSS頁(yè)面。類(lèi)SampleRss定義了創(chuàng)立RSS頁(yè)面的頭部、Item項(xiàng)、尾部,以及輸出RSS頁(yè)面等方法。具體方法如下所示。〔1〕privateXmlTextWriterWriteRSSHeader(XmlTextWriterwriter),創(chuàng)立RSS頁(yè)面的頭部。〔2〕privateXmlTextWriterWriteRSSItem(XmlTextWriterwriter,stringtitle,stringlink,stringdescription),創(chuàng)立RSS頁(yè)面的Item項(xiàng)。8.4.1創(chuàng)立RSS頁(yè)面的頭部方法WriteRSSHeader(XmlTextWriterwriter)創(chuàng)立RSS頁(yè)面的頭部。它通過(guò)XmlTextWriter對(duì)象writer輸出RSS頁(yè)面必須的內(nèi)容,如RSS頁(yè)面的標(biāo)志〔rss〕、版本、頻道的標(biāo)題、頻道的鏈接、頻道的描述、版權(quán)信息等。8.4.2創(chuàng)立RSS的Item項(xiàng)方法WriteRSSItem(XmlTextWriterwriter,stringtitle,stringlink,stringdescription)和方法WriteRSSItem(XmlTextWriterwriter,RSSItemitem)都是創(chuàng)立RSS頁(yè)面的Item項(xiàng)。其中,第一個(gè)方法只向頁(yè)面輸出Item的標(biāo)題、鏈接和描述。第二個(gè)方法可以輸出Item的所有屬性。8.4.3創(chuàng)立RSS頁(yè)面的尾部方法WriteRSSTailer(XmlTextWriterwriter)創(chuàng)立RSS頁(yè)面的尾部。它通過(guò)XmlTextWriter對(duì)象writer輸出RSS頁(yè)面的結(jié)尾內(nèi)容,如RSS頁(yè)面的結(jié)束標(biāo)志〔</rss>〕等。程序代碼如下所示。8.4.4輸出RSS頁(yè)面方法CreateSampleRss(HttpResponseresponse,paramsRSSItem[]items)創(chuàng)立一個(gè)RSS頁(yè)面,即在網(wǎng)頁(yè)上輸出RSS頁(yè)的內(nèi)容。它首先調(diào)用方法WriteRSSHeader(XmlTextWriterwriter)創(chuàng)立RSS頁(yè)面的頭部;然后調(diào)用方法WriteRSSItem(XmlTextWriterwriter,RSSItemitem)創(chuàng)立RSS頁(yè)面的Item項(xiàng);最后調(diào)用方法WriteRSSTailer(XmlTextWriterwriter)創(chuàng)立RSS頁(yè)面的尾部。8.4.5創(chuàng)立一個(gè)簡(jiǎn)單的RSS頁(yè)面頁(yè)面SampleRSS.aspx創(chuàng)立一個(gè)簡(jiǎn)單RSS頁(yè)面,它的代碼隱藏文件為。該頁(yè)面的最終效果,RSS頁(yè)面SampleRSS.aspx在Page_Load(objectsender,System.EventArgse)事件中創(chuàng)立了兩個(gè)Item項(xiàng),并設(shè)置了每一個(gè)Item項(xiàng)的Title、Link、Description屬性的值。最后調(diào)用SampleRss類(lèi)的方法CreateSampleRss(HttpResponseresponse,paramsRSSItem[]items)輸出這兩個(gè)Item項(xiàng),即創(chuàng)立為一個(gè)簡(jiǎn)單RSS頁(yè)面。Page_Load(objectsender,System.EventArgse)事件的程序8.5訂閱RSS本小節(jié)主要介紹應(yīng)用程序RSS中與訂閱RSS相關(guān)的功能,如訂閱RSS源、修改已經(jīng)訂閱的RSS源、RSS源管理等。8.5.1數(shù)據(jù)訪問(wèn)層設(shè)計(jì)類(lèi)Url定義了訂閱RSS功能的數(shù)據(jù)訪問(wèn)層的操作。該類(lèi)定義的方法如下:publicDataSetGetUrls(),獲取所有訂閱的RSS源。publicSqlDataReaderGetSingleUrl(inturlID),獲取單個(gè)訂閱的RSS源。publicintAddUrl(stringname,stringurl),訂閱RSS源。publicintUpdateUrl(inturlID,stringname,stringurl),修改訂閱的RSS源。publicintDeleteUrl(inturlID),刪除訂閱的RSS源。8.5.2存儲(chǔ)過(guò)程小節(jié)中的類(lèi)Url使用了5個(gè)存儲(chǔ)過(guò)程。這5個(gè)存儲(chǔ)都操作RSSUrl表,說(shuō)明如下所示。Pr_GetRSSUrls,獲取所有訂閱的RSS源。Pr_GetSingleRSSUrl,獲取單個(gè)訂閱的RSS源。Pr_AddRSSUrl,訂閱RSS源。Pr_UpdateRSSUrl,修改訂閱的RSS源。Pr_DeleteRSSUrl,刪除訂閱的RSS源。8.5.3訂閱RSS源訂閱RSS源由頁(yè)面AddUrl.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。輸入新RSS源的名稱(chēng)和URL。添加新RSS源,并把新RSS源的信息提交到數(shù)據(jù)庫(kù)中。返回到RSS源管理頁(yè)面UrlManage.aspx。8.5.4修改RSS源修改RSS源由頁(yè)面UpdateUrl.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。編輯RSS源的名稱(chēng)和URL。修改RSS源,并把修改后的RSS源信息提交到數(shù)據(jù)庫(kù)中。返回到RSS源管理頁(yè)面UrlManage.aspx。8.5.5RSS源管理RSS源管理由頁(yè)面UrlManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。以列表形式顯示RSS源的信息。提供重定向到添加和修改RSS源頁(yè)面的按鈕。提供刪除RSS源的功能。8.6RSS閱讀器本小節(jié)主要介紹應(yīng)用程序RSS中與RSS閱讀器相關(guān)的功能,如訂閱RSS的頻道、讀取RSS的頻道、訂閱RSS的Item、讀取RSS的Item等。在此,筆者定義了類(lèi)RSSItem和RSSChannel實(shí)現(xiàn)上述功能。這兩個(gè)類(lèi)都被定義在命名空間Web2ASPNET2.WebRSS中,8.6.1定義RSS的Item在下述程序代碼中,類(lèi)RSSItem用來(lái)表示RSS的Item。它屬于Web2ASPNET2.WebRSS命名空間。RSSItem類(lèi)定義了一個(gè)字典字段attributes。它是一個(gè)集合,用來(lái)保存Item的子元素的名稱(chēng)及其值。另外,該字典在類(lèi)RSSItem的構(gòu)造函數(shù)中初始化,并通過(guò)屬性Attributes公開(kāi)該字典。8.6.2定義RSS的頻道在下述程序代碼中,類(lèi)RSSChannel用來(lái)表示RSS的頻道〔Channel〕。它被定義在命名空間Web2ASPNET2.WebRSS中。注意:類(lèi)RSSChannel繼承于RSSItem類(lèi),并且還定義了保存RSS源的URL的私有字段url。類(lèi)RSSChannel也定義了一個(gè)字典字段items。它是一個(gè)集合,用來(lái)保存Channel的子元素〔如Item、Name等〕的名稱(chēng)及其值。另外,該字典在類(lèi)RSSChannel的構(gòu)造函數(shù)中初始化,并通過(guò)屬性Items公開(kāi)該字典。8.6.3讀取RSS的Item在下述程序代碼中,類(lèi)RSSChannel定義了讀取RSS的Item的私有方法privateRSSItemReadItem(XmlTextReaderreader,stringname)。該方法讀取Item的每一個(gè)子元素的值,并創(chuàng)立一個(gè)RSSItem對(duì)象最為方法的返回結(jié)果。8.6.4讀取RSS頻道在下述程序代碼中,類(lèi)RSSChannel定義了讀取RSS頻道的方法ReadChannel()。該方法根據(jù)字段url獲取網(wǎng)站的數(shù)據(jù),并檢索每一個(gè)頻道的數(shù)據(jù)。其具體步驟如下:〔1〕根據(jù)URL創(chuàng)立讀取網(wǎng)頁(yè)內(nèi)容的XmlTextReader對(duì)象reader?!?〕調(diào)用reader的方法Read()讀取內(nèi)容中的每一個(gè)元素?!?〕如果元素的名稱(chēng)為“item〞,那么調(diào)用方法ReadItem(XmlTextReaderreader,stringname)該其值,并添加到到字典items中。8.6.5在網(wǎng)頁(yè)中顯示RSS內(nèi)容RSS閱讀器使用了三個(gè)Web窗體頁(yè):Index.aspx、LeftUrl.aspx和ViewRSS.aspx。其中,第一個(gè)頁(yè)面為母頁(yè)面,它的左邊放置頁(yè)面LeftUrl.aspx,右邊放置頁(yè)面ViewRSS.aspx。頁(yè)面LeftUrl.aspx顯示被訂閱的RSS源名稱(chēng)。頁(yè)面ViewRSS.aspx將顯示頁(yè)面LeftUrl.aspx中被選擇的RSS源的內(nèi)容。RSS閱讀器的最終效果,第9章Blog隨著B(niǎo)log〔博客〕的快速開(kāi)展,Blog已經(jīng)成為朋友、家庭之間越來(lái)越盛行的溝通工具,是當(dāng)今網(wǎng)絡(luò)不可缺少的一局部。同時(shí),Blog也逐漸被應(yīng)用在企業(yè)、公司或集團(tuán)內(nèi)部的網(wǎng)絡(luò)〔Intranet〕中。本章將介紹如何創(chuàng)立一個(gè)Blog系統(tǒng)〔或網(wǎng)絡(luò)應(yīng)用程序〕。用戶(hù)可以在該系統(tǒng)中創(chuàng)立屬于自己的Blog空間,從而發(fā)表自己的文章和鏈接,以及文章和鏈接的評(píng)論等。Blog系統(tǒng)的前臺(tái)主頁(yè)面的效果,后臺(tái)主頁(yè)面效果,本章系統(tǒng)〔網(wǎng)絡(luò)應(yīng)用程序〕的名稱(chēng)為Blog。9.1什么是Blog“博客〞〔Blog或Weblog〕的全名為WebLog〔網(wǎng)絡(luò)日志〕,后來(lái)縮寫(xiě)為Blog。起初,它是一種十分簡(jiǎn)易的傻瓜化個(gè)人信息發(fā)布方式,使得任何人都可以創(chuàng)立個(gè)人主頁(yè),并且可以發(fā)表和更新自己的文章和圖片,或其他信息。如果把論壇〔BBS〕比喻為開(kāi)放的廣場(chǎng),那么博客就是個(gè)人開(kāi)放的私人房間。9.1.1Blog概述博客〔Blogger〕就是寫(xiě)B(tài)log的人,即使用特定的軟件,在網(wǎng)絡(luò)上出版、發(fā)表和張貼個(gè)人文章的人。簡(jiǎn)單地說(shuō),博客是一類(lèi)習(xí)慣于在網(wǎng)上寫(xiě)日記的人。Blog就是一種表達(dá)個(gè)人思想、網(wǎng)絡(luò)鏈接、內(nèi)容,按照時(shí)間順序排列,并且不斷更新的出版方式。Blog是繼E-mail、BBS、ICQ之后出現(xiàn)的第4種網(wǎng)絡(luò)交流方式。它是網(wǎng)絡(luò)時(shí)代的個(gè)人“讀者文摘〞。它是以超級(jí)鏈接為武器的網(wǎng)絡(luò)日記。它是代表著新的生活方式和新的工作方式,更代表著新的學(xué)習(xí)方式。9.1.2Blog開(kāi)展歷史Blog經(jīng)過(guò)10多年的開(kāi)展,已經(jīng)開(kāi)展成為網(wǎng)絡(luò)不可缺少的一局部。下面根據(jù)時(shí)間對(duì)它的開(kāi)展過(guò)程中一些重要紀(jì)事作簡(jiǎn)單介紹。1993年6月,最古老的Blog原型——NCSA的“What'sNewPage〞網(wǎng)頁(yè)〔〕,該網(wǎng)頁(yè)主要是羅列網(wǎng)絡(luò)上新興的網(wǎng)站索引。該網(wǎng)頁(yè)起始于1993年6月,一直更新到1996年6月。9.2總體功能設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)本小節(jié)將介紹Blog系統(tǒng)的總體功能設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì),以及數(shù)據(jù)庫(kù)中各個(gè)表之間的關(guān)系設(shè)計(jì)。9.2.1總體功能設(shè)計(jì)Blog系統(tǒng)實(shí)現(xiàn)的主要功能如下:1.用戶(hù)和角色管理功能2.文章分類(lèi)管理功能3.文章發(fā)布及其管理功能4.鏈接收藏及其管理功能5.Blog前臺(tái)功能9.2.2表設(shè)計(jì)Blog系統(tǒng)主要包括用戶(hù)、角色、文章分類(lèi)、文章、文章的評(píng)論、文章的訪問(wèn)來(lái)源、鏈接地址,以及Blog系統(tǒng)前臺(tái)的配置參數(shù)等數(shù)據(jù)。在此,筆者共創(chuàng)立了9個(gè)表,具體說(shuō)明如下。1.角色表Role2.用戶(hù)表User3.分類(lèi)表BlogCatalog4.文章表BlogArticle5.鏈接表BlogUrl6.訪問(wèn)來(lái)源表BlogArticleSource7.文章評(píng)論表BlogComment8.皮膚表BlogSkin9.收藏表BlogFavorite9.2.3表關(guān)系設(shè)計(jì)Blog系統(tǒng)的數(shù)據(jù)庫(kù)比較簡(jiǎn)單,各個(gè)表之間的關(guān)系,其中,文章表BlogArticle和鏈接表BlogUrl分別引用分類(lèi)表BlogCatalog的ID字段作為外鍵;皮膚表BlogSkin引用用戶(hù)表User的ID字段作為外鍵;訪問(wèn)來(lái)源表BlogArticleSource引用文章表BlogArticle的ID字段作為外鍵;文章評(píng)論表BlogComment分別引用用戶(hù)表User、文章表BlogArticle的ID字段作為外鍵。9.3應(yīng)用程序Blog本小節(jié)主要介紹應(yīng)用程序Blog的組成,及其通用模塊的設(shè)計(jì)。其中,該應(yīng)用程序由Web窗體頁(yè)、類(lèi)文件、主題文件、資源文件等組成。通用模塊包括一個(gè)名稱(chēng)為“模塊標(biāo)題〞的用戶(hù)控件ModuleTitle.ascx。它存放在UserControl目錄下。9.3.1應(yīng)用程序Blog的組成應(yīng)用程序Blog包含Admin、App_Code、App_Themes、Bin、Face、Index、Portal、UserControl目錄,以及頁(yè)面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展開(kāi)Index和Portal目錄,在【解決方案資源管理器】面板中查看應(yīng)用程序Blog,它的組成如圖9.4和圖9.5所示。9.3.2系統(tǒng)配置文件Web.Config應(yīng)用程序Blog的配置文件Web.Config放置在其的根目錄下。筆者在該文件中配置了訪問(wèn)數(shù)據(jù)庫(kù)Web2ASPNET2DB的鏈接字符串“datasource=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB〞;同時(shí)還配置了應(yīng)用程序Blog的驗(yàn)證方式為“Windows〞。9.3.3添加應(yīng)用程序的引用筆者向應(yīng)用程序Blog添加了3個(gè)引用文件〔文件的后綴名為.dll〕。它們具體為:;;。9.3.4主頁(yè)Default.aspx應(yīng)用程序Blog的主頁(yè)Default.aspx特別簡(jiǎn)單。該頁(yè)面在Page_Load(objectsender,EventArgse)事件中重定向到Blog應(yīng)用程序的前臺(tái)首頁(yè)Index.aspx〔其中,該頁(yè)面放置在Index目錄下〕。程序代碼如下所示。protectedvoidPage_Load(objectsender,EventArgse){Response.Redirect("~/Portal/Index.aspx");///Blog應(yīng)用程序的前臺(tái)首頁(yè)}9.3.5通用模塊設(shè)計(jì)該應(yīng)用程序中的通用模塊和應(yīng)用程序RSS的通用模塊相同,它們的具體實(shí)現(xiàn)請(qǐng)參見(jiàn)小節(jié)。9.3.6應(yīng)用程序初始化應(yīng)用程序Blog在全局文件Global.asax中初始化系統(tǒng)。其中,初始化操作由類(lèi)WebBlog實(shí)現(xiàn)。它定義了用于系統(tǒng)初始化的靜態(tài)方法publicstaticvoidSystemInit(HttpContextcontext)和兩個(gè)屬性:BoardFilePath和Face。其中,BoardFilePath屬性保存Blog前臺(tái)配置文件的訪問(wèn)地址;Face屬性保存系統(tǒng)當(dāng)前皮膚的名稱(chēng)。9.3.7數(shù)據(jù)訪問(wèn)層設(shè)計(jì)在應(yīng)用程序Blog的數(shù)據(jù)訪問(wèn)層中,筆者定義了操作與Blog內(nèi)容〔如文章、文章分類(lèi)、回復(fù)、鏈接等〕的類(lèi)Blog。類(lèi)Blog定義的操作或方法可以分為以下4種類(lèi)型:與文章相關(guān)的操作。與鏈接相關(guān)的操作。與評(píng)論和訪問(wèn)來(lái)源相關(guān)的操作。與Blog前臺(tái)皮膚相關(guān)的操作。9.4關(guān)鍵技術(shù)詳解本小節(jié)主要介紹Blog系統(tǒng)中的關(guān)鍵技術(shù)。這些技術(shù)包括Blog前臺(tái)實(shí)現(xiàn)原理、Blog前臺(tái)首頁(yè)、Blog前臺(tái)顯示文章頁(yè)面、動(dòng)態(tài)調(diào)整Blog前臺(tái)皮膚、收集文章訪問(wèn)來(lái)源、讀取Blog前臺(tái)的配置文件、評(píng)論文章等。9.4.1Blog前臺(tái)組成應(yīng)用程序Blog的前臺(tái)主要由兩個(gè)頁(yè)面和7個(gè)用戶(hù)控件組成。其中,頁(yè)面為Index.aspx和ShowArticle.aspx。用戶(hù)控件為AddCommentUC.ascx、ArticleUC.ascx、CalendarUC.ascx、CatalogUC.ascx、SetSkinUC.ascx、ShowArticleUC.ascx和ShowCommentUC.ascx。上述頁(yè)面和用戶(hù)控件都放置在Index文件夾中,9.4.2文章分類(lèi)用戶(hù)控件文章分類(lèi)用戶(hù)控件CatalogUC.ascx顯示文章的分類(lèi)信息。文件為它的代碼隱藏文件。該用戶(hù)控件添加了一個(gè)GridView控件,其ID屬性的值為gvCatalog。該控件顯示系統(tǒng)中的文章分類(lèi)信息。用戶(hù)控件CatalogUC.ascx的設(shè)計(jì)界面,9.4.3日歷用戶(hù)控件日歷用戶(hù)控件CalendarUC.ascx顯示日歷信息。文件為它的代碼隱藏文件。該用戶(hù)控件添加了一個(gè)日歷控件,其ID屬性的值為cDate。用戶(hù)控件CalendarUC.ascx的設(shè)計(jì)界面,9.4.4文章列表用戶(hù)控件文章列表用戶(hù)控件ArticleUC.ascx以列表形式顯示文章的信息。文件為它的代碼隱藏文件。該用戶(hù)控件添加了一個(gè)GridView控件,其ID屬性的值為gvArticle。該控件以列表形式顯示文章的信息,包括文章的標(biāo)題、摘要、評(píng)論數(shù)量、發(fā)布時(shí)間等。用戶(hù)控件ArticleUC.ascx的設(shè)計(jì)界面,9.4.5顯示文章用戶(hù)控件顯示文章用戶(hù)控件ShowArticleUC.ascx顯示文章的具體信息,如文章的標(biāo)題、評(píng)論次數(shù)、發(fā)表時(shí)間、發(fā)表用戶(hù)等。文件為它的代碼隱藏文件。該控件未添加任何效勞器端控件,它的設(shè)計(jì)界面,9.4.6顯示評(píng)論用戶(hù)控件顯示評(píng)論用戶(hù)控件ShowCommentUC.ascx顯示文章的評(píng)論。文件為它的代碼隱藏文件。該用戶(hù)控件添加一個(gè)GridView控件,ID屬性的值為gvComment。該控件顯示當(dāng)前文章的評(píng)論。用戶(hù)控件ShowCommentUC.ascx的設(shè)計(jì)界面,9.4.7評(píng)論用戶(hù)控件評(píng)論用戶(hù)控件AddCommentUC.ascx可以添加文章的評(píng)論。文件為它的代碼隱藏文件。該用戶(hù)控件添加3個(gè)TextBox控件、一個(gè)Button控件和兩個(gè)非空驗(yàn)證控件。它們的ID屬性的值分別為tbName、tbUserName、tbBody、btnAdd、rfBody和rfName。tbName和tbBody控件分別用來(lái)輸入評(píng)論的標(biāo)題和內(nèi)容。tbUserName控件用來(lái)顯示用戶(hù)的名稱(chēng)。btnAdd控件實(shí)現(xiàn)添加評(píng)論的功能。rfName和rfBody控件分別對(duì)用戶(hù)輸入評(píng)論的標(biāo)題和內(nèi)容進(jìn)行非空驗(yàn)證。用戶(hù)控件AddCommentUC.ascx的設(shè)計(jì)界面9.4.8Blog前臺(tái)頁(yè)面的實(shí)現(xiàn)原理Blog前臺(tái)頁(yè)面的均由兩局部組成:左版面和右版面。每一個(gè)版面包括其根本屬性和模塊列表,9.4.9Blog前臺(tái)頁(yè)面的配置文件Blog前臺(tái)頁(yè)面的配置文件為一個(gè)XML文件,名稱(chēng)為Default.xml。它存放在Face文件夾下。該配置文件包括<Faces>、<Default>〔為皮膚的名稱(chēng),由具體皮膚的名稱(chēng)確定〕、<Index>〔頁(yè)面的版面〕、<Modules>〔版面的模塊〕、<Module>〔具體模塊〕等5個(gè)級(jí)別的元素。9.4.10讀取Blog前臺(tái)配置文件讀取Blog前臺(tái)配置文件的功能由類(lèi)OperateXmlFile實(shí)現(xiàn)。它定義了3個(gè)靜態(tài)方法,具體描述如下:〔1〕publicstaticArrayListGetFaces(),獲取系統(tǒng)已經(jīng)定義的皮膚?!?〕publicstaticTableCellBase[]GetIndexPage(stringface),獲取Blog前臺(tái)的首頁(yè)的配置。〔3〕publicstaticTableCellBase[]GetShowArticlePage(stringface),獲取Blog前臺(tái)的顯示文章頁(yè)面的配置。9.4.11動(dòng)態(tài)加載Blog前臺(tái)的首頁(yè)Blog前臺(tái)的首頁(yè)由頁(yè)面Index.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面將顯示文章分類(lèi)、收藏日歷、調(diào)整皮膚下拉選擇框、文章列表等內(nèi)容。頁(yè)面Index.aspx的最終效果,9.4.12動(dòng)態(tài)加載Blog前臺(tái)的顯示文章頁(yè)面Blog前臺(tái)的顯示文章頁(yè)面由頁(yè)面ShowArticle.aspx實(shí)現(xiàn),文件為它的代碼隱藏文件。該頁(yè)面將顯示文章分類(lèi)、收藏日歷、文章具體信息、文章評(píng)論和提供評(píng)論的內(nèi)容輸入框等。頁(yè)面ShowArticle.aspx的最終效果,9.4.13動(dòng)態(tài)調(diào)整Blog平臺(tái)皮膚動(dòng)態(tài)調(diào)整Blog平臺(tái)皮膚功能由用戶(hù)控件SetSkin.ascx實(shí)現(xiàn),文件為它的代碼隱藏文件。該用戶(hù)控件添加了一個(gè)DropDownList控件,ID屬性的值為ddlSkin。它顯示系統(tǒng)中已經(jīng)存在的皮膚。注意:ddlSkin控件定義了SelectedIndexChanged事件,并且設(shè)置AutoPostBack屬性的值為true。假設(shè)當(dāng)用戶(hù)改變ddlSkin控件的選擇項(xiàng)時(shí),將觸發(fā)SelectedIndexChanged事件,并提交到效勞器。9.4.14收集文章訪問(wèn)來(lái)源收集文章訪問(wèn)來(lái)源功能由函數(shù)CollectArticleSource(intarticleID)實(shí)現(xiàn)。它將用戶(hù)的請(qǐng)求地址、IP地址等信息保存到數(shù)據(jù)庫(kù)。函數(shù)CollectArticleSource(intarticleID)的程序代碼如下所示。9.5用戶(hù)登錄和管理維護(hù)用戶(hù)信息包括注冊(cè)新用戶(hù)、修改用戶(hù)信息、修改用戶(hù)密碼和用戶(hù)管理等功能。實(shí)現(xiàn)這些功能的頁(yè)面〔如AddUser.aspx、UpdateUser.aspx等〕都保存在文件夾“Admin〞下。用戶(hù)登錄功能驗(yàn)證訪問(wèn)網(wǎng)站的用戶(hù)是否為合法用戶(hù),實(shí)現(xiàn)該功能的頁(yè)面保存在文件夾“Portal〞下。9.6文章分類(lèi)及其管理本小節(jié)主要介紹應(yīng)用程序Blog中與文章分類(lèi)相關(guān)的功能,如添加新的文章分類(lèi)、文章分類(lèi)管理和修改文章分類(lèi)等。在此,筆者定義了類(lèi)Catalog,它實(shí)現(xiàn)上述功能中的與數(shù)據(jù)庫(kù)相關(guān)的操作。類(lèi)Catalog定義了5個(gè)與文章分類(lèi)相關(guān)的數(shù)據(jù)訪問(wèn)層的操作。這5個(gè)方法的具體說(shuō)明如下:publicSqlDataReaderGetCatalogs(),獲取所有文章分類(lèi)。publicSqlDataReaderGetSingleCatalog(intcatalogID),獲取單個(gè)文章分類(lèi)。9.6.1添加新分類(lèi)添加新分類(lèi)由頁(yè)面AddCatalog.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。輸入新分類(lèi)的名稱(chēng)。添加新分類(lèi),并把新分類(lèi)的信息提交到數(shù)據(jù)庫(kù)中。返回到分類(lèi)管理頁(yè)面CatalogManage.aspx。9.6.2修改文章分類(lèi)修改分類(lèi)由頁(yè)面UpdateCatalog.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。修改分類(lèi)的名稱(chēng)和公開(kāi)程度。修改分類(lèi),并把修改后的分類(lèi)信息提交到數(shù)據(jù)庫(kù)中。返回到分類(lèi)管理頁(yè)面CatalogManage.aspx。9.6.3文章分類(lèi)管理分類(lèi)管理由頁(yè)面CatalogManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。以列表形式顯示分類(lèi)的信息。提供重定向到添加和修改分類(lèi)頁(yè)面的按鈕。提供刪除分類(lèi)的功能。9.7文章發(fā)布及其管理本小節(jié)主要介紹應(yīng)用程序Blog中與文章相關(guān)的功能,如添加新的文章、修改文章、文章管理、關(guān)聯(lián)文章訪問(wèn)來(lái)源和評(píng)論等。9.7.1添加新文章添加新文章由頁(yè)面AddArticle.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。輸入新文章的標(biāo)題和內(nèi)容。設(shè)置新文章的所屬分類(lèi),以及文章的公開(kāi)程度。添加新文章,并把新文章的信息提交到數(shù)據(jù)庫(kù)中。返回到文章管理頁(yè)面ArticleManage.aspx。9.7.2修改文章修改文章由頁(yè)面UpdateArticle.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)下面4個(gè)功能。編輯文章的標(biāo)題和內(nèi)容。修改文章的公開(kāi)程度。修改文章,并把修改后的文章信息提交到數(shù)據(jù)庫(kù)中。返回到文章管理頁(yè)面ArticleManage.aspx。9.7.3文章管理文章管理由頁(yè)面ArticleManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。以列表形式顯示文章的信息。提供重定向到管理文章訪問(wèn)來(lái)源、管理文章評(píng)論、修改文章等頁(yè)面的按鈕。提供刪除文章的功能。提供重定向到添加新文章的頁(yè)面的按鈕。9.7.4管理文章訪問(wèn)來(lái)源訪問(wèn)來(lái)源管理由頁(yè)面ArticleSourceManage.aspx實(shí)現(xiàn),文件為它的代碼隱藏文件。該頁(yè)面實(shí)現(xiàn)功能如下。以列表形式顯示文章的訪問(wèn)來(lái)源信息。提供刪除訪問(wèn)來(lái)源的功能。頁(yè)面ArticleSourceManage.aspx以列表形式顯示文章的訪問(wèn)來(lái)源信息,如訪問(wèn)來(lái)源的URL、IP地址等。9.7.5管理文章評(píng)論文章評(píng)論管理由頁(yè)面ArticleCommentManage.aspx實(shí)現(xiàn)文件為它的代碼隱藏文件。該頁(yè)面實(shí)現(xiàn)功能如下。以列表形式顯示文章評(píng)論的信息。提供刪除文章評(píng)論的功能。9.8鏈接及其管理本小節(jié)主要介紹應(yīng)用程序Blog中與鏈接相關(guān)的功能,如添加新的鏈接、鏈接管理和修改鏈接地址等。9.8.1鏈接管理鏈接管理由頁(yè)面UrlManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。以列表形式顯示鏈接的信息。提供重定向到添加和修改鏈接頁(yè)面的按鈕。提供刪除鏈接的功能。9.8.2添加新鏈接添加鏈接由頁(yè)面AddUrl.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。輸入新鏈接的名稱(chēng)和地址。添加新鏈接,并把新鏈接的信息提交到數(shù)據(jù)庫(kù)中。返回到鏈接管理頁(yè)面UrlManage.aspx。9.8.3修改鏈接地址修改鏈接地址由頁(yè)面UpdateUrl.aspx實(shí)現(xiàn),它的代碼隱藏文件為。該頁(yè)面實(shí)現(xiàn)功能如下。編輯鏈接的名稱(chēng)和地址。修改鏈接,并把修改后的鏈接信息提交到數(shù)據(jù)庫(kù)中。返回到鏈接管理頁(yè)面UrlManage.aspx。第10章社會(huì)標(biāo)簽——TagsTags,即社會(huì)標(biāo)簽〔Bookmark〕。它是一種更為靈活、有趣的文章或圖片等信息的分類(lèi)方式。用戶(hù)可以為每篇文章或每張圖片,或每條信息添加一個(gè)或多個(gè)標(biāo)簽,從而根據(jù)這些標(biāo)簽把這些文章或圖片或信息進(jìn)行分類(lèi)。本章將介紹如何創(chuàng)立一個(gè)社會(huì)標(biāo)簽——Tags系統(tǒng)。用戶(hù)可以在系統(tǒng)中創(chuàng)立自己的標(biāo)簽,也可以對(duì)文章或鏈接使用標(biāo)簽來(lái)標(biāo)記。10.1什么是Tags簡(jiǎn)單地,用戶(hù)可以把一個(gè)標(biāo)簽〔Tags〕理解為一個(gè)文章或圖片的分類(lèi)。標(biāo)簽,又被稱(chēng)為軟分類(lèi),即根據(jù)文章或者圖片或者信息的意義,由信息的組織者為信息指定一個(gè)或者多個(gè)“標(biāo)簽〞。傳統(tǒng)的分類(lèi),又稱(chēng)為硬分類(lèi),即就是發(fā)布文章或圖片或信息時(shí),所選擇的系統(tǒng)現(xiàn)有的固定的分類(lèi)。標(biāo)簽和分類(lèi)相比,具有以下特點(diǎn)或優(yōu)點(diǎn):分類(lèi)一般是事先預(yù)定好的。即文章或圖片屬于哪一個(gè)分類(lèi),事先就已經(jīng)規(guī)定好了。而標(biāo)簽不同,它是在文章或圖片完成之后,再由用戶(hù)添加的。10.2總體功能設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)本小節(jié)將介紹社會(huì)標(biāo)簽——Tags系統(tǒng)的總體功能設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì),以及數(shù)據(jù)庫(kù)中各個(gè)表之間的關(guān)系設(shè)計(jì)。10.2.1總體功能設(shè)計(jì)應(yīng)用程序WebTags實(shí)現(xiàn)的主要功能如下:1.用戶(hù)和角色管理功能2.標(biāo)簽及其分類(lèi)管理功能3.文章收藏及其管理功能4.鏈接收藏及其管理功能10.2.2表設(shè)計(jì)應(yīng)用程序WebTags主要包括用戶(hù)、角色、標(biāo)簽分類(lèi)、標(biāo)簽、文章、鏈接地址等數(shù)據(jù)。在此,筆者共創(chuàng)立了4個(gè)表〔其中,用戶(hù)和角色表已經(jīng)在Blog系統(tǒng)中介紹過(guò),在此不再介紹〕,它們的具體說(shuō)明如下。1.分類(lèi)表TagCatalog2.標(biāo)簽表Tag3.文章表TagArticle4.鏈接表TagUrl10.2.3表關(guān)系設(shè)計(jì)應(yīng)用程序WebTags的數(shù)據(jù)庫(kù)比較簡(jiǎn)單,各個(gè)表之間的關(guān)系如圖10.3所示。其中,標(biāo)簽表Tag引用標(biāo)簽分類(lèi)表TagCatalog的ID字段作為外鍵;文章表TagArticle和鏈接表TagUrl分別引用標(biāo)簽表Tag的ID字段作為外鍵。10.3應(yīng)用程序WebTags本小節(jié)主要介紹應(yīng)用程序WebTags的組成,及其通用模塊的設(shè)計(jì)。其中,該應(yīng)用程序由Web窗體頁(yè)、類(lèi)文件、主題文件、資源文件等組成。通用模塊包括一個(gè)名稱(chēng)為“模塊標(biāo)題〞的用戶(hù)控件ModuleTitle.ascx。它存放在UserControl目錄下。10.3.1應(yīng)用程序WebTags的組成應(yīng)用程序WebTags包含Admin、App_Code、App_Themes、Bin、Portal、UserControl目錄,以及頁(yè)面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展開(kāi)Portal目錄,在【解決方案資源管理器】面板中查看應(yīng)用程序WebTags,10.3.2系統(tǒng)配置文件Web.Config應(yīng)用程序WebTags的配置文件Web.Config放置在其的根目錄下。筆者在該文件中配置了訪問(wèn)數(shù)據(jù)庫(kù)Web2ASPNET2DB的鏈接字符串“datasource=localhost;userid=sa;pwd=dorient;database=Web2ASPNET2DB〞;同時(shí)還配置了應(yīng)用程序WebTags的驗(yàn)證方式為“Windows〞。10.3.3添加應(yīng)用程序的引用文件筆者向應(yīng)用程序WebTags添加了三個(gè)引用文件〔文件的后綴名為.dll〕。它們具體為:。。。10.3.4主頁(yè)Default.aspx應(yīng)用程序WebTags的主頁(yè)為Default.aspx頁(yè)面。在該頁(yè)面上,用戶(hù)可以查看所有標(biāo)簽、熱門(mén)標(biāo)簽,以及搜索標(biāo)簽。主頁(yè)Default.aspx的最終效果,10.3.5通用模塊設(shè)計(jì)該應(yīng)用程序中的通用模塊只包括模塊標(biāo)題用戶(hù)模塊,它的實(shí)現(xiàn)方法和應(yīng)用程序RSS中的通用模塊相同。10.3.6數(shù)據(jù)訪問(wèn)層設(shè)計(jì)在應(yīng)用程序WebTags的數(shù)據(jù)訪問(wèn)層中,筆者定義了操作與Tag相關(guān)內(nèi)容〔如標(biāo)簽、文章、鏈接等〕的類(lèi)Tag。類(lèi)Tag定義的操作或方法可以分為以下4種類(lèi)型:與標(biāo)簽分類(lèi)相關(guān)的操作。與標(biāo)簽相關(guān)的操作。與文章相關(guān)的操作。與鏈接相關(guān)的操作。10.4關(guān)鍵技術(shù)詳解本小節(jié)主要介紹應(yīng)用程序WebTags的關(guān)鍵技術(shù),如創(chuàng)立新標(biāo)簽、編輯標(biāo)簽屬性、查看標(biāo)簽、標(biāo)簽排行、移動(dòng)標(biāo)簽、搜索標(biāo)簽等。10.4.1創(chuàng)立新標(biāo)簽創(chuàng)立新標(biāo)簽由頁(yè)面AddTag.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上設(shè)置新標(biāo)簽的名稱(chēng)、選擇新標(biāo)簽所屬的標(biāo)簽種類(lèi)和公開(kāi)程度。該頁(yè)面的最終效果,10.4.2編輯標(biāo)簽屬性編輯標(biāo)簽屬性由頁(yè)面UpdateTag.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上編輯標(biāo)簽的名稱(chēng)、選擇標(biāo)簽所屬的標(biāo)簽種類(lèi)和公開(kāi)程度。該頁(yè)面的最終效果,10.4.3查看標(biāo)簽查看標(biāo)簽由頁(yè)面ViewTag.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上查看標(biāo)簽收藏的文章和鏈接。該頁(yè)面的最終效果,10.4.4標(biāo)簽排行標(biāo)簽排行由用戶(hù)控件ShowTags.ascx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該用戶(hù)控件上查看按瀏覽次數(shù)排序的標(biāo)簽。10.4.6搜索標(biāo)簽搜索標(biāo)簽由用戶(hù)控件SearchTag.ascx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該用戶(hù)控件上搜索給定關(guān)鍵字的標(biāo)簽。10.4.7管理標(biāo)簽管理標(biāo)簽由頁(yè)面TagManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上以列表形式查看所有標(biāo)簽,并且還可以對(duì)標(biāo)簽進(jìn)行添加、編輯和刪除等操作。該頁(yè)面的最終效果,10.4.8管理標(biāo)簽分類(lèi)管理標(biāo)簽分類(lèi)由頁(yè)面CatalogManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上以列表形式查看所有標(biāo)簽分類(lèi),并且還可以對(duì)標(biāo)簽分類(lèi)進(jìn)行添加、編輯和刪除等操作。該頁(yè)面的最終效果,10.4.9添加新的標(biāo)簽分類(lèi)添加新的標(biāo)簽分類(lèi)由頁(yè)面AddCatalog.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上設(shè)置新標(biāo)簽分類(lèi)的名稱(chēng)。該頁(yè)面的最終效果,10.4.10編輯標(biāo)簽分類(lèi)屬性編輯標(biāo)簽分類(lèi)屬性由頁(yè)面UpdateCatalog.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上編輯標(biāo)簽分類(lèi)的名稱(chēng)。該頁(yè)面的最終效果,10.5用戶(hù)登錄和管理本小節(jié)主要介紹應(yīng)用程序WebTags中與用戶(hù)相關(guān)的功能,如注冊(cè)新用戶(hù)、用戶(hù)登錄、用戶(hù)管理、修改用戶(hù)信息、修改密碼、退出系統(tǒng)等。10.5.1注冊(cè)新用戶(hù)注冊(cè)新用戶(hù)由頁(yè)面AddUser.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上設(shè)置新用戶(hù)的名稱(chēng)、密碼和電子郵件。該頁(yè)面的最終效果,10.5.2用戶(hù)登錄用戶(hù)登錄由頁(yè)面UserLogin.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以通過(guò)該頁(yè)面登錄到應(yīng)用系統(tǒng)的后臺(tái)。該頁(yè)面的最終效果,10.5.3用戶(hù)管理用戶(hù)管理由頁(yè)面UserManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上以列表形式查看所有用戶(hù),并且還可以對(duì)用戶(hù)進(jìn)行添加、編輯和刪除等操作。該頁(yè)面的最終效果,10.5.4修改用戶(hù)信息修改用戶(hù)信息由頁(yè)面UpdateUser.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上修改用戶(hù)的電子郵件。該頁(yè)面的最終效果,10.5.5修改密碼修改密碼由頁(yè)面UpdateUserPwd.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上修改用戶(hù)的密碼。該頁(yè)面的最終效果,10.5.6退出平臺(tái)退出平臺(tái)由頁(yè)面UserLogoff.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以通過(guò)該頁(yè)面來(lái)退出應(yīng)用系統(tǒng)。頁(yè)面UserLogoff.aspx在載入時(shí)觸發(fā)的事件Page_Load(objectsender,EventArgse)中初始化該頁(yè)面,實(shí)現(xiàn)功能如下?!?〕調(diào)用UserCommonOperation類(lèi)的靜態(tài)方法ClearAndAbandon()清空Session對(duì)象中保存的用戶(hù)信息,并停止當(dāng)前會(huì)話(huà);〔2〕重定向到用戶(hù)登錄頁(yè)面UserLogin.aspx。10.6收藏標(biāo)簽的文章和鏈接本小節(jié)主要介紹應(yīng)用程序WebTags中與標(biāo)簽的文章和鏈接相關(guān)的功能,如收藏文章、收藏鏈接、管理收藏的文章、管理收藏的鏈接等。10.6.1收藏新的文章收藏新文章由頁(yè)面AddArticle.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上設(shè)置新文章的名稱(chēng)和具體內(nèi)容,以及選擇新文章所屬的標(biāo)簽。該頁(yè)面的最終效果,10.6.2編輯文章屬性編輯文章屬性由頁(yè)面UpdateArticle.aspx實(shí)現(xiàn),代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上修改文章的名稱(chēng)和具體內(nèi)容。該頁(yè)面的最終效果,10.6.3管理收藏的文章管理收藏的文章由頁(yè)面ArticleManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上以列表形式查看所有文章,并且還可以對(duì)文章進(jìn)行添加、編輯和刪除等操作。該頁(yè)面的最終效果,10.6.4查看文章查看文章由頁(yè)面ViewArticle.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上查看指定文章的詳細(xì)信息,如文章的標(biāo)題、具體內(nèi)容等。該頁(yè)面的最終效果,10.6.5收藏新的鏈接收藏新的鏈接由頁(yè)面AddUrl.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上設(shè)置新鏈接的名稱(chēng)和地址,以及選擇新鏈接所屬的標(biāo)簽。該頁(yè)面的最終效果,10.6.6編輯鏈接屬性編輯鏈接屬性由頁(yè)面UpdateUrl.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上修改鏈接的名稱(chēng)和鏈接地址。該頁(yè)面的最終效果,10.6.7管理收藏的鏈接管理收藏的鏈接由頁(yè)面UrlManage.aspx實(shí)現(xiàn),它的代碼隱藏文件為。用戶(hù)可以在該頁(yè)面上以列表形式查看所有鏈接,并且還可以對(duì)鏈接進(jìn)行添加、編輯和刪除等操作。該頁(yè)面的最終效果,第11章提供Web效勞的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)目前,WebService〔Web效勞〕已經(jīng)在互聯(lián)網(wǎng)上有著廣泛的應(yīng)用。通過(guò)Web效勞可以將互聯(lián)網(wǎng)的效勞提供給互聯(lián)網(wǎng)的任何一個(gè)地方。本章將介紹如何創(chuàng)立一個(gè)提供Web效勞的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)。用戶(hù)通過(guò)Web效勞來(lái)管理〔如上載、下載等〕該系統(tǒng)中的文件和目錄。該系統(tǒng)的主頁(yè)面的效果,本章系統(tǒng)〔網(wǎng)絡(luò)應(yīng)用程序〕的名稱(chēng)為WebStore。11.1什么是Web效勞Web效勞〔WebService〕就是一套編程標(biāo)準(zhǔn)。它用來(lái)讓不同類(lèi)型的軟件可以通過(guò)網(wǎng)絡(luò)彼此聯(lián)系。Web效勞共同使用3種編程語(yǔ)言:可擴(kuò)展標(biāo)記語(yǔ)言〔XML〕、標(biāo)準(zhǔn)對(duì)象訪問(wèn)協(xié)議〔SOAP〕和Web效勞描述語(yǔ)言〔WSDL〕。XML是用來(lái)描述Web效勞的根本語(yǔ)言。如果Web效勞提供的功能或信息是一封新的具體內(nèi)容,那么SOAP就是虛擬信封。它描述該信件內(nèi)容、寄到何處。WSDL那么提供讓不同類(lèi)型的軟件直接聯(lián)系對(duì)方的方式。11.1.1Web效勞概述雖然,Web效勞可以在整個(gè)互聯(lián)網(wǎng)上應(yīng)用,然而,不同公司〔如微軟、SUN、IBM等〕對(duì)Web效勞的描述不盡相同。1.微軟公司對(duì)Web效勞的描述2.SUN公司對(duì)Web效勞的描述3.IBM公司對(duì)Web效勞的描述4.BEA公司對(duì)Web效勞的描述11.1.2.NET中的Web效勞技術(shù)微軟.NET中提供了基于XML的Web效勞技術(shù),并稱(chēng)為XMLWeb效勞。在微軟的MSDN幫助文檔中是這樣描述XMLWeb效勞的:“XMLWeb效勞是提供特定功能元素〔如應(yīng)用程序邏輯〕的可編程實(shí)體,任何數(shù)量的、可能是完全不同的系統(tǒng)都可以用常見(jiàn)的Internet標(biāo)準(zhǔn)〔如XML和HTTP〕進(jìn)行訪問(wèn)。XMLWeb效勞在很大程度上依賴(lài)于對(duì)XML和其他Internet標(biāo)準(zhǔn)的廣泛接受,由此創(chuàng)立的支持應(yīng)用程序互操作性的根底結(jié)構(gòu),才得以解決許多以前阻礙此類(lèi)嘗試的問(wèn)題。〞11.1.3創(chuàng)立Web效勞MyWebService本小節(jié)介紹在Sample_11_01中創(chuàng)立Web效勞MyWebService,并在該效勞中定義4個(gè)方法:Add、Sub、Multiply和Divide。這4個(gè)方法分別執(zhí)行加、減、乘和除操作。運(yùn)行該Web效勞之后,如圖11.2所示。單擊【Add】鏈接,調(diào)用方法Add(),操作界面,11.1.4引用Web效勞MyWebService本小節(jié)介紹將上述創(chuàng)立的Web效勞MyWebService添加到應(yīng)用程序Sample_11_01中。具體操作步驟如下。〔1〕在【解放方案資源管理器】面板中,右擊【D:\...\Sample_11_01\】節(jié)點(diǎn),并選擇【添加Web引用】命令,11.1.5Web效勞MyWebService的發(fā)現(xiàn)機(jī)制Web效勞MyWebService的發(fā)現(xiàn)機(jī)制提供了發(fā)現(xiàn)Web效勞的相關(guān)信息,如引用Web效勞的鏈接地址、支持的協(xié)議等。11.1.6Web效勞MyWebService的發(fā)現(xiàn)地圖Web效勞MyWebService的發(fā)現(xiàn)機(jī)制地圖提供了Web效勞結(jié)果相關(guān)的信息,如類(lèi)型、引用地址、發(fā)現(xiàn)機(jī)制文檔等。11.1.7Web效勞MyWebService的效勞描述語(yǔ)言文檔Web效勞的效勞描述語(yǔ)言〔WebServiceDescriptionLanguage,簡(jiǎn)稱(chēng)為WSDL〕比較復(fù)雜。它是一種用于描述Web效勞或者網(wǎng)絡(luò)端點(diǎn)的基于XML的語(yǔ)言。它一般描述Web效勞之間的消息處理機(jī)制、Web效勞的位置、Web效勞之間的通訊協(xié)議等。11.2總體功能設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)本小節(jié)將介紹提供Web效勞的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的總體功能設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì),以及數(shù)據(jù)庫(kù)中各個(gè)表之間的關(guān)系設(shè)計(jì)。11.2.1總體功能設(shè)計(jì)應(yīng)用程序WebStore實(shí)現(xiàn)的主要功能如下。1.用戶(hù)和角色管理功能2.網(wǎng)絡(luò)文件目錄及其管理功能3.網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)平臺(tái)4.網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的Web效勞11.2.2表設(shè)計(jì)應(yīng)用程序WebStore主要包括用戶(hù)、角色、目錄、文件、文件內(nèi)容、文件鏈接等數(shù)據(jù)。在此,筆者共創(chuàng)立了4個(gè)表〔其中,用戶(hù)和角色表已經(jīng)在Blog系統(tǒng)中介紹過(guò),在此不再介紹〕,它們的具體說(shuō)明如下。1.目錄表WebDirectory2.文件表WebFile3.文件內(nèi)容表WebFileData4.文件鏈接表WebFileUrl11.2.3表關(guān)系設(shè)計(jì)應(yīng)用程序WebStore的數(shù)據(jù)庫(kù)比較簡(jiǎn)單,各個(gè)表之間的關(guān)系,其中,文件表WebFile引用目錄表WebDirectory的ID字段作為外鍵;文件內(nèi)容表WebFileData和文件鏈接表WebFileUrl分別引用文件表WebFile的ID字段作為外鍵。11.3應(yīng)用程序WebStore本小節(jié)主要介紹應(yīng)用程序WebStore的組成,及其通用模塊的設(shè)計(jì)。其中,該應(yīng)用程序由Web窗體頁(yè)、類(lèi)文件、主題文件、資源文件等組成。通用模塊包括一個(gè)名稱(chēng)為“模塊標(biāo)題〞的用戶(hù)控件ModuleTitle.ascx。它存放在UserControl目錄下。11.3.1應(yīng)用程序WebStore的組成應(yīng)用程序WebStore包含Admin、App_Code、App_Themes、Bin、App_WebReferences、Portal、UserControl、WebStore目錄,以及頁(yè)面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展開(kāi)Admin、App_WebReferences和Portal目錄,在【解決方案資源管理器】面板中查看應(yīng)用程序WebStore,11.3.2系統(tǒng)配置文件Web.Config應(yīng)用程序WebStore的配置文件Web.Config放置在其的根目錄下。筆者在該文件中配置了訪問(wèn)數(shù)據(jù)庫(kù)Web2ASPNET2DB的鏈接字符串“datasource=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB〞;同時(shí)還配置了應(yīng)用程序WebStore的驗(yàn)證方式為“Windows〞。11.3.3添加應(yīng)用程序的引用文件筆者向應(yīng)用程序WebStore添加了3個(gè)引用文件〔文件的后綴名為.dll〕。它們?nèi)缦滤尽?。。?1.3.4主頁(yè)Default.aspx應(yīng)用程序WebStore的主頁(yè)Default.aspx特別簡(jiǎn)單。該頁(yè)面在Page_Load(objectsender,EventArgse)事件中定向到用戶(hù)登錄頁(yè)面UserLogin.aspx。程序代碼如下。protectedvoidPage_Load(objectsender,EventArgse){Response.Redirect("~/Portal/UserLogin.aspx");///重定向到登錄頁(yè)面}11.3.5通用模塊設(shè)計(jì)該應(yīng)用程序中的通用模塊只包括模塊標(biāo)題用戶(hù)模塊,它的實(shí)現(xiàn)方法和應(yīng)用程序RSS中的通用模塊相同。11.3.6定義系統(tǒng)常量應(yīng)用程序WebStore在類(lèi)WebStore中定義了3個(gè)常量:TextStringLength、NormalRoleID和WebStoreProjectID。11.4關(guān)鍵技術(shù)詳解本小節(jié)主要介紹網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)WebStore中的關(guān)鍵技術(shù),如創(chuàng)立網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的Web效勞〔包括上載文件、下載文件等效勞〕、添加Web效勞、普通上載文件技術(shù)、使用Web效勞上載或下載文件等。11.4.1創(chuàng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年純電動(dòng)汽車(chē)租賃合同格式樣本空白
- 勞務(wù)派遣合同的解讀協(xié)議書(shū)
- 2024旅行社國(guó)際游學(xué)項(xiàng)目合同范本助力青少年成長(zhǎng)3篇
- 2024年高新技術(shù)園區(qū)員工創(chuàng)新創(chuàng)業(yè)出差支持合同3篇
- 2024木材原材料研發(fā)與應(yīng)用合作合同3篇
- 2024年網(wǎng)絡(luò)安全與保護(hù)合同
- 2024年金融服務(wù)銷(xiāo)售合同臺(tái)賬編制指南3篇
- 2024年版股權(quán)轉(zhuǎn)讓及回購(gòu)合同
- 2024正規(guī)區(qū)域環(huán)保設(shè)備代理合同范本(含技術(shù)支持)2篇
- 二零二五年度全新公積金個(gè)人住房貸款合同編號(hào)規(guī)范3篇
- 網(wǎng)絡(luò)加速器提供商服務(wù)合同
- 2024版新能源汽車(chē)充電站電線(xiàn)電纜采購(gòu)合同2篇
- 轉(zhuǎn)讓押金協(xié)議合同范例
- 國(guó)家藥包材檢驗(yàn)標(biāo)準(zhǔn)培訓(xùn)
- 腫瘤科危急重癥護(hù)理
- 江蘇省蘇州市2024-2025學(xué)年第一學(xué)期八年級(jí)英語(yǔ)期末模擬試卷(一)(含答案)
- 2024-2030年中國(guó)加速器行業(yè)發(fā)展趨勢(shì)及運(yùn)營(yíng)模式分析報(bào)告版
- 護(hù)理查房深靜脈置管
- 運(yùn)動(dòng)障礙護(hù)理查房
- 計(jì)算與人工智能概論知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋湖南大學(xué)
- 2024年度油漆涂料生產(chǎn)線(xiàn)租賃合同3篇
評(píng)論
0/150
提交評(píng)論