

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> DOTNET版的個(gè)人博客實(shí)現(xiàn)</p><p><b> 摘 要</b></p><p> 博客,是最近幾年出現(xiàn)的一個(gè)新現(xiàn)象?!八闪祟愃朴趥€(gè)人主頁(yè)的東西,但又無需雕飾,只需自由而隨意地表達(dá)自己的看法即可,類似于一種公開的個(gè)人日記”。這樣的說法恐怕代表了一種很大眾化的傾向?! ∑鋵?shí),博客已經(jīng)開始其初現(xiàn)商業(yè)價(jià)值:博客炒紅了很多平凡的人。像木子
2、美、李尋歡、芙蓉姐姐等就是典型的例子。走紅后的這些網(wǎng)絡(luò)紅人隨后便開始接拍電影、做廣告、演講走秀等,進(jìn)行商業(yè)圈內(nèi)的各種活動(dòng)。相信不久還會(huì)涌現(xiàn)出一批像網(wǎng)絡(luò)歌手龐龍、楊臣剛一樣紅得發(fā)紫的人才,這足以讓更多的人趨之若騖。從博客的開發(fā)經(jīng)濟(jì)價(jià)值來看,盡管有人想到在這里牟利,目前雖然還沒有當(dāng)成一種產(chǎn)業(yè)來發(fā)展,大多網(wǎng)絡(luò)空間區(qū),還是閑暇的場(chǎng)所;但是,隨著高科技的發(fā)展,我想,博客的功能會(huì)更加健全,人們的交往將從虛擬走向現(xiàn)實(shí)。在高科技的支撐下,從事這個(gè)平臺(tái)的
3、人就會(huì)增加,一些開發(fā)商可能會(huì)對(duì)這塊肥肉很感興趣,投資開發(fā)博客的廠商就會(huì)有可能像今天發(fā)展網(wǎng)上商店一樣多如牛毛。博客是因特網(wǎng)的產(chǎn)物,所以,同時(shí)它亦結(jié)合了多媒體技術(shù)在里,說到多媒體這個(gè)方面嘛,先說說其兩個(gè)顯著特點(diǎn):首先是它的綜合性,它將計(jì)算機(jī)、聲像、通信技術(shù)合為一體,是計(jì)算機(jī)、電視機(jī)、錄像機(jī)、錄音機(jī)、音響、游戲機(jī)</p><p> 關(guān)鍵詞 ASP.NET2.0 / .NET XML/ 博客</p>&l
4、t;p> DOTNET version of the personal blog realize</p><p><b> Abstract</b></p><p> Blog, in recent years there has been a new phenomenon. "It has become similar to the perso
5、nal home page of things, but without Carving only free and freely express their own views only. similar to an open personal diary. " I am afraid this statement on behalf of a very popular trend. In fact, the blog ha
6、s begun its early commercial value : red blog speculation of a lot of ordinary people. Like Mu Zimei, Lixinhuan, Sister Furong, etc., is a typical example. The success of these networks will begi</p><p> Ke
7、ywords: ASP.NET2.0/. NET/ XML/ blog </p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 1 緒 論1</b></p&g
8、t;<p> 1.1 課題背景1</p><p> 1.2課題研究目的和研究?jī)?nèi)容1</p><p> 1.3 設(shè)計(jì)思想1</p><p> 2 開發(fā)工具介紹3</p><p> 2.1 VS2005的介紹3</p><p> 2.2 DOTNET的簡(jiǎn)介6</p>&l
9、t;p> 2.3 SQL SERVER2005數(shù)據(jù)庫(kù)支持11</p><p><b> 3需求分析14</b></p><p> 3.1研究設(shè)計(jì)中要解決的問題14</p><p> 3.1.1 市場(chǎng)需求14</p><p> 3.1.2功能分析14</p><p>
10、3.1.3性能分析14</p><p> 3.1.4 系統(tǒng)功能圖15</p><p> 3.2具體實(shí)現(xiàn)中采用的關(guān)鍵技術(shù)及復(fù)雜性分析17</p><p> 3.2.1系統(tǒng)結(jié)構(gòu)17</p><p> 3.2.2用戶管理18</p><p> 3.2.3頁(yè)面結(jié)構(gòu)19</p><p&g
11、t; 3.2.4 ASP.NET對(duì)象的使用19</p><p> 3.2.5 采用了UrlReWrite技術(shù)21</p><p> 3.2.6頁(yè)面出錯(cuò)處理26</p><p> 4 設(shè)計(jì)與實(shí)現(xiàn)27</p><p> 4.1設(shè)計(jì)實(shí)現(xiàn)的策略和算法描述27</p><p> 4.1.1 BLOG設(shè)計(jì)思想
12、27</p><p> 4.1.2 BLOG數(shù)據(jù)庫(kù)設(shè)計(jì)27</p><p> 4.1.3數(shù)據(jù)訪問29</p><p> 4.1.4數(shù)據(jù)綁定30</p><p> 4.1.5 RSS的實(shí)現(xiàn)31</p><p> 4.2編程模型及數(shù)據(jù)結(jié)構(gòu)33</p><p><b>
13、 5 總結(jié)34</b></p><p> 5.1技術(shù)總結(jié)34</p><p> 5.2頁(yè)面預(yù)覽35</p><p><b> 致謝38</b></p><p><b> 主要參考文獻(xiàn)39</b></p><p><b> 1 緒 論
14、</b></p><p><b> 1.1 課題背景</b></p><p> DOTNET一出現(xiàn),就在C/S和B/S結(jié)構(gòu)的軟件開發(fā)中占據(jù)著重要的地們。如今DOTNET已經(jīng)在B/S開發(fā)中得到了廣泛的應(yīng)用,而且很多企業(yè)都采用DOTNET的B/S結(jié)構(gòu)才開發(fā)自己企業(yè)的產(chǎn)品網(wǎng)站,以及企業(yè)內(nèi)部的管理系統(tǒng)。</p><p> DOTNET
15、之所以可以在發(fā)布很短的時(shí)間里就得到如此好的成績(jī),與微軟產(chǎn)品的人性化設(shè)計(jì)分不開,加上VS2005(該博客采用的開發(fā)環(huán)境)的所見即所得大大減少了軟件開發(fā)的周期,同時(shí)也保證了開發(fā)難度和后期測(cè)試的工作可以有效進(jìn)行。</p><p> DOTNET在B/S開發(fā)中如此容易,那么在各類的中大型的門戶網(wǎng)站中都為用戶準(zhǔn)備了博客,讓大家可以擁有自己的空間。如此,如何滿足廣大用戶對(duì)自定義的博客的需求,我在基本對(duì)DOTNET的B/S開
16、發(fā)能力得到保證的基礎(chǔ)上,盡量采用了DOTNET中新的元素,個(gè)人博客的實(shí)現(xiàn)正是采用了DOTNET的可視公開發(fā)環(huán)境,使博客界面在開發(fā)初期就呈現(xiàn)出來,讓開發(fā)者可以容易修改和測(cè)試實(shí)際效果。</p><p> 1.2課題研究目的和研究?jī)?nèi)容</p><p> 該個(gè)人博客是采用DOTNET的B/S模式三層結(jié)構(gòu)設(shè)計(jì)模式,設(shè)計(jì)中所用到的技術(shù)都是B/S開發(fā)所需要的技術(shù)知識(shí),其中包括MasterPage,U
17、RL重寫技術(shù),SQL2005數(shù)據(jù)操作,存儲(chǔ)過程,XML技術(shù),RSS技術(shù),以及ASP.NET的對(duì)象,對(duì)這些技術(shù)知識(shí)的應(yīng)用,將所以B/S基礎(chǔ)開發(fā)的技術(shù)包括在內(nèi),以利于將來參加工作對(duì)DOTNET技術(shù)知識(shí)的需求。</p><p><b> 1.3 設(shè)計(jì)思想</b></p><p> 該個(gè)人博客的采用文章瀏覽與用戶管理相分離的設(shè)計(jì)模式,各自與數(shù)據(jù)庫(kù)直接操作。</p&g
18、t;<p> 在用戶管理這塊,用戶正確登陸后可以修改自己的登陸信息,對(duì)文章進(jìn)行修改和 ASP另一個(gè)亮點(diǎn)是它使用ADO對(duì)象,ODBC, OLE-DB和事務(wù)處理管理器。因此ASP Web添加的操作,另外還有對(duì)文章類型的添加操作,對(duì)文件的管理中,可以把文章分類管理;在文章瀏覽這一塊,把頁(yè)面分成四部分,即頂部的大標(biāo)題,左側(cè)的文章類型分類,右側(cè)的文章列表,下部的版權(quán)信息;同時(shí)在頂部的大標(biāo)題中列出菜單導(dǎo)航。</p>
19、<p> 在頂部區(qū)域分為L(zhǎng)OG和導(dǎo)航菜單,導(dǎo)航菜單主要是包括不同類別的文章菜單以及鏈接到用戶管理系統(tǒng)。在左側(cè)實(shí)現(xiàn):博客歡迎信息以及作者的簡(jiǎn)單信息,文章類別,還有RSS的XML實(shí)現(xiàn),還有一些特別的鏈接技術(shù)圖片。右側(cè)的實(shí)現(xiàn)比較復(fù)雜,主要是根據(jù)選擇進(jìn)行加載不同的頁(yè)面,最主要的是文章列表和文章瀏覽,在瀏覽文章時(shí),顯示評(píng)論中的前五條記錄,瀏覽者可以查看所有的評(píng)論,還可以自己參與評(píng)論。</p><p><
20、;b> 2 開發(fā)工具介紹</b></p><p> 2.1 VS2005的介紹</p><p> 微軟公司在2005年12月初發(fā)布新一代企業(yè)級(jí)應(yīng)用開發(fā)平臺(tái).NET Framework 2.0和開發(fā)工具Visual Studio 2005。 現(xiàn)代信息部門的開發(fā)團(tuán)隊(duì)必須因應(yīng)高度競(jìng)爭(zhēng)的商業(yè)環(huán)境,快速進(jìn)行應(yīng)用軟件系統(tǒng)的設(shè)計(jì)、開發(fā)、測(cè)試以及部署帶領(lǐng)
21、企業(yè)贏得市場(chǎng)。大部分的軟件開發(fā)團(tuán)隊(duì),都面臨以下幾項(xiàng)挑戰(zhàn):開發(fā)團(tuán)隊(duì)間的溝通困難,開發(fā)工具形形色色,分散且難以互相整合開發(fā)程序、開發(fā)標(biāo)準(zhǔn)難以建立。 Microsoft Visual Studio 2005 開發(fā)工具系列,有許多令人期盼已久的強(qiáng)化功能,提供更高的程序開發(fā)效率、更精簡(jiǎn)的程序代碼、與更佳的安全性。課程將介紹這些令人贊賞的新特色,包括 .NET Framework 2.0、ASP.NET 2.0、64-b
22、it 程序開發(fā)支持、新的 Windows Form 程序設(shè)計(jì)、以及對(duì)行動(dòng)裝置解決方案的全新開發(fā)支持。更精彩的是,首度推出的 Visual Studio Team System 是與開發(fā)工具完全整合的軟件開發(fā)生命周期管理平臺(tái),與 Agile 方法論以及 CMMI 規(guī)范整合,除了軟件開發(fā)流程更加嚴(yán)謹(jǐn)之外,軟件開發(fā)的質(zhì)量與時(shí)間也更能掌</p><p> 下面就是VS2005的開發(fā)環(huán)境。</p><
23、;p> 圖1-1 VS2005的開發(fā)環(huán)境</p><p> ?。?)下面的是屬性欄。</p><p><b> 圖1-2 屬性欄</b></p><p> ?。?)下面的是VS2005環(huán)境中的工具箱</p><p> 圖1-3 工具箱(4)下面的是VS2005中的解決方案資源管理器(本設(shè)計(jì)中的解決方案)&
24、lt;/p><p> 圖1-4 資源管理器</p><p> 以上各部分將在本設(shè)計(jì)中經(jīng)常用到。也是VS2005開發(fā)過程中經(jīng)常需要對(duì)代碼控件進(jìn)行設(shè)置和修改的地方。</p><p> 在VS2005開發(fā)B/S軟件過程中,以aspx結(jié)尾的文件是前臺(tái)文件,而以aspx.cs才是后臺(tái)操作代碼。是與前臺(tái)文件分離出來了,有助于我們相對(duì)自己需要的操作對(duì)代碼進(jìn)行修改和更新。<
25、/p><p> 圖1-5視圖代碼切換</p><p> 點(diǎn)擊“設(shè)計(jì)”或“源碼”就可以在前臺(tái)視圖和前臺(tái)代碼之間進(jìn)行切換。</p><p> 2.2 DOTNET的簡(jiǎn)介</p><p> MicroSoft .NET的策略是將互聯(lián)網(wǎng)本身作為構(gòu)建新一代操作系統(tǒng)的基礎(chǔ),對(duì)互聯(lián)網(wǎng)和操作系統(tǒng)的設(shè)計(jì)思想進(jìn)行合理延伸。這樣,開發(fā)人員必將創(chuàng)建出擺脫設(shè)備硬件
26、束縛的應(yīng)用程序,以便輕松實(shí)現(xiàn)互聯(lián)網(wǎng)連接。MicroSoft .NET無疑是當(dāng)今計(jì)算機(jī)技術(shù)通向計(jì)算時(shí)代的一個(gè)非常重要的里程碑。 .NET的核心組件有: 一組用于創(chuàng)建互聯(lián)網(wǎng)操作系統(tǒng)的構(gòu)建塊,其中包括Passport.NET(用于用戶認(rèn)證)以及用于文件存儲(chǔ)的服務(wù)、用戶首選項(xiàng)管理、日歷管理以及眾多的其它任務(wù)。 構(gòu)建和管理新一代服務(wù)的基本結(jié)構(gòu)和工具,包括Visual Studio.NET、.NET企業(yè)服務(wù)器、.NET
27、框架和Windows.NET 。 能夠啟用新型智能互聯(lián)網(wǎng)設(shè)備的.NET設(shè)備軟件。 </p><p> .NET對(duì)最終用戶來說非常重要,因?yàn)橛?jì)算機(jī)的功能將會(huì)得到大幅度提升,同時(shí)計(jì)算機(jī)操作也會(huì)變得非常簡(jiǎn)單。特別地,用戶將完全擺脫人為的硬件束縛:用戶可以自由沖浪于互聯(lián)網(wǎng)的多維時(shí)空,而不是束縛在便攜式電腦的方寸空間——可通過任何桌面系統(tǒng)、任何便攜式電腦、任何移動(dòng)電話或PDA進(jìn)行訪問,并可對(duì)其進(jìn)行跨應(yīng)用程序的集成
28、。 .NET可使用戶輕松進(jìn)行互聯(lián)網(wǎng)連接,并輕松完成那些在當(dāng)今看來十分費(fèi)時(shí)而且費(fèi)力的事務(wù),它們往往要求用戶進(jìn)行數(shù)據(jù)重輸入并需運(yùn)行幾個(gè)小時(shí)才能完成。通過將多項(xiàng)安全數(shù)據(jù)流合并到單一的用戶界面(或者甚至是可編程決策引擎),.NET架構(gòu)將用戶從充斥于當(dāng)今Web的數(shù)據(jù)豎井的束縛中解脫出來。用戶可以自由訪問、自由查看、自由使用他們的數(shù)據(jù)。 .NET對(duì)開發(fā)人員來說也十分重要,因?yàn)樗坏珪?huì)改變開發(fā)人員的開發(fā)應(yīng)用程序的方式,而且使得開發(fā)
29、人員能創(chuàng)建出全新的各種應(yīng)用程序。新型開發(fā)范例的核心是Web服務(wù)這個(gè)概念的引入。Web服務(wù)是一種通過簡(jiǎn)單對(duì)象訪問協(xié)議(SOAP),在互聯(lián)網(wǎng)上展露其功能性的、極為公開的服務(wù)。SOAP是一種基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)制定的協(xié)議。 在過去,開發(fā)人員通</p><p> .NET正是根據(jù)這種Web服務(wù)原則而創(chuàng)建的,微軟目前正著手提供這個(gè)基本結(jié)構(gòu),以便通過.NET平臺(tái)的每一部分來實(shí)現(xiàn)這種新型的Web服務(wù)。而V
30、isual Studio.NET、.NET框架、Windows.NET和.NET企業(yè)服務(wù)器,正是為進(jìn)行基于Web服務(wù)模型的應(yīng)用程序開發(fā)而度身定做的新一代開發(fā)工具和基本結(jié)構(gòu)。.NET構(gòu)建塊服務(wù)、新增的.NET設(shè)備支持以及即將到來的.NET用戶體驗(yàn),將為人們徹底攻克這一難題劃上一個(gè)圓滿的句號(hào),使人們能夠充分利用Web服務(wù)模型,如愿以償?shù)亻_發(fā)出新一代應(yīng)用程序。</p><p> NET Enterprise Serv
31、ers和Windows 2000操作系統(tǒng),為創(chuàng)建具有高度可管理性的、能迅速投入市場(chǎng)的應(yīng)用程序提供了堅(jiān)實(shí)基礎(chǔ)。它們利用的是可擴(kuò)展標(biāo)記語(yǔ)言(XML),因此隨著Web體系結(jié)構(gòu)的革新,在此平臺(tái)上創(chuàng)建的程序依然很有價(jià)值。 .NET平臺(tái)的核心是,采用有效的、分門別類的方式來構(gòu)建應(yīng)用程序,達(dá)到其前所未有的規(guī)模。該平臺(tái)上的Web服務(wù)模型指的是:企業(yè)應(yīng)用程序的中心業(yè)務(wù)要素通常由本地管理,而支持它們的服務(wù)(如用戶認(rèn)證、文件存儲(chǔ)、用戶首選項(xiàng)管理、日歷
32、、郵件等等)卻無須本地管理,可以被無縫訂購(gòu)。為了存儲(chǔ)用戶文件和郵件,IT專業(yè)人員往往在服務(wù)器上安裝新的獨(dú)立磁盤冗余陣列(RAID陣列),而有了.NET,他們?cè)谶@一方面將會(huì)花費(fèi)較少的精力,而更多地致力于怎樣為公司增加效益。 該Web服務(wù)模型還將動(dòng)態(tài)配置新軟件的發(fā)布和更新。用戶將以極其緊密的連接方式工作,因此更易于管理。而簡(jiǎn)化的管理又可使IT專業(yè)人員更能適應(yīng)變幻莫測(cè)的業(yè)務(wù)需求。 開發(fā)應(yīng)用程序的.NET Web服務(wù)模型將為企業(yè)
33、應(yīng)用程序的創(chuàng)建開辟一條新路。通過企業(yè)內(nèi)外多種服務(wù)的聯(lián)合,很容易把企業(yè)內(nèi)部數(shù)據(jù)和客戶</p><p> ASP.NET 網(wǎng)絡(luò) 服務(wù)體系架構(gòu)為用ASP.NET建立網(wǎng)絡(luò) 服務(wù)提供了一高級(jí)可編程模板。雖然建立網(wǎng)絡(luò)服務(wù)并不需要使用網(wǎng)絡(luò) 服務(wù)平臺(tái),但是它提供許多的優(yōu)點(diǎn)將簡(jiǎn)化開發(fā)過程,并且它使用的編程模型對(duì)用ASP或VB工作的開發(fā)人員來說是很熟悉的。使用這個(gè)可編程模型,開發(fā)人員不需要理解HTTP、SOAP或其它任何網(wǎng)絡(luò)服務(wù)規(guī)
34、范。 開發(fā)人員用ASP.NET生成一個(gè)擴(kuò)展名為.asmx的文件,并把此文件配制為網(wǎng)絡(luò)應(yīng)用程序的一部分,就建立起了一個(gè)網(wǎng)絡(luò) 服務(wù)。ASMX文件或者包含對(duì)在其它地方定義的受控類的引用,或者包含這個(gè)類的定義。這個(gè)類是由ASP.NET提供的WebService類所派生。公有的類方法在標(biāo)記上WebMethod屬性后,就會(huì)成為網(wǎng)絡(luò)服務(wù)方法,把HTTP請(qǐng)求發(fā)送到ASMX文件中的URL后,這些方法就會(huì)被調(diào)用。你不必手工為你的網(wǎng)絡(luò)服務(wù)建立一個(gè)契約
35、。當(dāng)被調(diào)用者請(qǐng)求時(shí),ASP.NET檢查類的元數(shù)據(jù),以自動(dòng)生成SCL文件。 客戶可通過SOAP,HTTP GET 和HTTP POST提交請(qǐng)求。對(duì)方法和參數(shù)進(jìn)行編碼的約定是:對(duì)HTTP GET,將被編碼為查詢字符串;對(duì)HTTP POST,將被</p><p> ASP.NET前臺(tái)頁(yè)面是采用DHTML,即動(dòng)態(tài)HTML。</p><p> 由于當(dāng)今很多企業(yè)級(jí)系統(tǒng)采用B/S架構(gòu)開發(fā),相
36、當(dāng)多的頁(yè)面內(nèi)容要和數(shù)據(jù)庫(kù)打交道,單純依靠HTML和JavaScript已經(jīng)無法實(shí)現(xiàn),必須采用新的技術(shù)——這就是動(dòng)態(tài)HTML。所謂動(dòng)態(tài)HTML(Dynamic HTML,簡(jiǎn)稱DHTML),其實(shí)并不是一門新的語(yǔ)言,它只是HTML、CSS和客戶端腳本的一種集成。</p><p> DHTML建立在原有技術(shù)的基礎(chǔ)上,可分為三個(gè)方面:</p><p> 一是HTML,也就是頁(yè)面中的各種頁(yè)面元素對(duì)
37、象,它們是被動(dòng)態(tài)操縱的內(nèi)容; </p><p> 二是CSS,CSS屬性也是動(dòng)態(tài)操縱的內(nèi)容,從而獲得動(dòng)態(tài)的格式效果; </p><p> 三是客戶端腳本(例如JavaScript),它實(shí)際操縱Web頁(yè)上的HTML和CSS。 </p><p> 使用DHTML技術(shù),可使網(wǎng)頁(yè)設(shè)計(jì)者創(chuàng)建出能夠與用戶交互并包含動(dòng)態(tài)內(nèi)容的頁(yè)面。實(shí)際上,DHTML使網(wǎng)頁(yè)設(shè)計(jì)者可以動(dòng)態(tài)操縱
38、網(wǎng)頁(yè)上的所有元素——甚至是在這些頁(yè)面被裝載以后。利用DHTML,網(wǎng)頁(yè)設(shè)計(jì)者可以動(dòng)態(tài)地隱藏或顯示內(nèi)容、修改樣式定義、激活元素以及為元素定位。DHTML還可使網(wǎng)頁(yè)設(shè)計(jì)者在網(wǎng)頁(yè)上顯示外部信息,方法是將元素捆綁到外部數(shù)據(jù)源(如文件和數(shù)據(jù)庫(kù))上。所有這些功能均可用瀏覽器完成而無需請(qǐng)求Web服務(wù)器,同時(shí)也無需重新裝載網(wǎng)頁(yè)。這是因?yàn)橐磺泄δ芏及贖TML文件中,隨著對(duì)網(wǎng)頁(yè)的請(qǐng)求而一次性下載到瀏覽器端。</p><p> 可
39、見,DHTML技術(shù)是一種非常實(shí)用的網(wǎng)頁(yè)設(shè)計(jì)技術(shù)[2]。</p><p> 2.3 SQL SERVER2005數(shù)據(jù)庫(kù)支持</p><p> 該BLOG采用SQL Server2005作為數(shù)據(jù)庫(kù), SQL Server2005的10個(gè)最重要的特點(diǎn)。NET框架主機(jī) 使用SQL Server2005,開發(fā)人員通過使用相似的語(yǔ)言,例如微軟的VisualC#.NET和微軟的VisualBasic
40、,將能夠創(chuàng)立數(shù)據(jù)庫(kù)對(duì)象。開發(fā)人員還將能夠建立兩個(gè)新的對(duì)象——用戶定義的類和集合。 </p><p> XML技術(shù) 在使用本地網(wǎng)絡(luò)和互聯(lián)網(wǎng)的情況下,在不同應(yīng)用軟件之間散步數(shù)據(jù)的時(shí)候,可擴(kuò)展標(biāo)記語(yǔ)言(XML)是一個(gè)重要的標(biāo)準(zhǔn)。SQL Server2005將會(huì)自身支持存儲(chǔ)和查詢可擴(kuò)展標(biāo)記語(yǔ)言文件。 </p><p> ADO.NET2.0版本 從對(duì)SQL類的新的支持,到多活動(dòng)結(jié)果集(MARS
41、),SQL Server2005中的ADO.NET將推動(dòng)數(shù)據(jù)集的存取和操縱,實(shí)現(xiàn)更大的可升級(jí)性和靈活性。 </p><p> 增強(qiáng)的安全性 SQL Server2005中的新安全模式將用戶和對(duì)象分開,提供fine- grainaccess存取、并允許對(duì)數(shù)據(jù)存取進(jìn)行更大的控制。另外,所有系統(tǒng)表格將作為視圖得到實(shí)施,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)對(duì)象進(jìn)行了更大程度的控制。 </p><p> Transac
42、t-SQL的增強(qiáng)性能 SQL Server2005為開發(fā)可升級(jí)的數(shù)據(jù)庫(kù)應(yīng)用軟件,提供了新的語(yǔ)言功能。這些增強(qiáng)的性能包括處理錯(cuò)誤、遞歸查詢功能、關(guān)系運(yùn)算符PIVOT,APPLY, ROW_NUMBER和其他數(shù)據(jù)列排行功能,等等。 </p><p> Web服務(wù) 使用SQL Server2005,開發(fā)人員將能夠在數(shù)據(jù)庫(kù)層開發(fā)Web服務(wù),將SQL Server當(dāng)作一個(gè)超文本傳輸協(xié)議(HTTP)偵聽器,并且為網(wǎng)絡(luò)服務(wù)中
43、心應(yīng)用軟件提供一個(gè)新型的數(shù)據(jù)存取功能。 </p><p> 報(bào)表服務(wù) 利用SQL Server2005,報(bào)表服務(wù)可以提供報(bào)表控制,可以通過VisualStudio2005發(fā)行。 </p><p> 全文搜索功能的增強(qiáng) SQL Server2005將支持豐富的全文應(yīng)用軟件。服務(wù)器的編目功能將得到增強(qiáng),對(duì)編目的對(duì)象提供更大的靈活性。查詢性能和可升級(jí)性將大幅得到改進(jìn),同時(shí)新的管理工具將為有關(guān)
44、全文功能的運(yùn)行,提供更深入的了解[3]。</p><p> 微軟整合SQL Server 2005與Visual Studio 2005倒不是頂新鮮的創(chuàng)舉,Oracle早在2004年年底即率先針對(duì)Visual Studio 2003,推出Oracle Developer Tools for Visual Studio .NET,用意在提供.NET平臺(tái)的Oracle用戶,整合于Visual Studio的數(shù)據(jù)庫(kù)設(shè)
45、計(jì)與管理工具,甚至可利用.NET開發(fā)Stored Procedure(預(yù)存程序)。相信Oracle在不久的將來,也會(huì)針對(duì).NET Framework 2.0推出更新的開發(fā)版本。 </p><p> Stored Procedure效率佳,但與廠商緊密捆綁 </p><p> 站在程序開發(fā)者的立場(chǎng),數(shù)據(jù)庫(kù)與商業(yè)邏輯分開,數(shù)據(jù)庫(kù)純粹儲(chǔ)存數(shù)據(jù),程序開發(fā)交由應(yīng)用程序處理比較單純;但從DBA的角
46、度出發(fā),系統(tǒng)歸系統(tǒng),數(shù)據(jù)的處理由數(shù)據(jù)庫(kù)負(fù)責(zé)比較好。雖然兩者看法分岐,不過,Stored Procedure貼近數(shù)據(jù)庫(kù)引擎,執(zhí)行效能較佳,況且數(shù)據(jù)確實(shí)有預(yù)先處理的需求,透過程序遠(yuǎn)程處理不僅耗時(shí),而且有網(wǎng)絡(luò)斷線造成執(zhí)行失敗的風(fēng)險(xiǎn),因此,實(shí)務(wù)上Stored Procedure有存在的必要性。 </p><p> Stored Procedure有以下的好處: </p><p> 1.模塊化的
47、程序撰寫:只需建立一次Stored Procedure,儲(chǔ)存在數(shù)據(jù)庫(kù)中,就可以讓不同的程序呼叫。 </p><p> 2.執(zhí)行效率佳:如果需要大量或反復(fù)執(zhí)行的數(shù)據(jù)處理,Stored Procedure的執(zhí)行速度會(huì)比T-SQL程序代碼的批處理快。因?yàn)?Stored Procedure 是在建立的時(shí)候進(jìn)行剖析和最佳化,所以執(zhí)行一次以后存在內(nèi)存中。而程序代碼則是每次執(zhí)行時(shí)都要反復(fù)地從客戶端傳到服務(wù)器。 </p&
48、gt;<p> 3.減少網(wǎng)絡(luò)流量:即使是好幾百行T-SQL程序代碼的作業(yè),也只要透過一個(gè)指令就可以執(zhí)行Stored Procedure中的程序代碼,而不必在網(wǎng)絡(luò)上傳送幾百行程序代碼。 </p><p> 雖然微軟的T-SQL或Oracle的PL/SQL,都兼容于ANSI-SQL,但畢竟不是標(biāo)準(zhǔn),兩者都是廠商專屬的數(shù)據(jù)庫(kù)程序語(yǔ)言,所以,只要選擇撰寫Stored Procedure,就是緊密捆綁的開
49、始。不過,除非有不堪使用的重大理由,否則企業(yè)選定應(yīng)用程序搭配的數(shù)據(jù)庫(kù),少有更換的情況,所以效能與捆綁的衡量,是視應(yīng)用而定。 </p><p> 以T-SQL或.NET開發(fā)Stored Procedure各有利弊 </p><p> 單就SQL Server而言,Visual Studio 2005與SQL Server 2005整合,明顯的好處在于開發(fā)數(shù)據(jù)庫(kù)程序,例如Stored Pr
50、ocedure或Trigger可以納管。過去,Stored Procedure必須部署到數(shù)據(jù)庫(kù)「執(zhí)行看看」,才知道有沒有問 題,而且Stored Procedure就像一般程序,檔案可能被別人修改或不小心被覆蓋,因此有管理的需要。透過Visual Studio的控管,對(duì)于SQL Server的管理確有正面的效果。 </p><p> 如果企業(yè)采用T-SQL撰寫Stored Procedure,SQL Serve
51、r 2005已附贈(zèng)一套精簡(jiǎn)版的Visual Studio,DBA不再需要使用陽(yáng)春的文字編輯器撰寫Stored Procedure,可享有開發(fā)、測(cè)試及版本管理的好處。 </p><p> 若搭配Visual Studio 2005,可使用C#和Visual Basic撰寫Stored Procedure。事實(shí)上,利用通用性程序語(yǔ)言撰寫Stored Procedure,微軟不是原創(chuàng),Java的SQLJ也是對(duì)等的設(shè)計(jì)
52、。 </p><p> SQL Server 2005的核心已由.NET Framework 2.0改寫,因此,以Visual Basic或C#開發(fā)的Stored Procedure好處包括: </p><p> 1.編譯成為DLL(.NET Managed code Assembly)的Stored Procedure檔案,執(zhí)行在原生的.NET Framework 2.0平臺(tái),預(yù)估效
53、能會(huì)比T-SQL好,尤其是大量循環(huán)和字符串處理的應(yīng)用。 </p><p> 2.由于T-SQL是特定用途的程序語(yǔ)言,無法表達(dá)復(fù)雜的邏輯,所以即使是簡(jiǎn)單的字符串處理或數(shù)字計(jì)算,可能就要寫數(shù)十行的程序表達(dá);改由通用性用途的C#或Visual Basic可以大幅縮短程序的長(zhǎng)度,也就增加程序的可維護(hù)性。 </p><p> 3.相較于T-SQL是SQL Server專屬語(yǔ)言,.NET是ISO標(biāo)
54、準(zhǔn)。 </p><p> 缺點(diǎn)一言以蔽之,卻很關(guān)鍵:企業(yè)可能必須有長(zhǎng)期保存Visual Studio各種版本的心理準(zhǔn)備。 </p><p> 長(zhǎng)遠(yuǎn)看來,數(shù)據(jù)庫(kù)與開發(fā)工具的生命周期大不相同,數(shù)據(jù)庫(kù)首重穩(wěn)定與安全,升級(jí)的頻率不像開發(fā)工具那么趕流行,未來可能.NET Framework和Visual Studio都更新了好幾個(gè)版本,企業(yè)的SQL Server還在2005版,而Visual S
55、tudio不像JBuilder一樣有切換JDK版本的功能。因此,DBA的計(jì)算機(jī)不管改朝換代了幾次,都必須裝有Visual Studio 2005,甚至隨數(shù)據(jù)庫(kù)版本的多元化,必須裝有Visual Studio不同版本,而且光盤也不能丟掉。那么情況可能就像現(xiàn)在計(jì)算機(jī)必須安裝著VB 6甚至VB 3一樣詭異。至于選T-SQL或.NET的權(quán)衡,可能又需視Stored Procedure的應(yīng)用層面來決定。 </p><p>
56、 升級(jí)SQL Server 2005才能享有整合的好處。 </p><p> 數(shù)據(jù)庫(kù)的工具整合于開發(fā)環(huán)境,除了便利性,更重要的是數(shù)據(jù)庫(kù)的程序開發(fā),終于有了管理工具。過去Stored Procedure「丟上去Try看看」的作法,現(xiàn)在有了測(cè)試和版本控管的機(jī)制,由此看來,兩者確實(shí)有相互「抬轎」、彼此「綁樁」的效果。 </p><p> 不過,Stored Procedure到底是延用T-
57、SQL,還是改采功能強(qiáng)大、可以處理復(fù)雜邏輯的Visual Basic和C#撰寫,就有很多層面的考慮。況且,企業(yè)既有的SQL Server是否升級(jí)到2005版又有很多影響因素,又將陷入一段長(zhǎng)考。</p><p><b> 需求分析</b></p><p> 3.1研究設(shè)計(jì)中要解決的問題</p><p> 3.1.1 市場(chǎng)需求</p&g
58、t;<p> 隨著全球信息網(wǎng)絡(luò)的發(fā)展,Internet在世界上已不僅僅是一種技術(shù),更重要的是它已成為一種新的經(jīng)營(yíng)模式。從4C(Connection.,Communication ,Commerce ,Co-operation)層次上徹底改變了人類工作,學(xué)習(xí),生活,娛樂的方式,已成為國(guó)家經(jīng)濟(jì)和區(qū)域經(jīng)濟(jì)增長(zhǎng)的主要?jiǎng)恿Αnternet正成為世界最大的公共資料信息庫(kù),它包含無數(shù)的信息資源,所有最新的信息都可以通過網(wǎng)絡(luò)搜索獲得。
59、</p><p> 我們所要達(dá)到的目標(biāo)和期望是能使用戶能夠通過網(wǎng)絡(luò)盡情表達(dá)自己的思想,或者說技術(shù),博客在滿足客戶使用的同時(shí)也可以滿足廣告業(yè)務(wù)的發(fā)展,針對(duì)不同類別的博客而開啟的廣告內(nèi)容將有效地加強(qiáng)廣告的宣傳效果。</p><p><b> 3.1.2功能分析</b></p><p> 本博客使用Visual Studio 2005和Micr
60、osoft SQL Server2005 來實(shí)現(xiàn),其中包括瀏覽BLOG和BLOG管理系統(tǒng)兩大部分,第一部分又分文章類別分類,文章分類,菜單導(dǎo)航,評(píng)論,評(píng)論加載,RSS,第二部分的管理中,用戶可以對(duì)自己的信息進(jìn)行修改,密碼修改,文章內(nèi)容修改,文章添加,當(dāng)中可以進(jìn)行圖片信息的錄入。</p><p><b> 3.1.3性能分析</b></p><p> ?。?)響應(yīng)時(shí)間
61、:一般操作的響應(yīng)時(shí)間在0.1-3秒內(nèi)(在硬件配置較高的情況下)</p><p> ?。?)運(yùn)行時(shí)間:0.1-3秒內(nèi)(在硬件配置較高的情況下)</p><p> ?。?)錯(cuò)誤處理,在調(diào)試的時(shí)候加斷點(diǎn),用立即窗口進(jìn)行調(diào)試或用Debug.Print輸出到立即窗口。程序的錯(cuò)誤處理,如果沒有良好的錯(cuò)誤處理,可能導(dǎo)致程序致辭命錯(cuò)誤而退出!我們需要錯(cuò)誤處理的過程中加入on error 語(yǔ)句進(jìn)行錯(cuò)誤處理。
62、也可以寫一個(gè)全局的錯(cuò)誤處理模塊! 另外當(dāng)我們的頁(yè)面被請(qǐng)求時(shí),一旦請(qǐng)求出錯(cuò),將調(diào)用系統(tǒng)中指定的報(bào)錯(cuò)頁(yè)面,告訴用戶出錯(cuò)信息。</p><p> 3.1.4 系統(tǒng)功能圖</p><p> 通過對(duì)BLOG需求的了解以及對(duì)其具體功能的分析,實(shí)現(xiàn)該博客的總體功能圖和各模塊功能圖的設(shè)計(jì),如下:</p><p> 圖3-1 博客整體框架</p><p&g
63、t; 圖3-2 頁(yè)面左側(cè)菜單導(dǎo)航</p><p> 圖3-3 文章顯示結(jié)構(gòu)</p><p> 圖3-4 用戶對(duì)文章的管理</p><p><b> 圖3-5 添加文章</b></p><p> 3.2具體實(shí)現(xiàn)中采用的關(guān)鍵技術(shù)及復(fù)雜性分析</p><p><b> 3.2.
64、1系統(tǒng)結(jié)構(gòu)</b></p><p> 該博客采用三層結(jié)構(gòu),將數(shù)據(jù)邏輯操作與業(yè)務(wù)邏輯獨(dú)立開來,使系統(tǒng)層次清晰。分別建立DataFormater類,DataHelper類, DataProvider類 ,DbFormater類,DbProvider類,IDbFormater類,IDbProvider類, SQLHelper類,用來處理數(shù)理邏輯。</p><p> 因?yàn)槊恳粚佣伎?/p>
65、以在僅僅更改很少量的代碼后,就能放到物理上不同的服務(wù)器上使用,因此結(jié)構(gòu)靈活而且性能更佳。此外,每層做些什么其它層是完全看不到的,因此更改、更新某層,都不再需要重新編譯或者更改全部的層了。這是個(gè)很強(qiáng)大的功能。例如,如果把數(shù)據(jù)訪問代碼與業(yè)務(wù)邏輯層分離,當(dāng)數(shù)據(jù)庫(kù)服務(wù)器更改后,你只需要更改數(shù)據(jù)訪問的代碼,因?yàn)闃I(yè)務(wù)邏輯層是不變的,因此不需要更改或者重新編譯業(yè)務(wù)邏輯層。 一個(gè)N層的應(yīng)用程序通常有三層:表現(xiàn)層、業(yè)務(wù)層和數(shù)據(jù)層。下面讓我們看看
66、每層都做些什么。 表現(xiàn)層(Presentation Layer): 表現(xiàn)層用于用戶接口的展示,以及用業(yè)務(wù)層的類和對(duì)象來“驅(qū)動(dòng)”這些接口。 在ASP.NET中,該層包括aspx頁(yè)面、用戶控制、服務(wù)器控制以及某些與安全相關(guān)的類和對(duì)象。 業(yè)務(wù)層(Business Tier):業(yè)務(wù)層用于訪問數(shù)據(jù)層,從數(shù)據(jù)層取數(shù)據(jù)、修改數(shù)據(jù)以及刪除數(shù)據(jù),并將結(jié)果返回給表現(xiàn)層。 在ASP.NET中,該層包括使用SqlClie
67、nt或OleDb從SQL Server或Access數(shù)據(jù)庫(kù)取數(shù)據(jù)、更新數(shù)據(jù)及刪除數(shù)據(jù),并把取得的數(shù)據(jù)放到D</p><p> 對(duì)系統(tǒng)中使用的圖片,上傳文件都相應(yīng)對(duì)立獨(dú)自的文件夾用于存放。由于該博客瀏覽部分都是自動(dòng)加載的數(shù)據(jù),很少使用到JS處理,所以沒有把JS文件獨(dú)立出來。而對(duì)整個(gè)頁(yè)面的樣式,采用main.css文件用于限制。</p><p> 博客各自頁(yè)面的功能處理直接在該頁(yè)面文件的a
68、spx.cs文件中處理,所需要用到的數(shù)據(jù)操作通過業(yè)務(wù)邏輯從數(shù)據(jù)庫(kù)得到.</p><p> 數(shù)據(jù)層(Data Tier) :數(shù)據(jù)層是數(shù)據(jù)庫(kù)或者數(shù)據(jù)源。在.NET中,通常它是一個(gè)SQL Server或Access數(shù)據(jù)庫(kù),但不僅限于此兩種形式,它還可能是Oracle,mySQL,甚至是XML。</p><p><b> 3.2.2用戶管理</b></p>
69、<p> 針對(duì)用戶的管理,系統(tǒng)采用身份識(shí)別,只有用戶正確登陸后才可以進(jìn)行相關(guān)操作,同時(shí)對(duì)用戶密碼加密保存在數(shù)據(jù)庫(kù),使用MD5加密算法,對(duì)用戶有選擇保存密碼的,經(jīng)過檢驗(yàn)后自動(dòng)登陸。</p><p> 當(dāng)時(shí),當(dāng)用戶登陸修改相關(guān)信息,系統(tǒng)會(huì)自動(dòng)記錄該用戶登陸時(shí)的IP,并保存。對(duì)相對(duì)應(yīng)的文章內(nèi)容使用特殊處理。以提高安全要求。</p><p><b> 3.2.3頁(yè)面結(jié)構(gòu)&
70、lt;/b></p><p> 頁(yè)面分層實(shí)現(xiàn),對(duì)經(jīng)常使用部分采用用戶控件,使頁(yè)面自動(dòng)加載用戶控件。bottom.ascx和top.ascx,對(duì)RSS頁(yè)面采用動(dòng)態(tài)生成,即沒有頁(yè)面先前設(shè)計(jì),根據(jù)從數(shù)據(jù)庫(kù)取得的數(shù)據(jù)自動(dòng)生成RSS頁(yè)面。</p><p> 頁(yè)面總體結(jié)構(gòu)是網(wǎng)站經(jīng)常使用的總局,即最上面顯示博客的頭標(biāo)題,以及博客顯示字符和博客菜單導(dǎo)航,最左側(cè)也是用到菜單導(dǎo)航,與最上的菜單不一樣
71、的是,左側(cè)的是文章類別的導(dǎo)航,滿足瀏覽用戶對(duì)文章的查詢以做到快速瀏覽.左側(cè)才是文章的列表,或者說是文章的主題部分.下面是版權(quán)信息.</p><p> 而用戶對(duì)文章的管理部分則是把頁(yè)面分成兩大部分,左側(cè)是用戶功能菜單導(dǎo)航,右側(cè)是具體功能實(shí)現(xiàn)部分.</p><p> 3.2.4 ASP.NET對(duì)象的使用</p><p> 在使用ASP.NET進(jìn)行設(shè)計(jì)過程中,我們
72、將經(jīng)常遇到它的幾個(gè)對(duì)象[4]: </p><p> 1. Request:可以訪問關(guān)于請(qǐng)求Web頁(yè)面的個(gè)人或進(jìn)程的信息</p><p> 2. Response:提供一種方法,以準(zhǔn)確控制如何將響應(yīng)發(fā)送回發(fā)出請(qǐng)求的人那里</p><p> 3. Server:提供一系列有用的與Web相關(guān)的實(shí)用程序。</p><p> 4. Applic
73、ation:為經(jīng)常使用的信息提供了一個(gè)有用的Web站點(diǎn)存儲(chǔ)位置</p><p> 5. Session:可以為每個(gè)用戶的會(huì)話存儲(chǔ)信息。</p><p><b> Request :</b></p><p> Request可以訪問關(guān)于請(qǐng)求Web頁(yè)面的個(gè)人或進(jìn)程的信息。Request對(duì)象可以從個(gè)人的Web瀏覽器向我們有效的傳遞消息。<
74、/p><p> 比較有用的兩個(gè)屬性為:</p><p> Cookies:通過這個(gè)屬性可以查看訪問者以前在本站的cookies</p><p> QueryString:返回任何使用GET傳輸?shù)巾?yè)面的參數(shù)。</p><p> Response :</p><p> Response提供一種方法,以準(zhǔn)確控制如何將響
75、應(yīng)發(fā)送回發(fā)出請(qǐng)求的人那里。Response對(duì)象可以訪問即將發(fā)送回請(qǐng)求Web瀏覽器的http響應(yīng)。</p><p><b> 常用屬性:</b></p><p> 1.Redirect:它將用戶重定向到另一個(gè)頁(yè)面</p><p> 2.Write:將字符串寫入html流。</p><p><b> Ser
76、ver: </b></p><p> Server提供一系列有用的與Web相關(guān)的實(shí)用程序。</p><p><b> 常用屬性:</b></p><p> MapPath:此屬性帶有一個(gè)虛擬路徑的參數(shù)</p><p> 比如MapPath(“/webapp/myfile.aspx”),返回該文件在物理
77、磁盤的準(zhǔn)確位置</p><p><b> 狀態(tài)處理:</b></p><p> 包括Application,Session,Cookies</p><p> 主要要注意的有狀態(tài)的作用域,狀態(tài)存儲(chǔ)位置,狀態(tài)如何改變等。</p><p> Application :</p><p> App
78、lication為經(jīng)常使用的信息提供了一個(gè)有用的Web站點(diǎn)存儲(chǔ)位置</p><p> Application中的信息可以被網(wǎng)站的所有頁(yè)面訪問。</p><p> Application的初始配置:</p><p> 在應(yīng)用程序啟動(dòng)時(shí)配置初始狀態(tài),在Global.asax中配置</p><p> protected void Appli
79、cation_Start(Object sender, EventArgs e)</p><p><b> {</b></p><p> Application["UserCount"] = 0;</p><p><b> }</b></p><p> 使用Lock和Un
80、lock避免兩個(gè)頁(yè)面同時(shí)修改狀態(tài)</p><p> Application.Lock();</p><p> Application["UserCount"] = (int)Application["UserCount"]+1;</p><p> Application.UnLock();</p><
81、p> Application幾點(diǎn)說明:</p><p> 1.它用于經(jīng)常使用的數(shù)據(jù),如果只是偶爾使用,可以把信息存儲(chǔ)在磁盤的文件中,大部分情況下,web.config文件可以完成這個(gè)任務(wù)。</p><p> 2.Application對(duì)象是一個(gè)集合對(duì)象,它除了包含文本信息外,也可以存儲(chǔ)對(duì)象。</p><p> 3.2.5 采用了UrlReWrite技術(shù)
82、</p><p> 在該博客的實(shí)現(xiàn)中,我采用了對(duì)瀏覽URL地址重寫的技術(shù).</p><p> 網(wǎng)址重寫是實(shí)現(xiàn)一種截取網(wǎng)址請(qǐng)求并將其進(jìn)行處理后重新指向到一個(gè)指定的網(wǎng)址的過程。在網(wǎng)址重寫執(zhí)行的期間,相應(yīng)處理程序處理被請(qǐng)求的網(wǎng)址,從中提取出相關(guān)的值,然后重新指向一個(gè)新的指定地址。</p><p> 例如:由于一次網(wǎng)站目錄調(diào)整,原有的 /people/ 子目錄下的所有
83、網(wǎng)頁(yè)全部移動(dòng)到/info/employees/目錄,原訪問者從收藏夾或者其他什么地方點(diǎn)擊鏈接發(fā)出訪問/people/目錄下的文件的請(qǐng)求時(shí),你肯定希望他還是能通過原有地址看到和原來相同的頁(yè)面,但實(shí)際上看到的卻是網(wǎng)址重寫指向的新目錄下的相應(yīng)文件。 在老版本ASP中,使用網(wǎng)址重寫技術(shù)的途徑很少,要么寫一個(gè)ISAPI過濾器,要么購(gòu)買第三方廠商提供的網(wǎng)址重寫組件,然而在微軟提供的ASP.NET下你可以通過多種方法很簡(jiǎn)單地開發(fā)出自己的網(wǎng)址重
84、寫軟件,以滿足自己各種不同的需要。</p><p> 該論文討論了這門針對(duì)ASP.NET開發(fā)人員的實(shí)現(xiàn)網(wǎng)址重寫的技術(shù),然后在博客中實(shí)現(xiàn)了網(wǎng)址重寫。在實(shí)現(xiàn)網(wǎng)址重寫技術(shù)的細(xì)節(jié)之前,我們先看一下日常使用網(wǎng)址重寫技術(shù)實(shí)現(xiàn)的場(chǎng)景。</p><p> 網(wǎng)址重寫技術(shù)不但可以在IIS Web服務(wù)器一級(jí)通過ISAPI過濾器實(shí)現(xiàn),而且還可以在ASP.NET一級(jí)通過HttpModule或者HttpHandl
85、er實(shí)現(xiàn)。</p><p> 本論文主要關(guān)注在ASP.NET一級(jí)實(shí)現(xiàn)網(wǎng)址重寫技術(shù),所以此時(shí)不必關(guān)注在ISAPI應(yīng)用程序中實(shí)現(xiàn)網(wǎng)址重寫的技術(shù)細(xì)節(jié),而且有很多第三方廠商提供的ISAPI過濾器,比如 Helicon的ISAPI Rewrite; QwerkSoft的IIS Rewrite;Port80的PageXChanger; 等等。
86、 在ASP.NET中實(shí)現(xiàn)網(wǎng)址重寫很簡(jiǎn)單,只需調(diào)用System.Web.HttpContext類的RewritePath()方法即可。HttpContext類中包含有關(guān)于特定HTTP請(qǐng)求的HTTP規(guī)范信息。ASP.NET引擎每接收到一個(gè)特定請(qǐng)求后便針對(duì)該請(qǐng)求創(chuàng)建一個(gè)特定的實(shí)例,這個(gè)類包含一些屬性諸如:Request和Response屬性,分別提供對(duì)請(qǐng)求和響應(yīng)的訪問;Application和Session屬性提供對(duì)Application變
87、量和Session變量的訪問;User屬性提供對(duì)已授權(quán)用戶信息的訪問[5]。 在微軟.NET Framework 1.0版本中,RewritePath()方法接收一個(gè)新路徑的簡(jiǎn)單字符串,在其內(nèi)部HttpContext類的Rewr</p><p> 除了RewritePath(string)方法之外,.NET Framework 1.1版還提供了另外一些重載版本,其中一個(gè)重載版本接收三個(gè)輸入字符串參數(shù),這
88、種交替的重載形式不僅僅只是設(shè)置Request對(duì)象的路徑和查詢參數(shù)這些屬性,而是設(shè)置更深層的成員變量,這些成員變量用于為PhysicalPath、PathInfo、FilePath屬性計(jì)算Request對(duì)象值。 為了實(shí)現(xiàn)ASP.NET中的網(wǎng)址重寫,我們需要?jiǎng)?chuàng)建一個(gè)HttpHandler和HttpModule用于: 根據(jù)請(qǐng)求的路徑?jīng)Q定所需要重寫的路徑;,重寫路徑,如果需要的話可以調(diào)用RewritePath方法;,以前文所構(gòu)建
89、的那個(gè)站點(diǎn)為例,可以通過/info/employee.aspx?empID=EmployeeID來訪問每一個(gè)雇員的信息。</p><p> 為了使這個(gè)網(wǎng)址更加地具有“隱蔽性”,我們可能會(huì)使用更加容易理解的訪問方式如:/people/雇員名.aspx。</p><p> 這里就有了一個(gè)網(wǎng)址重寫的案例:當(dāng)接收到對(duì)/people/ScottMitchell.aspx的請(qǐng)求的時(shí)候,我們就得使
90、用網(wǎng)址重寫使得對(duì)該頁(yè)面的請(qǐng)求被重寫指向到先前使用的/info/employee?EmpID=1001地址。 在ASP.NET一級(jí)來執(zhí)行網(wǎng)址重寫,既可以使用HttpHandler,也可以使用HttpModule。當(dāng)使用HttpModule的時(shí)候,必須決定如果該網(wǎng)址需要被重寫的話,究竟應(yīng)該在整個(gè)請(qǐng)求的生命周期期間的那一個(gè)點(diǎn)來使用[6]。</p><p> 乍一看著有些武斷,但是這個(gè)決定以重大而且微妙的方式影
91、響到你的應(yīng)用程序。之所以作出對(duì)網(wǎng)址重寫點(diǎn)的選擇是因?yàn)閮?nèi)嵌的ASP.NET HttpModule使用Request對(duì)象的屬性值來完成自己的工作(回憶一下重寫路徑對(duì)Request對(duì)象的屬性值的改變),這些內(nèi)嵌HttpModule和相應(yīng)事件的密切關(guān)系列舉如下:</p><p> 回想一下BeginRequest事件在AuthenticateRequest事件之前引發(fā),而Authenticate Request事件又在
92、AuthorizeRequest事件之前引發(fā)。 實(shí)現(xiàn)網(wǎng)址重寫的一個(gè)較為安全的場(chǎng)合就是把它放在在BeginRequest事件中執(zhí)行,這意味著如果要執(zhí)行網(wǎng)址重寫的話,在眾多內(nèi)嵌HttpModule運(yùn)行的時(shí)候他已經(jīng)完成了。這種途徑的最終用途淋漓盡致地體現(xiàn)在表單驗(yàn)證上。當(dāng)用戶訪問受限資源的時(shí)候,如果之前使用了表單驗(yàn)證,他會(huì)自動(dòng)被重定向到指定的登錄頁(yè)面,在成功登錄之后,用戶被重定向回先前試圖訪問的受限制頁(yè)面。 如果把網(wǎng)址重寫放
93、在BeginRequest事件或者AuthenticateRequest事件中,在登錄頁(yè)面上執(zhí)行提交后,該頁(yè)面會(huì)將用戶重定向到網(wǎng)址重寫指定的頁(yè)面。假定當(dāng)用戶在瀏覽器上敲入/people/ScottMitchell.aspx地址,該地址是要被重定向到/info/employee.aspx?EmpID =1001的,如果該Web應(yīng)用程序設(shè)定使用表單驗(yàn)證,當(dāng)用戶開始訪問/people/ScottMitchell.aspx的</p>
94、<p> 3.2.6頁(yè)面出錯(cuò)處理</p><p> 在Global.asax.cs文件中實(shí)現(xiàn)Application_Error系統(tǒng)函數(shù)。目的就是為了當(dāng)頁(yè)面請(qǐng)求出錯(cuò)時(shí)可以指向一個(gè)統(tǒng)一的報(bào)錯(cuò)頁(yè)面。</p><p> private static readonly string ERROR_PAGE_LOCATION = "~/error.aspx";&l
95、t;/p><p> protected void Application_Error(Object sender, EventArgs e)</p><p><b> {</b></p><p> if (Context != null && Context.IsCustomErrorEnabled)</p>&
96、lt;p> Server.Transfer(ERROR_PAGE_LOCATION, false);</p><p><b> }</b></p><p> 代碼中先指定一個(gè)只讀靜態(tài)變量,當(dāng)然是指向出錯(cuò)頁(yè)面的。在頁(yè)面出錯(cuò)后,將自動(dòng)跳轉(zhuǎn)到這個(gè)頁(yè)面。</p><p><b> 4 設(shè)計(jì)與實(shí)現(xiàn)</b></p&
97、gt;<p> 4.1設(shè)計(jì)實(shí)現(xiàn)的策略和算法描述</p><p> 4.1.1 BLOG設(shè)計(jì)思想</p><p> 個(gè)人博客的實(shí)現(xiàn)是將博客文章管理以及文章顯示分開管理的,也就是說博客主界面是直接從數(shù)據(jù)庫(kù)里取得數(shù)據(jù)在頁(yè)面生成顯示出來,而用戶如果要對(duì)文章進(jìn)行修改和添加新文章則必須從另外的博客管理系統(tǒng)中進(jìn)行。這樣就把預(yù)覽和后臺(tái)管理分離開來。使用戶的管理安全可靠。</p&g
98、t;<p> 4.1.2 BLOG數(shù)據(jù)庫(kù)設(shè)計(jì)</p><p> (1)打開SQL Server2005新建數(shù)據(jù)數(shù)據(jù)庫(kù)名為myblog</p><p> (2)新建表,如下:</p><p> Smalltype 文章小類表</p><p> 圖4-1 Smalltype 文章小類表</p><p&g
99、t; Admin 用戶管理表</p><p> 圖4-2 Admin 用戶管理表</p><p> Bigtype 文章大類表</p><p> 圖4-3 Bigtype 文章大類表</p><p> Comment 文章相關(guān)信息管理表</p><p> 圖4-4 Comment 文章相關(guān)信息管理表
100、</p><p> Content 文章顯示管理表</p><p> 圖4-5 Content 文章顯示管理表</p><p> (3)在可編程性中選擇存儲(chǔ)過程,建立在系統(tǒng)實(shí)現(xiàn)過程中獲取數(shù)據(jù)所用到的存儲(chǔ)過程</p><p> set ANSI_NULLS OFF</p><p> set QUOTED_I
101、DENTIFIER OFF</p><p><b> GO--添加內(nèi)容</b></p><p> ALTER Proc [dbo].[ceocio_AddContent]</p><p><b> (</b></p><p> @Title nvarchar(100),</p
102、><p> @Content ntext,</p><p> @bigtypeid int,</p><p> @smalltypeid int,</p><p> @intro nvarchar(500),</p><p> @Allowshow bit,</p><p> @Allo
103、wComment bit</p><p><b> )</b></p><p> As INSERT INTO content ( title,content,bigtypeid,smalltypeid,intro,Allowshow,Allowcomment )</p><p> VALUES( @title,@content,@bi
104、gtypeid,@smalltypeid,@intro,@Allowshow,@Allowcomment )</p><p> 上面的存儲(chǔ)過程用于當(dāng)用戶要添加新的文章時(shí)將數(shù)據(jù)添加到數(shù)據(jù)庫(kù)。然后創(chuàng)建其它的存儲(chǔ)過程,比如對(duì)文章選擇時(shí)讀取數(shù)據(jù),文章類型的讀取,文章修改,更新等。</p><p><b> 4.1.3數(shù)據(jù)訪問</b></p><p&g
105、t; 該博客基本上是采用存儲(chǔ)過程來從數(shù)據(jù)獲取數(shù)據(jù)的[12]。</p><p> 在訪問的過程中,我們把數(shù)據(jù)庫(kù)連接字符串放在Web.config配置文件中,方便在系統(tǒng)移植后進(jìn)行連接字符串的修改。滿足不同主機(jī)數(shù)據(jù)庫(kù)的安全設(shè)置,比如我的設(shè)置如下:</p><p> 在Web.config配置文件中加入下面代碼</p><p> <appSettings>
106、;</p><p> <add key="strConnection" value="data source=NINGLIN\SQLEXPRESS;</p><p> Integrated Security=True;database=person_51aspx;"/></p><p> </appSe
107、ttings></p><p> 連接數(shù)據(jù)庫(kù)時(shí)通過下面的屬性獲得連接字符串:</p><p> private string _connectionString = ConfigurationSettings.AppSettings["strConnection"];//私有字段,獲取數(shù)據(jù)庫(kù)連接字符串</p><p> public
108、string ConnectionString//存取連接字符串</p><p><b> {</b></p><p> get {return this._connectionString;}</p><p> set {this._connectionString = value;}</p><p><b
109、> }</b></p><p> 在用戶管理中,頁(yè)面先要求用戶登陸,用戶輸入用戶名和密碼,可選擇地點(diǎn)擊“記住我”系統(tǒng)根據(jù)用戶的選擇可分別執(zhí)行</p><p> public static bool Authenticate(string username, string password)</p><p><b> 或者它的重載函
110、數(shù)</b></p><p> public static bool Authenticate(string username, string password,bool persist)</p><p> 系統(tǒng)把用戶輸入的密碼加密后與數(shù)據(jù)庫(kù)的用戶名和密碼對(duì)比。如果相同,剛用戶登陸成功,否則失敗,并提示用戶登陸失敗,重新登陸。</p><p><
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人博客畢業(yè)論文
- 個(gè)人博客畢業(yè)論文
- 個(gè)人博客網(wǎng)站設(shè)計(jì)畢業(yè)論文
- 個(gè)人博客系統(tǒng)畢業(yè)論文
- 個(gè)人博客網(wǎng)站畢業(yè)論文
- 個(gè)人博客網(wǎng)站畢業(yè)論文
- 個(gè)人博客網(wǎng)站畢業(yè)論文
- 個(gè)人博客系統(tǒng)畢業(yè)論文--博客網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)
- 個(gè)人博客的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 學(xué)生個(gè)人博客畢業(yè)論文
- 個(gè)人博客系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 個(gè)人博客網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn) 畢業(yè)論文
- 畢業(yè)論文-- 個(gè)人博客系統(tǒng)的設(shè)計(jì)與開發(fā)
- 個(gè)人博客系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 畢業(yè)論文
- 畢業(yè)論文學(xué)生個(gè)人博客
- 博客網(wǎng)設(shè)計(jì)畢業(yè)論文
- 計(jì)算機(jī)專業(yè)畢業(yè)論文--個(gè)人博客系統(tǒng)設(shè)計(jì)
- 個(gè)人博客的設(shè)計(jì)與實(shí)現(xiàn)_本科畢業(yè)論文
- 個(gè)人博客系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 個(gè)人博客系統(tǒng)畢業(yè)設(shè)計(jì)論文
評(píng)論
0/150
提交評(píng)論