版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于.NET的畢業(yè)論文數(shù)據(jù)庫系統(tǒng)的</p><p><b> 設(shè)計(jì)與實(shí)現(xiàn)</b></p><p><b> 二○一四年六月</b></p><p><b> 目 錄</b></p><p><b> 1 緒論1</b>&
2、lt;/p><p> 1.1 本文課題的背景………………………………………………………………………1</p><p> 1.1.1管理信息系統(tǒng)概述1</p><p> 1.1.2管理信息系統(tǒng)的發(fā)展歷史[2-4]1</p><p> 1.1.3管理信息系統(tǒng)的結(jié)構(gòu)2</p><p> 1.2本文課題的來源……
3、………………………………………………………………………2</p><p> 1.3本文課題的主要工作………………………………………………………………………3</p><p> 2 .NET框架技術(shù)研究4</p><p> 2.1 .NET框架(.NET Framework)簡(jiǎn)介[5-10]4</p><p> 2.1.1通用語言
4、運(yùn)行時(shí)CLR5</p><p> 2.1.2.NET基礎(chǔ)類庫7</p><p> 2.1.3 .NET的新特性8</p><p> 2.2 新一代Web技術(shù)ASP.NET…………………………………………………………8</p><p> 2.2.1 ASP.NET的系統(tǒng)結(jié)構(gòu)10</p><p> 2
5、.2.2 ASP.NET Web窗體(Web Form)10</p><p> 2.2.3 ASP.NET的狀態(tài)管理12</p><p> 2.3數(shù)據(jù)庫訪問技術(shù)ADO.NET…………………………………………………………12</p><p> 2.4 ASP.NET中的認(rèn)證和授權(quán)…………………………………………………………14</p>&l
6、t;p> 2.4.1在ASP.NET中實(shí)現(xiàn)認(rèn)證14</p><p> 2.4.2在ASP.NET中實(shí)現(xiàn)授權(quán)17</p><p> 3 畢業(yè)論文數(shù)據(jù)庫系統(tǒng)的分析19</p><p> 3.1 系統(tǒng)的總體分析………………………………………………………………………19</p><p> 3.2系統(tǒng)的模塊功能描述……………
7、…………………………………………………20</p><p> 3.2.1上傳管理20</p><p> 3.2.2審核管理模塊20</p><p> 3.2.3論文發(fā)布模塊20</p><p> 3.2.4離校管理20</p><p> 3.2.5 后臺(tái)管理20</p><p&g
8、t; 3.3系統(tǒng)建?!?1</p><p> 4 論文管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)23</p><p> 4.1 數(shù)據(jù)庫設(shè)計(jì)…………………………………………………………………………23</p><p> 4.2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)……………………………………………………………………24</p>
9、;<p> 4.2.1 讀者查詢下載24</p><p> 4.2.2 畢業(yè)生論文上傳26</p><p> 4.2.3審核與離校手續(xù)辦理31</p><p> 4.3 母版頁設(shè)計(jì)……………………………………………………………………………41</p><p> 4.4 Web.Config配置……………………
10、………………………………………………41</p><p> 5 總結(jié)與展望42</p><p> 參 考 文 獻(xiàn)43</p><p><b> 1 緒論</b></p><p> 特色數(shù)據(jù)庫的建設(shè)也是高校圖書館在數(shù)字環(huán)境下文獻(xiàn)信息資源建設(shè)的一項(xiàng)重要內(nèi)容。本章主要介紹了數(shù)據(jù)庫系統(tǒng)的概念,根據(jù)本課題的情況,介
11、紹課題的來源及主要任務(wù)等。</p><p> 1.1 本文課題的背景</p><p> 畢業(yè)論文是反映學(xué)校教學(xué)、科研成果的一種文獻(xiàn),具有較高的學(xué)術(shù)價(jià)值和科研價(jià)值。作為高校文獻(xiàn)信息中心,高校圖書館建立本校畢業(yè)論文數(shù)據(jù)庫.對(duì)于加強(qiáng)圖書館文獻(xiàn)資源建設(shè)、推動(dòng)學(xué)校學(xué)科建設(shè)、促進(jìn)高校教學(xué)、科研的交流和提高具有重要意義。</p><p> 開發(fā)基于.NET的畢業(yè)論文數(shù)據(jù)庫系
12、統(tǒng),實(shí)現(xiàn)畢業(yè)論文的收集、整理、存儲(chǔ)、發(fā)布與圖書館離校手續(xù)辦理功能,有利于提高圖書館工作效率與信息資源的利用率,有利于畢業(yè)論文管理工作的規(guī)范化。</p><p> 1.1.1管理信息系統(tǒng)概述</p><p> 管理信息系統(tǒng)(MIS)是一個(gè)由人、計(jì)算機(jī)和管理軟件等組成的能進(jìn)行信息的收集、傳遞、存儲(chǔ)、加工和使用的系統(tǒng)[1]。從管理信息系統(tǒng)的建立、功能等方面來分析,管理信息系統(tǒng)可以定義為:管理
13、信息系統(tǒng)是用系統(tǒng)思想建立起來的,以電子計(jì)算機(jī)為基本信息處理手段,以現(xiàn)代通訊設(shè)備為基本傳輸工具,且能為管理決策提供信息服務(wù)的人機(jī)系統(tǒng)。</p><p> 企業(yè)管理系統(tǒng)具有如下基本功能:</p><p> ①數(shù)據(jù)處理功能---提供作業(yè)數(shù)據(jù);</p><p> ?、谟?jì)劃,控制功能---提供控制信息;</p><p> ?、垲A(yù)測(cè)和決策功能---提
14、供計(jì)劃和決策信息。</p><p> 1.1.2管理信息系統(tǒng)的發(fā)展歷史[2-4]</p><p> 管理信息系統(tǒng)產(chǎn)生至今已經(jīng)超過半個(gè)世紀(jì)。在這期間,管理信息系統(tǒng)經(jīng)歷三個(gè)階段的發(fā)展。</p><p> ?、佼a(chǎn)生階段(20世紀(jì)50年代-60年代)</p><p> 1954年美國(guó)通用電器公司首次將計(jì)算機(jī)應(yīng)用于企業(yè)中的業(yè)務(wù)數(shù)據(jù)的處理(計(jì)算薪金
15、),引起了數(shù)據(jù)處理技術(shù)的變革.隨后,西方國(guó)家的一些公司開始著手業(yè)務(wù)信息系統(tǒng)的開發(fā)。(EDP)</p><p> ?、诎l(fā)展階段(20世紀(jì)70年代)</p><p> 隨著數(shù)據(jù)庫技術(shù)的出現(xiàn)(60年代末,70年代初),微機(jī)的普及,計(jì)算機(jī)廣泛的用來管理和存取數(shù)據(jù)資源,產(chǎn)生了管理信息系統(tǒng),即MIS系統(tǒng)。(狹義)</p><p> ?、鄢墒祀A段(20世紀(jì)80年代)</p
16、><p> 隨著數(shù)據(jù)庫技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的進(jìn)步,管理信息系統(tǒng)也逐步走向成熟.在系統(tǒng)中已將數(shù)據(jù)處理與經(jīng)濟(jì)管理模型結(jié)合起來進(jìn)行預(yù)測(cè)和輔助決策.管理信息系統(tǒng)已進(jìn)入了決策支持系統(tǒng)(DSS系統(tǒng))發(fā)展階段。</p><p> 管理信息系統(tǒng)的層次關(guān)系見下圖1-1。</p><p> 圖 1.1信息系統(tǒng)層次關(guān)系圖</p><p> 1.1.3管理信息
17、系統(tǒng)的結(jié)構(gòu)</p><p> 傳統(tǒng)的管理信息系統(tǒng)按功能結(jié)構(gòu)可以劃分為各個(gè)不同的子系統(tǒng)。主要有財(cái)務(wù)管理子系統(tǒng),人事管理子系統(tǒng),訂貨子系統(tǒng),生產(chǎn)管理子系統(tǒng),開發(fā)管理子系統(tǒng),庫存管理子系統(tǒng),信息處理子系統(tǒng),高層管理子系統(tǒng)等。</p><p> 1.2本文課題的來源</p><p> 作為高校文獻(xiàn)信息中心,圖書館建立本校畢業(yè)論文數(shù)據(jù)庫,對(duì)加強(qiáng)圖書館文獻(xiàn)資源建設(shè)、推動(dòng)學(xué)
18、校學(xué)科建設(shè)、促進(jìn)高校教學(xué)、科研的交流和提高具有重要意義。畢業(yè)論文是學(xué)生與導(dǎo)師的研究成果,具有較高的學(xué)術(shù)價(jià)值與應(yīng)用價(jià)值;畢業(yè)論文反映出了學(xué)校的科研活動(dòng)的質(zhì)量、效益和科研實(shí)力,完備的收藏可反映本校的學(xué)術(shù)發(fā)展史和各個(gè)歷史時(shí)期的學(xué)術(shù)面貌,能為校史的編寫提供原始、系統(tǒng)、全面的素材和佐證材料,是學(xué)??蒲谢顒?dòng)和學(xué)術(shù)水平的集體檔案;對(duì)以后的研究有很好的借鑒和指導(dǎo)作用;通過收集也可以豐富圖書館館藏資源,增加館藏特色。</p><p&g
19、t; 目前,我院尚未建立畢業(yè)論文數(shù)據(jù)庫。2013年我院培養(yǎng)的第一屆本科生即將畢業(yè),圖書館擬對(duì)本科畢業(yè)生畢業(yè)論文進(jìn)行收集、整理、數(shù)字化存儲(chǔ)工作。本課題指在通過對(duì)實(shí)際情況的調(diào)查分析,開發(fā)出一套適應(yīng)我院實(shí)際情況的論文數(shù)據(jù)庫系統(tǒng),提供對(duì)畢業(yè)論文收集、離校手續(xù)辦理、數(shù)字化存儲(chǔ)、WEB檢索與全文下載一體化服務(wù)功能,可直接應(yīng)用于圖書館實(shí)際工作中,對(duì)豐富我校的數(shù)字化教育文獻(xiàn)資源,提高我院圖書館的信息化服務(wù)效率與質(zhì)量,有重要實(shí)踐意義。</p>
20、;<p> 特色數(shù)據(jù)庫的建設(shè)也是高校圖書館在數(shù)字環(huán)境下文獻(xiàn)信息資源建設(shè)的一項(xiàng)重要內(nèi)容,通過本課題的實(shí)施,對(duì)今后我院特色數(shù)據(jù)庫建設(shè)工作,具有積極的探索和促進(jìn)作用。</p><p> 1.3本文課題的主要工作</p><p> ?。?)通過實(shí)際調(diào)查分析法,對(duì)畢業(yè)生到館辦理離校手續(xù)程序進(jìn)行調(diào)查分析,分解步驟,優(yōu)化工作流, </p><p> (2) 完
21、成畢業(yè)論文的收集、整理、存儲(chǔ)、發(fā)布工作流程工作規(guī)范與制度建設(shè);同時(shí)制訂數(shù)據(jù)整合的標(biāo)準(zhǔn)規(guī)范格式,用戶權(quán)限分配原則;完成系統(tǒng)的需求分析。</p><p> (3)基于以上要求,利用.NET技術(shù)完成畢業(yè)生論文數(shù)據(jù)庫系統(tǒng)的開發(fā)。</p><p> 2 .NET框架技術(shù)研究</p><p> Microsoft.NET是微軟公司針對(duì)未來互聯(lián)網(wǎng)推出的戰(zhàn)略架構(gòu),是微軟公司
22、自MS-DOS向WINDOWS轉(zhuǎn)化后的又一次重大策略轉(zhuǎn)變,它針對(duì)了新一代的互聯(lián)網(wǎng)與新一代的系統(tǒng)平臺(tái),囊括了幾乎所有微軟產(chǎn)品的升級(jí)換代,其目的是使網(wǎng)絡(luò)應(yīng)用程序和網(wǎng)絡(luò)服務(wù)的開發(fā)更加簡(jiǎn)便快捷,以爭(zhēng)奪企業(yè)級(jí)應(yīng)用市場(chǎng)。.NET架構(gòu)解決了異構(gòu)平臺(tái)的數(shù)據(jù)交換問題,即應(yīng)用程序不管采用何種操作系統(tǒng)、編程語言和硬件環(huán)境,都可以通過Internet進(jìn)行通訊和共享數(shù)據(jù),從而使分散在Internet上的各種服務(wù)有機(jī)地結(jié)合起來。該架構(gòu)的核心技術(shù)主要包括:.NET框
23、架和ASP.NET。本章對(duì)這兩方面逐一進(jìn)行了討論,并對(duì).NET技術(shù)在信息管理系統(tǒng)中的應(yīng)用進(jìn)行了研究。</p><p> 2.1 .NET框架(.NET Framework)簡(jiǎn)介[5-10]</p><p> .NET是一個(gè)開發(fā)和運(yùn)行軟件的新環(huán)境,便于開發(fā)基于Web的服務(wù),擁有豐富的運(yùn)行庫服務(wù)以支持用多種編程語言編寫的組件,具有跨語言和跨平臺(tái)的互操作能力。它簡(jiǎn)化了在高度分布式Intern
24、et環(huán)境中的應(yīng)用程序開發(fā),為XML Web服務(wù)和其它應(yīng)用程序提供了一個(gè)高效安全的開發(fā)環(huán)境,并全面支持XML。</p><p> .NET框架旨在實(shí)現(xiàn)下列目標(biāo):提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境,無論對(duì)象代碼是在本地存儲(chǔ)和執(zhí)行還是在本地執(zhí)行但在Internet上分布,或者是在遠(yuǎn)程執(zhí)行;提供一個(gè)將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境;提供一個(gè)保證代碼安全執(zhí)行的代碼執(zhí)行環(huán)境,使開發(fā)人員的經(jīng)驗(yàn)在面對(duì)類型不相同的應(yīng)用
25、程序時(shí)保持一致;按照工業(yè)標(biāo)準(zhǔn)生成所有通訊,以確?;?NET框架的代碼可與任何其他代碼集成。</p><p> .NET的核心思想就是把軟件變成服務(wù),在采用了XML作為核心技術(shù)后各種軟件產(chǎn)品都將可能在網(wǎng)絡(luò)上運(yùn)行,不必像今天的軟件產(chǎn)品一樣必須用光盤方式發(fā)送和安裝。這種模式被稱為Web服務(wù),也是新一代互聯(lián)網(wǎng)的核心運(yùn)行模式。.NET框架主要由以下部件組成:通用語言運(yùn)行環(huán)境、Framework類庫、ASP.NET以及A
26、DD.NET,如圖2.1所示。</p><p> 圖 2.1 .NET框架體系結(jié)構(gòu)Fig 2.1 . NET Framework Architecture</p><p> 由圖2.1可以看出,通用語言運(yùn)行時(shí)以及它所提供的類庫構(gòu)成了.NET框架的基礎(chǔ)。在開發(fā)技術(shù)方面,.NET框架提供了全新的數(shù)據(jù)庫訪問技術(shù)ADO.NET,以及網(wǎng)絡(luò)應(yīng)用開發(fā)技術(shù)ASP.NET和Windows Forms;
27、在開發(fā)語言方面,.NET提供了VB,VC++,C#,Jscript等多種語言支待;而Visua1 Studio.NET則是全面支持.NET的開發(fā)工具。</p><p> .NET Framework是在Microsoft.NET平臺(tái)上進(jìn)行開發(fā)的基礎(chǔ),它圍繞基于XML的各項(xiàng)服務(wù)展開,實(shí)現(xiàn)了代碼編譯、組件配置、程序執(zhí)行等各個(gè)層面的功能,它是一個(gè)托管(managed)、高效、安全的執(zhí)行環(huán)境。在.NET Framewo
28、rk下可以實(shí)現(xiàn)多程序語言的互操作功能,并且可將程序編譯成一種中間語言IL(Intermediate Language),使其具有跨操作系統(tǒng)平臺(tái)的功能。.NET Framework包括兩個(gè)核心模塊:通用語言運(yùn)行時(shí)CLR(Common Language Runtime)和.NET基礎(chǔ)類庫。</p><p> 2.1.1通用語言運(yùn)行時(shí)CLR</p><p> CLR處于.NET Framew
29、ork的最底層,是.NET Framework的基礎(chǔ),是將底層平合差異進(jìn)行抽象的運(yùn)行基礎(chǔ)設(shè)施,它為C++、C#、VB.NET等多種語言提供了統(tǒng)一的運(yùn)行時(shí)環(huán)境。CLR使得某種高級(jí)語言編寫的應(yīng)用程序可以在不同的操作系統(tǒng)和硬件上運(yùn)行,而不需要按照特定的環(huán)境重寫應(yīng)用程序。另外它還提供了更多的功能和特性,比如統(tǒng)一和簡(jiǎn)化的編程模型,用戶不必迷感于Win32API和COM;避免了DLL的版本和更新問題,從而大大簡(jiǎn)化了應(yīng)用程序的發(fā)布和升級(jí)。為了實(shí)現(xiàn)CL
30、R對(duì)多種編程語言的支持,就需要在傳統(tǒng)的源代碼層和編譯后的本機(jī)代碼層中間添加一個(gè)代碼層。應(yīng)用程序代碼要先編譯成獨(dú)立于機(jī)器的中間語言代碼,然后再編譯成與機(jī)器對(duì)應(yīng)的本機(jī)代碼,圖2.2是.NET編譯流程圖:</p><p> 圖2.2 .NET編譯流程圖Fig 2.2 . NET compiler flow chart</p><p> 具體的編譯過程是,首先使用任一種CLR支持的編程語言編
31、寫應(yīng)用程序源代碼,然后由編譯器將源代碼編譯成裝配件(Assembly),這個(gè)裝配件包含了中間語言代碼IL和元數(shù)據(jù)(meta data)。IL代碼是所有程序及程序組件之間的溝通接口,其特點(diǎn)是獨(dú)立于操作系統(tǒng)和硬件平臺(tái),這就意味著可以編譯成IL的程序語言是互通的。元數(shù)據(jù)用來描述裝配件中的數(shù)據(jù)類型、類、接口、結(jié)構(gòu)和所有實(shí)體。元數(shù)據(jù)還包含一個(gè)文件清單(manifest),它包含了版本信息、該裝配件調(diào)用其他裝配件的信息以及控制權(quán)限的信息,這樣就使.
32、NET應(yīng)用程序代碼具備了自描述特性。</p><p> CLR在功能上如同一塊虛擬的CPU,它執(zhí)行IL代碼并操作數(shù)據(jù)。為了加載一個(gè)應(yīng)用程序,CLR使用文件清單來確定應(yīng)用程序所需要匯編的正確版本,并檢查IL代碼和描述它的元數(shù)據(jù),保證程序不會(huì)訪問它不具有相應(yīng)許可的內(nèi)存或其它資源,從而確認(rèn)代碼是“類型安全”的。然后CLR加載IL代碼,同時(shí)收集有關(guān)應(yīng)用程序的信息,例如:它是從那里下載或安裝的、它需要執(zhí)行什么功能、什么用
33、戶試圖運(yùn)行它、匯編是否用來自信任的開發(fā)者的數(shù)字簽名,以及進(jìn)行數(shù)字簽名后匯編是否有改動(dòng),并按管理策略決定是否允許應(yīng)用程序運(yùn)行,甚至還可告知應(yīng)用程序它無法授權(quán)申請(qǐng)的所有權(quán)限,并允許應(yīng)用程序自行決定是否繼續(xù)運(yùn)行等。之后,及時(shí)編譯器JIT將IL代碼以調(diào)用的對(duì)象方法為單位動(dòng)態(tài)編譯成可執(zhí)行的本機(jī)代碼。通過裝配件中的元數(shù)據(jù),JIT編譯器可以了解代碼做些什么以及支持那些平臺(tái),它能夠利用目標(biāo)機(jī)器的硬件特點(diǎn),根據(jù)平臺(tái)的具體情況對(duì)代碼進(jìn)行即時(shí)優(yōu)化操作,如合理
34、地分配CPU寄存器、通過監(jiān)控當(dāng)前的物理和虛擬內(nèi)存需求來高效地利用內(nèi)存、產(chǎn)生特定的平臺(tái)指令以充分利用實(shí)際的處理器模式等。經(jīng)過編譯后的代碼保存在內(nèi)存中,直到整個(gè)過程完成。不同的機(jī)器使用不同的JIT編譯器,所</p><p> 借助CLR可以實(shí)現(xiàn)語言的互操作性,用一種語言編寫的類能與另一種語言編寫的類集成,具體表現(xiàn)為:</p><p> ①一種語言編寫的類能夠繼承另一種語言編寫的類。<
35、/p><p> ?、谝粋€(gè)類可以包含另一個(gè)類的實(shí)例,而不管它是用什么語言編寫的。</p><p> ?、蹖?duì)象或?qū)ο蟮囊媚茉诜椒ㄖg傳遞。</p><p> ?、茉诓煌恼Z言之間調(diào)用方法時(shí),能夠在調(diào)試器中調(diào)試這些方法的調(diào)用,即調(diào)試不同語言編寫的代碼。</p><p> 2.1.2.NET基礎(chǔ)類庫</p><p> .NE
36、T基礎(chǔ)類庫由一組廣泛的、面向?qū)ο蟮?、可以繼承的、可被開發(fā)者用于任何編程語言的、可重用的類集合組成,它向程序員提供軟件組件以編寫在CLR的控制下運(yùn)行的代碼。所有的類都遵循一套命名和設(shè)計(jì)方針,從而大大減小了開發(fā)人員學(xué)習(xí)過程中的難度。這不但使.NET框架類型易于使用,而且還減少了學(xué)習(xí).NET框架的新功能所需要的時(shí)間。此外,第三方組件可與.NET框架中的類無縫集成。</p><p> 圖2.3顯示了服務(wù)框架中的一些主要
37、類庫。框架包括一套開發(fā)人員希望在標(biāo)準(zhǔn)語言庫中存在的基類庫,例如:集合、輸入/輸出、字符串及數(shù)據(jù)類,還提供訪問操作系統(tǒng)的類,如網(wǎng)絡(luò)、線程、加密等類型,此外還提供了數(shù)據(jù)訪問類以及開發(fā)工具。</p><p> 圖 2.3 .net中的主要基礎(chǔ)類庫Fig 2.3 . net in the main library foundation</p><p> .NET基礎(chǔ)類庫將核心Win32 AP
38、I最常用的功能和外掛SDK功能封裝到一個(gè)統(tǒng)一的包中,這些類由被稱為命名空間(Name Space)的機(jī)制組織起來,按照單一有序的分級(jí)組織提供了一個(gè)龐大的功能集。跟傳統(tǒng)的Windows編程相比,使用和擴(kuò)展基礎(chǔ)類庫都比較容易,這使得開發(fā)者能夠高效,快速地構(gòu)建基于下一代互聯(lián)網(wǎng)的網(wǎng)絡(luò)應(yīng)用。</p><p> 2.1.3 .NET的新特性</p><p> .NET是一種全新的技術(shù),它給程序員
39、在進(jìn)行程序開發(fā)時(shí)提供了一種全新的編程摸式,因此.NET中也包括了很多新特性,這里只列出一些比重要的特性。</p><p> ①一致的編程模式。在.NET環(huán)境中,所有的應(yīng)用程序都采用通用的面向?qū)ο缶幊堂剑辉傧馱indows環(huán)境中那樣,既有DLL函致也有COM對(duì)象。</p><p> ?、诤?jiǎn)化了的編程摸式。由于CLR的作用,在進(jìn)行編程時(shí)不再需要掌握關(guān)于COM知識(shí)了。</p>
40、<p> ?、圻\(yùn)行于多個(gè)平臺(tái)。對(duì)于任何操作平臺(tái),只要支持NET運(yùn)行時(shí)均可以運(yùn)行NET應(yīng)用程序。</p><p> ?、苤С侄嗾Z言的綜合。在.NET環(huán)境下,代碼重用可以建立在源碼的級(jí)別上。也就是說,別人用C#語言寫的某個(gè)類可以直接在C++這樣的語言中使用。</p><p> ?、葑詣?dòng)資源管理。在.NET環(huán)境下,自動(dòng)資源管理功能己經(jīng)加入到CLR之中,同時(shí)由于資源回收功能的加入,在一
41、定程度上安全性也得到了保障。</p><p> ?、抟恢碌某鲥e(cuò)處理方式,在.NET環(huán)境下所有的程序都采用統(tǒng)一的錯(cuò)誤處理方式——產(chǎn)生異常。</p><p> ?、甙踩?。.NET提供丁一整套機(jī)制來判斷角色和確認(rèn)身份信息,并且能作到跨進(jìn)程和機(jī)器從而確保所需的代碼在遠(yuǎn)端沒有受到破壞。</p><p> ?、嘁隭ML和SOAP。原有的Client/Server結(jié)構(gòu)已經(jīng)過時(shí)
42、,這樣就出現(xiàn)了了全新的B/S結(jié)構(gòu)編程模式,而XML和SOAP能使這種模式很好地工作。</p><p> ⑨全新的編程語言C#。C#像VB一樣簡(jiǎn)單,又像C++一樣強(qiáng)大,但絕不是JAVA的克隆,它能作到與XML協(xié)議的最大程度的融合,C#的推出與.NET是密切相關(guān)的。</p><p> 2.2 新一代Web技術(shù)ASP.NET</p><p> ASP是一種用于Web
43、服務(wù)的服務(wù)器端腳本環(huán)境,其主要特征是可以由任何編程語言來編寫,它能夠和HTML標(biāo)簽、腳本語言、COM(Component Object Model)組件等有機(jī)地結(jié)合在一起,以此來生成動(dòng)態(tài)網(wǎng)頁,創(chuàng)建交互式的Web站點(diǎn)。</p><p> 當(dāng)用戶通過瀏覽器發(fā)出一個(gè)對(duì)ASP頁的請(qǐng)求后,Web服務(wù)器接受這一請(qǐng)求,調(diào)用相應(yīng)的ASP頁面,執(zhí)行其中的腳本命令,生成一個(gè)由標(biāo)準(zhǔn)HTML標(biāo)簽組成的Web頁發(fā)送給用戶。在這一過程中,
44、所有的腳本處理工作均由Web服務(wù)器完成,無需考慮客戶端的瀏覽器是否支持腳本處理的問題。服務(wù)器僅將執(zhí)行的結(jié)果而非ASP頁面本身返回給客戶端瀏覽器,這樣也就減輕了客戶端瀏覽器的負(fù)擔(dān)。但ASP頁面每次被訪問調(diào)用時(shí),都需要在服務(wù)器端重新處理腳本,這樣就降低了交互的速度,而且ASP只是在微軟環(huán)境下獲得完全的支持,必須依賴基于Win32的組件模型,在其他平臺(tái)上擴(kuò)展困難。此外,ASP文件中充斥著HTML、JavaScript等無法調(diào)試的代碼,使得開發(fā)
45、起來比較困難,程序的可讀性差,而且會(huì)導(dǎo)致性能的損失。</p><p> ASP.NET是一個(gè)已編譯、基于.NET的環(huán)境,可以用任何與.NET兼容的語言創(chuàng)建應(yīng)用程序。ASP.NET可以無縫的與HTML編輯器和其他編程工具一起工作,這不僅使得Web開發(fā)更加方便,而且還能提供這些工具所能提供的所有優(yōu)點(diǎn),包括開發(fā)人員可以使用將服務(wù)器控件拖到Web頁上的GUI和完全集成的調(diào)試支持功能。</p><p&
46、gt; 目前在ASP.NET中可以使用三種語言:VB.NET,C#和JavaScript。其實(shí)ASP.NET不只支持這三種語言,凡是可以編譯成MSIL(Microsoft intermediate language)的程序語言都可以成為制作ASP.NET網(wǎng)頁的語言。MSIL是一種中間語言,介于高級(jí)程序語言和機(jī)器碼之間,在ASP.NET中,我們編寫的程序語言先編譯成MSIL然后MSIL再被編譯成機(jī)器碼加以執(zhí)行。</p>&
47、lt;p> ASP.NET網(wǎng)頁第一次被瀏覽時(shí),會(huì)經(jīng)過兩次編譯,所以速度較慢。但是第一次被瀏覽后,MSIL會(huì)被存儲(chǔ)下來,當(dāng)同一網(wǎng)頁第二次被瀏覽時(shí),只需要花費(fèi)從MSIL編譯到機(jī)器碼然后再執(zhí)行的時(shí)間,結(jié)果比ASP網(wǎng)頁執(zhí)行返回速度快。兩個(gè)工作模式的比較見圖2.4:</p><p> 圖2.4 ASP.NET和ASP編譯方式比較Fig 2.4 ASP.NET and ASP Compiler Compariso
48、n</p><p> ASP.NET的優(yōu)勢(shì)主要表現(xiàn)在:執(zhí)行效率高,世界級(jí)的支持工具、自定義性和可擴(kuò)展性等幾個(gè)方面。ASP.NET建立在.NET框架類的基礎(chǔ)之上,它提供了由控件和基礎(chǔ)部分組成的“Web程序模版”,大大簡(jiǎn)化了Web程序和XML Web服務(wù)的開發(fā)。</p><p> ASP.NET是建立在微軟新一代.NET平臺(tái)架構(gòu)上,利用CLR在服務(wù)器后端為用戶提供建立強(qiáng)大的企業(yè)級(jí)Web應(yīng)用
49、服務(wù)的編程框架。ASP.NET與ASP相比有以下幾大優(yōu)勢(shì):</p><p> ①ASP.NET采用了高級(jí)語言如C#來進(jìn)行后臺(tái)編程,而且高級(jí)語言代碼和腳本代碼可以完全分離,使得代碼更清晰,調(diào)試性能高,提高了邏輯代碼的復(fù)用</p><p><b> 性和共享性。</b></p><p> ?、贏SP.NET是運(yùn)行在服務(wù)器后端編譯好的高級(jí)語言運(yùn)行
50、時(shí)代碼,運(yùn)行時(shí)早綁定(Early Binding)、即時(shí)編譯、本地優(yōu)化、緩存服務(wù)、基于運(yùn)行時(shí)代碼受托管與驗(yàn)證的安全機(jī)制等都為ASP.NET帶來了卓越的性能。</p><p> ?、跘SP.NET還可以利用.NET平臺(tái)架構(gòu)的諸多優(yōu)越性能,如對(duì)XML、簡(jiǎn)單對(duì)象訪問協(xié)議SOAP(Simple ObjectAccess Protocol)、Web服務(wù)描述語言WSDL(Web Service Description Lan
51、guage)等Internet標(biāo)準(zhǔn)的強(qiáng)健支持。</p><p> 2.2.1 ASP.NET的系統(tǒng)結(jié)構(gòu)</p><p> ASP.NET使用IIS來傳送內(nèi)容,以響應(yīng)HTTP請(qǐng)求,ASP.NET頁面是一個(gè).aspx文件,圖2.5所示的是ASP.NET處理客戶請(qǐng)求流程圖:</p><p> 圖2.5 ASP.NET處理客戶請(qǐng)求流程圖Fig 2.5 ASP.NET
52、 clients deal with the request flow chart</p><p> 在ASP.NET處理過程中,可以訪問所有的.NET類、C#或其他語言創(chuàng)建的定制組件、數(shù)據(jù)庫等。實(shí)際上,運(yùn)行C#應(yīng)用程序和ASP.NET的功能一樣強(qiáng)大,在ASP.NET中使用C#就是在運(yùn)行C#程序。</p><p> ASP.NET文件包含以下內(nèi)容:</p><p&g
53、t; ?、貱#、VB.NET、JScript.NET代碼和.NET Framework目前或?qū)碇С值钠渌Z言的代碼。</p><p> ?、贖TML代碼和服務(wù)器的處理指令。</p><p> ③內(nèi)嵌的ASP.NET服務(wù)器控件,HTML控件和用戶定制的控件。</p><p> 2.2.2 ASP.NET Web窗體(Web Form)</p>&l
54、t;p> ASP.NET Web Form是在面向?qū)ο缶幊棠J缴显O(shè)計(jì)的,它使代碼重用成為可能,并讓程序代碼和頁面顯示內(nèi)容分開。在Visual Studio.NET環(huán)境中創(chuàng)建一個(gè)類型為C#的Web Application工程,建立一個(gè)名為Web的解決方案,其中包含兩個(gè)文件,一個(gè)是WebForm1.aspx,它是一個(gè)ASP.NET頁面,另一個(gè)是WebForm1.aspx.cs文件,它是該Web Form的C#邏輯代碼文件。在該頁面上
55、添加一個(gè)按鈕,WebForm1.aspx的核心代碼如下所示:</p><p> <%@Page language="c#" Codebehind="WebForm1.aspx.cs"</p><p> AutoEventWireup="false" Inherits="WebApp1.WebFrom1"
56、;%></p><p><b> <HTML></b></p><p> <body MS_POSITIONING="GridLayout"></p><p> <form id="WebForm1"method="post" runat=&q
57、uot;server"></p><p> <asp:button id="Click"Text="Click me" runat="server"></p><p> </asp:button></p><p><b> </form>&
58、lt;/b></p><p><b> </body></b></p><p><b> </HTML></b></p><p> 這頁代碼中有幾個(gè)地方需要解釋:</p><p> ?、僭陧敳康?lt;%@Page%>中描述了該ASP.NET頁面后臺(tái)代碼的設(shè)
59、置情況。用Languange屬性指定使用的是C#代碼,用Codebehind屬性指定驅(qū)動(dòng)頁面的邏輯代碼在那個(gè)文件中,如本例的WebForm1.aspx.cs,在這個(gè)文件中包含一個(gè)類的定義,這個(gè)類用作Web Form的基類,這個(gè)基類可以和.aspx文件中的代碼一起使用,生成最終的HTML頁面。這樣就將ASP.NET與面向?qū)ο蟮哪P吐?lián)系在一起了。</p><p> ?、谠?lt;form>元素內(nèi)包含的是各種控件
60、的顯示標(biāo)注,其中最重要的屬性是runat,將其設(shè)置為server,表示窗體的處理將在服務(wù)器端上進(jìn)行。如果沒有包含這個(gè)屬性,在服務(wù)器端就不會(huì)有任何處理。在窗體內(nèi)包含了一個(gè)按鈕控件,其語法是基于XML的,控件可以是服務(wù)器端的也可以是客戶端的,同樣通過runat屬性來控制。在WebForm1.aspx.cs文件中包含的則是程序邏輯代碼,其中有幾點(diǎn)值得注意:</p><p> 代碼的首部加載代碼默認(rèn)的應(yīng)用集,通過“us
61、ing”關(guān)鍵字來實(shí)現(xiàn)。緊接著定義了主類,它從System.Web.UI.Page繼承,每個(gè)ASP.NET頁面都是一個(gè)Page對(duì)象的實(shí)例。</p><p> ?、贏SP.NET的頁面事件。Page對(duì)象有一個(gè)默認(rèn)的構(gòu)造方法,注冊(cè)Page_Init()的一個(gè)事件處理程序,并在頁面加載的時(shí)候調(diào)用這個(gè)程序。在這個(gè)處理程序內(nèi)調(diào)用InitializeComponent()方法,把所有設(shè)計(jì)階段的代碼添加到窗體中,并對(duì)控件的事件處
62、理程序進(jìn)行注冊(cè)。</p><p> 通過上述的方式,ASP.NET將程序代碼和頁面顯示標(biāo)注隔離開來,前臺(tái)負(fù)責(zé)顯示和美觀等功能,后臺(tái)實(shí)現(xiàn)商務(wù)邏輯功能。ASP.NET引入了面向?qū)ο蟮母呒?jí)語言來撰寫后臺(tái)代碼,提供了先進(jìn)的事件處理模型,易于調(diào)試且功能強(qiáng)大。</p><p> 2.2.3 ASP.NET的狀態(tài)管理</p><p> 基于HTTP技術(shù)的Web窗體是無狀態(tài)的
63、,每次將Web請(qǐng)求發(fā)送到服務(wù)器時(shí),都會(huì)重新創(chuàng)建Web頁,這意味著每次往返都會(huì)丟失所有與該頁和該頁上的控件相關(guān)聯(lián)的信息。ASP.NET提供了多種方式來維護(hù)返行于客戶端和服務(wù)器之間的狀態(tài)信息,其中最常用的是Cookie和Session。</p><p> Cookie用于在客戶端上存儲(chǔ)少量的經(jīng)常更改的信息,這些信息與請(qǐng)求一起發(fā)送到服務(wù)器,它不需要任何服務(wù)器資源。Cookie是基于文本結(jié)構(gòu)的,它可以在瀏覽器會(huì)話結(jié)束時(shí)
64、滅亡,也可以在客戶端計(jì)算機(jī)上無限期存在,這取決于客戶端的時(shí)間限制。.NET基礎(chǔ)類庫使用了同名的Cookie類來生成和管理客戶端的Cookie。</p><p> Session是由服務(wù)器管理的會(huì)話狀態(tài),它可存儲(chǔ)復(fù)雜的數(shù)據(jù)類型且擁有較高的安全性。Session最常見的用途是與Cookie一起向Web應(yīng)用程序提供用戶標(biāo)識(shí),會(huì)話狀態(tài)可用于不支持HTTP Cookie的瀏覽器,因?yàn)樗仟?dú)立于客戶端的。.NET基礎(chǔ)類庫的
65、HttpSessionState類提供了對(duì)會(huì)話狀態(tài)值以及會(huì)話生存期的訪問和控制。</p><p> 2.3數(shù)據(jù)庫訪問技術(shù)ADO.NET</p><p> 微軟推出的.NET框架創(chuàng)立了一種取代COM和COM+的組件模型,ADO.NET是微軟推出的在.NET Framework下全新的數(shù)據(jù)訪問編程模型及數(shù)據(jù)訪問技術(shù),它構(gòu)建在以前的數(shù)據(jù)訪問功能之上,并替代現(xiàn)有的、廣泛應(yīng)用的數(shù)據(jù)訪問接口。&l
66、t;/p><p> ADO.NET為現(xiàn)在的應(yīng)用程序?qū)Ω鞣N類型的數(shù)據(jù)存儲(chǔ)像各種數(shù)據(jù)庫、文本文件、XML、某些特定領(lǐng)域如Microsoft Exchange Server的電子郵、日歷,ActiveDirectory上基于Window的服務(wù)器存儲(chǔ)的系統(tǒng)用戶、權(quán)限等信息,Spreadsheets的訪問提供了統(tǒng)一的一致的單一訪問方式,因而其更有邏輯,更加結(jié)構(gòu)化。圖2.6展示了ADO.NET的軟件層次模型圖。</p&g
67、t;<p> 圖2.6 ADO.NET層次結(jié)構(gòu)Fig 2.6 ADO.NET hierarchical structure</p><p> ADO.NET數(shù)據(jù)提供者是處理特定類型的數(shù)據(jù)庫的類“集”。不同類型數(shù)據(jù)提供者是不同的一組類,實(shí)現(xiàn)各自訪問特定類型的數(shù)據(jù)存儲(chǔ)的功能,這也是ADO.NET對(duì)各種數(shù)據(jù)存儲(chǔ)類型作的優(yōu)化。數(shù)據(jù)提供者為了被調(diào)用必須提供一組基本的功能,但特殊的數(shù)據(jù)提供者可以有許多額外
68、的屬性和方法,他們對(duì)于被訪問的數(shù)據(jù)存儲(chǔ)器的類型來說是唯一的。</p><p> 在Web開發(fā)中,數(shù)據(jù)庫訪問技術(shù)是其關(guān)鍵技術(shù)之一。微軟早期提供了ADO(ActiveX Data Object)技術(shù)來實(shí)現(xiàn)數(shù)據(jù)庫訪問,ADO通過Connection,Command和RecordSet對(duì)象對(duì)數(shù)據(jù)庫進(jìn)行操作,當(dāng)在不同應(yīng)用程序或組件之間傳送RecordSe時(shí),必須將參數(shù)和數(shù)據(jù)包裝成標(biāo)準(zhǔn)的二進(jìn)制格式,再適當(dāng)?shù)剡M(jìn)行數(shù)據(jù)類型轉(zhuǎn)換
69、,這樣就造成了數(shù)據(jù)訪問速度慢、效率低。此外,ADO的數(shù)據(jù)存取處理主要依賴于兩層結(jié)構(gòu),并且是基于連接的。斷開連接,數(shù)據(jù)就不能進(jìn)行存取操作。</p><p> ADO.NET是在.NET Framework下對(duì)ADO技術(shù)的擴(kuò)展,ADO.NET的數(shù)據(jù)處理采用三層體系結(jié)構(gòu),并且是面向無連接的模式,其體系結(jié)構(gòu)如圖2-7所示:</p><p> 圖 2.7 ADO.NET體系結(jié)構(gòu)圖</p&g
70、t;<p> ADO.NET提出了一個(gè)全新的數(shù)據(jù)訪問概念數(shù)據(jù)集DataSet,DataSet不依賴于數(shù)據(jù)庫鏈路,它通過數(shù)據(jù)適配器DataAdapter來訪問數(shù)據(jù)庫,DataAdapter是數(shù)據(jù)源和DataSet之間的“橋”,DataAdapter能自動(dòng)將對(duì)數(shù)據(jù)的各種操作變換到數(shù)據(jù)源相關(guān)的SQL語句上。DataSet在內(nèi)部是用XML來描述數(shù)據(jù)的,由于XML是一種平臺(tái)無關(guān)、語言無關(guān)的數(shù)據(jù)描述語言,用它可描述復(fù)雜的數(shù)據(jù)關(guān)系。此
71、外,DataSet與同樣是非連接RecordSet相比,它還包含了數(shù)據(jù)表之間的聯(lián)系,DataSet實(shí)際上是在內(nèi)存中構(gòu)建了一個(gè)關(guān)系數(shù)據(jù)庫模型,所以它有更豐富的編程模型。這樣,程序員在編程時(shí)可以屏蔽數(shù)據(jù)庫之間的差異,從而獲得一致的編程模型。</p><p> ADO.NET設(shè)計(jì)了兩套數(shù)據(jù)庫通訊程序:一種是OLEDB Data Provider,它可以連接到任何支持對(duì)象鏈接和嵌入式數(shù)據(jù)庫OLEDB(Object Li
72、nking and Embedding Database)驅(qū)動(dòng)程序的數(shù)據(jù)庫;另一種是SQL Server Data Provider,它是專為與SQL Server7及以后版本通訊而設(shè)計(jì)的。假設(shè)conn代表數(shù)據(jù)庫連接實(shí)例,select代表一條SQL語句,下面分別用這兩種方式來訪問數(shù)據(jù)庫:</p><p> ?、儆肙LEDB Data Provider。</p><p> OleDbDat
73、aAdapter adapter=new OleDbDataAdapter(select,conn);</p><p> DataSet ds=new DataSet();</p><p> Adapter.Fill(ds);</p><p> ②使用SQLServer Data Provider</p><p> SqlDataAd
74、apter adapter=new SqlDataAdapter(select,conn);</p><p> DataSet ds=new DataSet();</p><p> adapter.Fill(ds);</p><p> 2.4 ASP.NET中的認(rèn)證和授權(quán)</p><p> 2.4.1在ASP.NET中實(shí)現(xiàn)認(rèn)證<
75、/p><p> ASP.NET提供了三種用戶認(rèn)證方法,Windows認(rèn)證、Passport認(rèn)證和Forms認(rèn)證。Windows認(rèn)證是通過IIS實(shí)現(xiàn)的,只需稍微修改(甚至不修改)頁面即可實(shí)現(xiàn);Passport和Forms認(rèn)證類似:后者是在服務(wù)器上實(shí)現(xiàn)的,而前者是通過微軟公司的訂閱服務(wù)實(shí)現(xiàn)的[11]。</p><p><b> Windows認(rèn)證</b></p>
76、;<p> 請(qǐng)求ASP.NET頁面時(shí),客戶首先遇到的是Web服務(wù)器IIS。此時(shí)IIS將對(duì)用戶進(jìn)行認(rèn)證。當(dāng)IIS處理認(rèn)證工作時(shí),它可以直接與操作系統(tǒng)(如Windows 2000)進(jìn)行通信,對(duì)用戶的證件進(jìn)行驗(yàn)證。圖2.8說明了這種IIS Web應(yīng)用程序體系結(jié)構(gòu)。</p><p> 圖2.8 ASP.NET的安全體系結(jié)構(gòu)Fig 2.8 ASP.NET Security Architecture<
77、;/p><p> IIS賦予的身份是由Windows用戶帳戶定義的,因此被稱為Windows認(rèn)證。系統(tǒng)通過在web.config文件中使用下面的代碼行來啟用這種認(rèn)證方法:</p><p> <authentication mode=“Windows”/></p><p> IIS使用三種不同類型的Windows認(rèn)證:Basic、Digest和NTLM(
78、集成的Windows認(rèn)證,Integrated Windows Authentication)。以Basic認(rèn)證為例,認(rèn)證步驟如下:</p><p> 1)客戶向服務(wù)器請(qǐng)求被限制的資源;</p><p> 2)Web服務(wù)器以“401 Unauthorized”進(jìn)行響應(yīng);</p><p> 3)Web瀏覽器收到這條消息,并詢問用戶的證件(通常是用戶名和密碼);&
79、lt;/p><p> 4)Web瀏覽器通過這些證件來訪問服務(wù)器資源:</p><p> 5)如果證件無效,則重新回到第2步;</p><p> 6)通過認(rèn)證后,瀏覽器便能夠訪問這些資源。</p><p> 使用Basic認(rèn)證時(shí),用戶名和密碼都是以純文本的方式通過網(wǎng)絡(luò)傳遞給服務(wù)器,存在安全隱患。Digest認(rèn)證的工作原理與Basic認(rèn)證類似
80、,但對(duì)傳送的用戶名和密碼進(jìn)行加密。NTLM認(rèn)證時(shí),將不會(huì)提供用戶輸入證件,在瀏覽器連接到服務(wù)器后,它便將加密后的、用戶登錄計(jì)算機(jī)時(shí)使用的用戶名和密碼信息發(fā)送給服務(wù)器。采用哪種Windows認(rèn)證方法,在IIS中做相應(yīng)設(shè)置即可。</p><p><b> ?、诒韱握J(rèn)證</b></p><p> 使用表單驗(yàn)證時(shí),用戶被引導(dǎo)到Web站點(diǎn)的一個(gè)登錄表單,通過該表單,用戶可以提
81、供其證件。如果應(yīng)用程序根據(jù)自定義的方案認(rèn)可了證件,ASP.NET將在運(yùn)行瀏覽器的計(jì)算機(jī)上創(chuàng)建一個(gè)認(rèn)證Cookie,該Cookie包含某種格式的證件或可用來獲得證件的字符串。以后,整個(gè)應(yīng)用程序都將使用該Cookie來進(jìn)行授權(quán)。整個(gè)過程步驟如下:</p><p> 1)客戶向站點(diǎn)請(qǐng)求被保護(hù)的頁面;</p><p> 2)如果請(qǐng)求沒有包含有效的認(rèn)證Cookie,Web服務(wù)器將把用戶重定向到w
82、eb.config文件中Authentication標(biāo)簽的loginURL屬性中指定的URL,該URL包含一個(gè)供用戶登錄的表單;</p><p> 3)證件被輸入到表單中,并通過表單傳送被提交;</p><p> 4)如果證件有效,ASP.NET將在客戶機(jī)上創(chuàng)建一個(gè)認(rèn)證Cookie;</p><p> 5)用戶便能夠被重定向到最初請(qǐng)求的頁面。</p>
83、;<p> 啟用表單驗(yàn)證需要在web.config中進(jìn)行如下設(shè)置:</p><p> <configuration></p><p> <system.web></p><p> <authentication mode="Form"></p><p> <
84、forms name="name" loginUrl="loginForm"></p><p> <credentials PasswordFormat="MDS")</p><p> <user name="username" password="pwd"/>&
85、lt;/p><p> </credentials></p><p><b> </forms></b></p><p> </authentication></p><p> </system.web></p><p> </config
86、uration></p><p> 其中Credentials屬性可以省略,該屬性提供了用于認(rèn)證的用戶名和密碼定義。Credentials配置段包含認(rèn)證時(shí)ASP.NET使用的有效用戶身份。</p><p> PasswordFormat指定了發(fā)送證件給服務(wù)器時(shí)采用的加密方法,該屬性的取值可以是clear,MDS和SHAI.Clear表示不加密,MDS和SHAI是兩種加密算法。Us
87、er元素指定了有效的用戶證件。設(shè)置好web.config,在代碼中控制驗(yàn)證需要用到FormsAuthentication對(duì)象,該對(duì)象有四個(gè)重要的方法:</p><p> 1) SetAuthCookie:設(shè)置認(rèn)證Cookie;</p><p> 2) RedirectFormLoginPage:設(shè)置認(rèn)證Cookie,同時(shí)將用戶重定向到最初請(qǐng)求的URL;</p><p
88、> 3) GetAuthCookie:使用認(rèn)證信息創(chuàng)建一個(gè)HttpCookie對(duì)象;</p><p> 4) Sighout:刪除認(rèn)證Cookie,將用戶注銷。</p><p> 表單認(rèn)證的功能非常強(qiáng)大,在實(shí)現(xiàn)認(rèn)證方面提供了非常大的靈活性。由于設(shè)置包含在web.config文件中,因此這種認(rèn)證方法易于實(shí)現(xiàn),系統(tǒng)也可以將用戶信息放在數(shù)據(jù)庫中,并創(chuàng)建自定義的子程序來認(rèn)證用戶。辦公自
89、動(dòng)化系統(tǒng)正是利于了表單認(rèn)證的這些特點(diǎn),采用了表單認(rèn)證的方式。</p><p> ③Passport認(rèn)證</p><p> Passport認(rèn)證是微軟公司提供的一種集中式認(rèn)證服務(wù),其工作原理與表單認(rèn)證非常相似,只是不必要?jiǎng)?chuàng)建任何自定義的功能。使用Passport認(rèn)證的具體步驟如下:</p><p> 1)客戶向站點(diǎn)請(qǐng)求安全頁面:</p><p
90、> 2)如果請(qǐng)求不含有效的Passport認(rèn)證Cookie,則Web服務(wù)器將用戶重定向到Passport登錄服務(wù),同時(shí)將一些關(guān)于請(qǐng)求的信息加密后,再發(fā)送給Passport服務(wù)。</p><p> 3)用戶將看到Passport登錄站點(diǎn)的一個(gè)登錄表單,用戶在其中輸入證件,并通過表單發(fā)送(使用SSL加密)來提交.</p><p> 4)如果證件有效,Passport服務(wù)將創(chuàng)建一個(gè)認(rèn)
91、證證書,并將其放在查詢字符串中。然后用戶將被重定向到原來的站點(diǎn)。</p><p> 5)當(dāng)服務(wù)器在查詢字符串中找到認(rèn)證證書后,將為該用戶創(chuàng)建一個(gè)認(rèn)證Cookie。Passport認(rèn)證服務(wù)并不創(chuàng)建認(rèn)證Cookie,這項(xiàng)工作是由原來的Web服務(wù)器來完成的。Passport是一種實(shí)現(xiàn)安全性的簡(jiǎn)單方式,可以將站點(diǎn)的安全性托付給該服務(wù),用戶用有效的通行證書就可以使用同一用戶名和密碼登錄任何PassPort站點(diǎn)。但是使用P
92、assport認(rèn)證,站點(diǎn)必須是微軟的Passport服務(wù)的成員,要成為其成員需要付費(fèi)。</p><p> 2.4.2在ASP.NET中實(shí)現(xiàn)授權(quán)</p><p> 授權(quán)旨在確定通過認(rèn)證的用戶可以訪問哪些資源。在ASP.NET中,授權(quán)的方式有兩種:文件授權(quán)和URL授權(quán)[15]。</p><p> 文件授權(quán)依賴于Windows的訪問控制列表ACL(Access Co
93、ntrol List),在單文件和目錄的基礎(chǔ)上確定用戶的權(quán)限。使用文件授權(quán)時(shí),ASP.NET與Windows交互,將用戶身份與ACL關(guān)聯(lián)起來。當(dāng)通過認(rèn)證的用戶試圖訪問Web服務(wù)器上的文件時(shí),Windows將檢查相應(yīng)的ACL,以確定該角色或身份是否被允許查看該文件。這是一種實(shí)現(xiàn)安全性的簡(jiǎn)單方式:文件認(rèn)證和模擬一起來確定ACL權(quán)限。但這種方式有時(shí)不易管理,如果Web站點(diǎn)包含多個(gè)目錄、多個(gè)文件夾和文件時(shí),設(shè)置ACL是一件十分繁瑣的工作。因此,
94、一般情況下采用URL授權(quán)方式。</p><p> URL授權(quán)方式控制對(duì)資源的訪問權(quán)限。它可以允許某些用戶和角色對(duì)資源擁有存取權(quán)限,也可以拒絕另一些用戶和角色對(duì)資源的存取操作。甚至,它還可以決定存取資源的HTTP方法(例如:不允許GET,允許POST等)。</p><p> 啟用URL授權(quán)必須在web.config文件中設(shè)置一些屬性。對(duì)于授權(quán)用戶和角色的控制,ASP.NET通過配置文件w
95、eb.config中的<authorization>標(biāo)識(shí)段來實(shí)現(xiàn)。<allow>標(biāo)識(shí)表示允許對(duì)資源的訪問,<deny>標(biāo)識(shí)表示拒絕對(duì)資源的訪問。它們都有兩個(gè)屬性,users和roles分別表示用戶和角色。</p><p> <configuration></p><p> <security></p><p
96、> <authorizatioh></p><p> <allow users=“administrator”/></p><p> <allow roles=“Admins”/></p><p> <deny users=“*”></p><p> </authoriza
97、tion></p><p> </security></p><p> </configuration></p><p> 上面這段程序表明:除了用戶“adminstrator”和角色“Admins”,其他用戶對(duì)本站點(diǎn)的訪問將被拒絕。也就是說用戶“adminstrator”和角色“Admins”分別是該站點(diǎn)的授權(quán)用戶和授權(quán)角色。&
98、lt;/p><p> 3 畢業(yè)論文數(shù)據(jù)庫系統(tǒng)的分析</p><p> 3.1 系統(tǒng)的總體分析</p><p> 一般來講,畢業(yè)論文收集與畢業(yè)生圖書館離校手續(xù)的辦理,分別由圖書館兩個(gè)不同部門負(fù)責(zé)管理,學(xué)生需要分別到圖書館辦理相應(yīng)手續(xù),這不但給學(xué)生帶來了麻煩,也增加了圖書館的管理負(fù)擔(dān)。 </p><p> 我們希望畢業(yè)論文管理系統(tǒng),能實(shí)現(xiàn)對(duì)
99、論文收集、離校手續(xù)辦理、數(shù)字化存儲(chǔ)、WEB檢索與全文下載一體化服務(wù)功能,減化管理流程,提高工作效率。</p><p> 通過實(shí)際調(diào)查分析法,對(duì)畢業(yè)生到館辦理離校手續(xù)程序進(jìn)行調(diào)查分析,分解步驟,優(yōu)化工作流,優(yōu)化后的流程圖如下圖:</p><p> 圖 3.1優(yōu)化后的工作流</p><p> 系統(tǒng)總體業(yè)務(wù)流程設(shè)計(jì):畢業(yè)生首先通過網(wǎng)絡(luò)提交畢業(yè)論文電子版,然后到畢業(yè)
100、生到圖書館簽論文授權(quán)書與提交紙質(zhì)畢業(yè)論文,圖書館工作人員核對(duì)相關(guān)信息、辦理離校手續(xù),最后畢業(yè)論文發(fā)布,可通WEB檢索與下載。</p><p> 考慮到借書證與校園一卡通集成,一卡通即是借書證,圖書管理系統(tǒng)讀者信息是從一卡通系統(tǒng)中獲取,畢業(yè)生在上傳時(shí)通過輸入身份證進(jìn)行認(rèn)證,辦理離校時(shí)需要更改圖書館管理系統(tǒng)中相關(guān)數(shù)據(jù)</p><p> 通過對(duì)用戶需求的分析,將系統(tǒng)功能劃分為五個(gè)模塊:上傳管
101、理,審核管理,離校管理,論文發(fā)布,后臺(tái)管理。系統(tǒng)功能模塊劃分見圖。系統(tǒng)功能模塊劃分見圖3.2。</p><p> 圖 3.2系統(tǒng)的總體模塊圖</p><p> 3.2系統(tǒng)的模塊功能描述</p><p><b> 3.2.1上傳管理</b></p><p> 模塊功能描述:學(xué)生通過唯一識(shí)別碼身份證號(hào)進(jìn)入論文上傳頁
102、面,系統(tǒng)自動(dòng)從圖書管理信息系中獲取學(xué)生姓名等相關(guān)信息、學(xué)生完成論文相關(guān)信息(標(biāo)題、導(dǎo)師、載要等)、上傳論文電子版,提交。</p><p> 3.2.2審核管理模塊</p><p> 模塊功能:圖書館工作人員,審核學(xué)生提交的相關(guān)信息,對(duì)比紙質(zhì)版論文與電子版論文是否如一;添加論文授權(quán)書相關(guān)信息;添加紙質(zhì)版論文相關(guān)信息。</p><p> 3.2.3論文發(fā)布模塊&l
103、t;/p><p> 模塊功能描述:審核通的論文,可WEB檢索與全文下載。</p><p><b> 3.2.4離校管理</b></p><p> 模塊功能:圖書館工作人員,讀取借書系統(tǒng)中相關(guān)信息,如沒有借書與欠款,辦理高校手續(xù),注銷借書卡。</p><p> 3.2.5 后臺(tái)管理</p><p&g
104、t; 模塊功能:用戶管理、用戶權(quán)限管理。管理系統(tǒng)用戶,分配用戶權(quán)限(角色)</p><p><b> 3.3系統(tǒng)建模</b></p><p> 在前面分析的基礎(chǔ)上,創(chuàng)建用例圖,對(duì)系統(tǒng)的部分模塊進(jìn)行活動(dòng)圖(Activity Diagram),序列圖(Sequence Diagram)的建模,進(jìn)一步分析建筑合同管理信息系統(tǒng)。對(duì)們一步理解確定系統(tǒng)的需求很有幫助?;顒?dòng)圖
105、既可以用來描述操作(對(duì)象的方法)的行為,也可以描述對(duì)象內(nèi)部的工作過程?;顒?dòng)圖依據(jù)對(duì)象狀態(tài)的變化來捕捉動(dòng)作與動(dòng)作的結(jié)果。序列圖用來描述對(duì)象之間動(dòng)態(tài)的交互關(guān)系,著重體現(xiàn)對(duì)象間消息傳遞的時(shí)間順序。</p><p> 圖4.10 簽定合同用例圖</p><p> 圖 4.13 后臺(tái)管理活動(dòng)圖</p><p> 4 論文管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p>&l
106、t;p><b> 4.1 數(shù)據(jù)庫設(shè)計(jì)</b></p><p> 對(duì)于管理信息系統(tǒng)來講,數(shù)據(jù)庫是所有功能的核心。數(shù)據(jù)庫的設(shè)計(jì)是數(shù)據(jù)生存周期中一個(gè)重要的階段,其質(zhì)量對(duì)數(shù)據(jù)庫系統(tǒng)影響頗大,因此數(shù)據(jù)庫的設(shè)計(jì)是管理信息系統(tǒng)開發(fā)中一個(gè)至關(guān)重要的環(huán)節(jié)。</p><p> E-R模型不是面向?qū)崿F(xiàn),而是面向現(xiàn)實(shí)世界的。設(shè)計(jì)這種模型的出發(fā)點(diǎn)是有效的和自然的模擬現(xiàn)實(shí)世界。根據(jù)需
107、求分析,畫出系統(tǒng)E-R模型。</p><p> 在數(shù)據(jù)庫的設(shè)計(jì)過程中,應(yīng)該遵循以下四個(gè)原則:真實(shí)性、冗余性、簡(jiǎn)單性、選擇合適的數(shù)據(jù)類型。</p><p> 數(shù)據(jù)的標(biāo)準(zhǔn)化有助于消除數(shù)據(jù)庫中的數(shù)據(jù)冗余。標(biāo)準(zhǔn)有很多種形式,ThirdNormal Form(3NF)通常被認(rèn)為在性能,擴(kuò)展性和數(shù)據(jù)完整性方面達(dá)到了最好的平衡。本系統(tǒng)采用SQL Server 2008,在設(shè)計(jì)數(shù)據(jù)表時(shí)遵守3NF原則。
108、</p><p> 授權(quán)管理所用表的關(guān)系圖:</p><p> 圖 4.1授權(quán)管理所用表關(guān)系圖</p><p> 為提高系統(tǒng)訪問數(shù)據(jù)庫及獲取數(shù)據(jù)的速度,普遍在數(shù)據(jù)庫中使用存儲(chǔ)過程。存儲(chǔ)過程的使用,對(duì)提高系統(tǒng)性能有很大的幫助。存儲(chǔ)過程是實(shí)現(xiàn)三層服務(wù)體系的關(guān)鍵技術(shù)之一,對(duì)系統(tǒng)以后的維護(hù)也具有極大的便利性。</p><p> 4.2 系統(tǒng)設(shè)
109、計(jì)與實(shí)現(xiàn)</p><p> 本系統(tǒng)使用Microsoft Visual Studio 2010作用開發(fā)工具,利用asp.net技術(shù)和C#語言完成系統(tǒng)實(shí)現(xiàn)。</p><p> 4.2.1 讀者查詢下載</p><p><b> 界面如圖:</b></p><p> 圖 4.2 論文查詢下載頁面</p>
110、<p> 此頁面為畢業(yè)論文數(shù)據(jù)庫系統(tǒng)的默認(rèn)頁面,用戶在此可查詢下載已上傳的畢業(yè)論文。在文本框輸入內(nèi)容,點(diǎn)擊搜索按鈕,系統(tǒng)在下面的表中顯示查詢內(nèi)容;點(diǎn)擊“全文下載”欄中的鏈接,可下載論文文件,如圖:</p><p> 點(diǎn)擊“查看詳情”按鈕,可顯示該論文詳細(xì)信息,如圖</p><p><b> 核心代碼如下:</b></p><p&g
111、t; Default.aspx.cs</p><p> using System;</p><p> using System.Collections.Generic;</p><p> using System.Linq;</p><p> using System.Web;</p><p> using
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)----基于.net畢業(yè)論文管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 支持遠(yuǎn)程管理的圖像數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)—業(yè)務(wù)層設(shè)計(jì)及數(shù)據(jù)庫建模---畢業(yè)論文
- 支持遠(yuǎn)程管理的圖像數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)—業(yè)務(wù)層設(shè)計(jì)及數(shù)據(jù)庫建模---畢業(yè)論文
- 圖書銷售系統(tǒng) --數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 圖書銷售系統(tǒng) --數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 基于vb.net的個(gè)人理財(cái)——數(shù)據(jù)庫設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)
- 畢業(yè)論文管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)
- 民航售票管理系統(tǒng)──數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文設(shè)計(jì)】
- 數(shù)據(jù)庫設(shè)計(jì)畢業(yè)論文
- 互動(dòng)點(diǎn)播系統(tǒng)──界面和數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文設(shè)計(jì)】
- 數(shù)據(jù)庫轉(zhuǎn)換工具的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)論文
- 庫存分銷管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)─數(shù)據(jù)庫設(shè)計(jì)、測(cè)試【畢業(yè)論文設(shè)計(jì)】
- 數(shù)據(jù)庫轉(zhuǎn)換工具的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)論文
- 人才數(shù)據(jù)庫及網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 支持遠(yuǎn)程管理的圖像數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)——總體架構(gòu)及表示層設(shè)計(jì)---畢業(yè)論文
- 病歷管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)──數(shù)據(jù)庫配置、訪問、備份,數(shù)據(jù)庫邏輯設(shè)計(jì)【畢業(yè)論文設(shè)計(jì)】
- 音樂數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于數(shù)據(jù)庫復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文
- 病歷管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)──數(shù)據(jù)庫配置、訪問、備份,數(shù)據(jù)庫邏輯設(shè)計(jì)【畢業(yè)論文設(shè)計(jì)】
評(píng)論
0/150
提交評(píng)論