下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、3)吉林省教育科學(xué)“十五” 規(guī)劃課題(項目編號:b415134 )。范振鈞 講師,碩士,主要研究方向:網(wǎng)絡(luò)與數(shù)據(jù)庫。計算機科學(xué)2007vol134 14基于asp. net的三層結(jié)構(gòu)實現(xiàn)方法研究3 )范振鈞(通化師范學(xué)院計算機科學(xué)系 吉林通化134002)摘 要 本文論述了三層結(jié)構(gòu)基本原理及其發(fā)展歷程、asp. net的特性以及asp. net系統(tǒng)組成結(jié)構(gòu),給出了. net平臺上基于組件方式的三層結(jié)構(gòu)的實現(xiàn)方法,并通過一個在線考試系統(tǒng)登錄模塊的實現(xiàn),講述了該方法在實際的軟件開發(fā)中的實現(xiàn)過程。關(guān)鍵詞 b/ s,asp. net ,組件,c #implementationmethod of asp
2、. net2basedthe three layersfanzhen2jun( depart ment of computerscience, tonghua normaluniversity, jilintonghua 134002)abstractthe basic principleand developmentof threelayers , the characteristicand structureof asp netare dis2cussed.at the same time , the implementationmethod of three layers based o
3、n componentis emphasized by the exampleof loginmoduleusing c # language.keywordsb/ s , asp. net , component, c #1 傳統(tǒng)兩層結(jié)構(gòu)在過去的應(yīng)用系統(tǒng)開發(fā)過程中,client/server體系結(jié)構(gòu)得到了廣泛的應(yīng)用,其特點是:應(yīng)用程序邏輯通常分布在客戶和服務(wù)器兩端,客戶端發(fā)出數(shù)據(jù)資源訪問請求,服務(wù)器端將結(jié)果返回客戶端。但client/ server結(jié)構(gòu)存在很多體系結(jié)構(gòu)上的問題,比如:當(dāng)客戶端數(shù)目激增時,服務(wù)器端的性能會因為負載過重而大大衰減;一旦應(yīng)用的需求發(fā)生變化,客戶端和服務(wù)器端的應(yīng)用程序
4、都需要進行修改,給應(yīng)用維護和升級帶來了極大的不便;大量的數(shù)據(jù)傳輸增加了網(wǎng)絡(luò)的負載等等。因此,目前數(shù)據(jù)庫應(yīng)用程序的開發(fā)已經(jīng)從傳統(tǒng)的c/ s結(jié)構(gòu)向三層結(jié)構(gòu)轉(zhuǎn)變 。2 三層結(jié)構(gòu)介紹圖1三層結(jié)構(gòu)配置圖所謂三層體系結(jié)構(gòu),是在客戶端與數(shù)據(jù)庫之間加入了一個 “中間層”,也叫組件層 。這里所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結(jié)構(gòu),也不僅僅有b/ s應(yīng)用才是三層體系結(jié)構(gòu)。三層是指邏輯上的三層,即使這三個層放置到一臺機器上。其基本物理配置圖如圖1所示 。三層體系的應(yīng)用程序?qū)I(yè)務(wù)規(guī)則、 數(shù)據(jù)訪問 、 合法性校驗等工作放在中間層進行處理。通常情況下,客戶端不直接與數(shù)據(jù)庫進行交互,而是
5、通過com/ dcom通訊與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫進行交互。三層結(jié)構(gòu)原理如圖2所示 。圖2三層結(jié)構(gòu)原理圖3 用 asp. net 部署三層架構(gòu)3. 1asp. net簡介asp. n et是微軟公司推出的一種internet編程技術(shù),它采用效率較高的、 面向?qū)ο蟮姆椒▉韯?chuàng)建動態(tài)web應(yīng)用程序 。在原來的asp技術(shù)中,服務(wù)器端代碼和客戶端h tml混合在一起,常常導(dǎo)致頁面的代碼冗長而復(fù)雜,程序的邏輯難以理解 。asp. n et是一種獨立于瀏覽器的編程模型,可以在最新版本的ie、netscapenavigator等被廣泛使用的瀏覽器上運行 。asp. n et是一種建立在通用語言上
6、的程序構(gòu)架,是一個已編譯的、 基于. n et的環(huán)境,把基于通用語言的程序在服務(wù)器上運行。程序在服務(wù)器端首次運行時進行編譯,比asp即時解釋程序速度上要快很多。微軟公司發(fā)布了4種與. n et兼容的語言(包括visualbasic. n et、c # . net、visualc + + . net和jscript . n et )創(chuàng)作應(yīng)用程序 。3. 2asp. net特點(1)適時更新管理員不必關(guān)掉網(wǎng)絡(luò)服務(wù)器或者甚至不用停止應(yīng)用程序的運行就可以更新應(yīng)用文件。應(yīng)用程序文件永遠不會被加鎖,因此甚至在程序運行時文件就可以被覆蓋。當(dāng)文件更新?982?后,系統(tǒng)會溫和地轉(zhuǎn)換到新的版本。(2) asp.
7、net采取“code2behind” 方式編寫代碼使得代碼更易于編寫,結(jié)構(gòu)更清晰,降低了系統(tǒng)的開發(fā)與維護的復(fù)雜度和費用。(3)基于asp. n et技術(shù)的系統(tǒng)結(jié)構(gòu)模型asp. n et結(jié)構(gòu)天然就是一個三層系統(tǒng): u i層 、 業(yè)務(wù)邏輯層和數(shù)據(jù)層。asp. n et系統(tǒng)結(jié)構(gòu)如圖3所示 。圖3asp. net系統(tǒng)結(jié)構(gòu)圖其中u i層負責(zé)與用戶交互,接收用戶的輸入并將服務(wù)器端傳來的數(shù)據(jù)呈現(xiàn)給客戶。業(yè)務(wù)邏輯層負責(zé)接收瀏覽器傳來的請求并將請求傳給數(shù)據(jù)層,同時將請求處理結(jié)果發(fā)給瀏覽器 。它由web表單 、xmlweb服務(wù)和組件服務(wù)組成。其中web表單是asp. n et應(yīng)用程序的核心所在,是向客戶呈現(xiàn)數(shù)據(jù)和
8、信息的基礎(chǔ),也是響應(yīng)和處理客戶與顯示的web表單交互生成的信息和數(shù)據(jù)的基礎(chǔ)。在本文給出的方法中,我們可以使用任何頁面編輯工具如dreamwaver、f rontpage等編輯web表單 。本層不負責(zé)任何業(yè)務(wù)邏輯的處理,只是負責(zé)通過頁面控件向business2layer層傳遞參數(shù),然后根據(jù)busi2ness2layer層的處理結(jié)果所傳回來的參數(shù),改變頁面的各種顯示方式,呈現(xiàn)給用戶 。u i層的控制邏輯在. n et中是通過“code2behind” 方式以. aspx. cs文件存放的 。業(yè)務(wù)邏輯層負責(zé)所有的業(yè)務(wù)邏輯的處理,在本文中它負責(zé)接受u i層傳過來的參數(shù)。根據(jù)參數(shù),確定自己的業(yè)務(wù)規(guī)則,然
9、后為了程序設(shè)計的實用方便在邏輯層中添加了一個更低層組件sqldb ,負責(zé)與數(shù)據(jù)庫相關(guān)的存儲操作。業(yè)務(wù)邏輯層接受參數(shù) 、 確定業(yè)務(wù)規(guī)則后,直接調(diào)用sqldb組件,處理來自u i層的請求,把處理結(jié)果返回給u i層 。業(yè)務(wù)邏輯層在. net中是以類庫或web service形式表現(xiàn)的 。數(shù)據(jù)層是通過ado.n et操縱數(shù)據(jù)為事務(wù)邏輯層提供數(shù)據(jù)服務(wù),如存儲數(shù)據(jù)操作結(jié)果、 返回數(shù)據(jù)檢索結(jié)果等。在數(shù)據(jù)層中,為了改進應(yīng)用程序的性能,可以引入存儲過程。由于. net結(jié)構(gòu)本身的特點決定了在. net平臺下,實現(xiàn)基于組件的三層結(jié)構(gòu)方法變得非常簡便、 快捷 。4 實現(xiàn)方法下面以一個登錄模塊為例子,采用c #程序設(shè)計
10、語言,分別說明各層的實現(xiàn)。411 數(shù)據(jù)層的實現(xiàn)我們首 先 在sqlserver2000數(shù) 據(jù) 庫 中 建 一 個 數(shù) 據(jù) 庫lwexam ,在lwexam中建表userinfo ,表的結(jié)構(gòu)如圖4所示 。412 業(yè)務(wù)邏輯層的實現(xiàn)(1)在msvs2005中新建網(wǎng)站,網(wǎng)站名稱為login ,系統(tǒng)會出現(xiàn)名為login的解決方案 。(2)選定login ,點擊右鍵,選擇添加 2 新建項目 2 類型選為類庫,名字dbsql。這樣就新建立了一個組件dbsql ,它負責(zé)最底層sql server數(shù)據(jù)庫的存取。在該組件的類中寫入如下代碼:using system ;using system. collectio
11、ns.generic ;using system. text ;using system. data ;using system. data. sqlclient ;namespace sqldbpublic class sqldbpublic sqldatareader reader ( string xx)sqlconnectionconn = new sqlconnection (“server = rj2 ;database = lwexam ;uid = sa;pwd = jlt hfjq”) ;conn. open () ;sqlcommand comm = newsqlcomma
12、nd (“select useridfromuserinfo where userid = ”+ xx +“ ”,conn) ;sqldatareader read = comm. executereader () ;returnread;該代碼的功能是:自定義一個方法reader ,接受上一層傳過來的參數(shù)xx ,然后在sqlserver數(shù)據(jù)庫中的表userinfo中查詢名字為變量xx中的信息,并返回一個datareader ,數(shù)據(jù)集合 。從代碼中可以看出該組件主要功能是為方便數(shù)據(jù)存儲,封裝了所有關(guān)于數(shù)據(jù)庫存儲操作的底層信息,方便了上層業(yè)務(wù)邏輯的實現(xiàn)。該組件對應(yīng)圖2中的data2layer層
13、。圖4userinfo表的結(jié)構(gòu)(3)選定login ,點擊右鍵,選擇添加 2 新建項目 2 類型選為類庫,名字logic。由于該組件通過sqldb組件實現(xiàn)數(shù)據(jù)庫存取操作,因此點擊該組件 2 添加引用 2 項目 2sqldb ,然后在該組件的類中寫入如下代碼:using system ;using system. collections.generic ;using system. text ;using system. data ;using system. data. sqlclient ;namespace sqllogicpublic class sqllogicpublic sqllo
14、gic ()privatestring fanhui ;public stringxianshi ( string yy)sqldb. sqldb mm = new sqldb. sqldb () ;sqldatareader nn ;nn = mm. reader (yy) ;if (nn. read() )?092?fanhui = nn“userid”. tostring () ;elseret urn“該用戶不存在,請重新登錄”;從上述代碼可以看出,組件logic負責(zé)登錄邏輯的處理,比如判斷用戶是否合法以及合法性判斷后相應(yīng)的處理邏輯。該組件對應(yīng)圖2中的bussiness2layer ,
15、它通過向低層組件dbsql發(fā)送各種數(shù)據(jù)庫存儲要求,實現(xiàn)業(yè)務(wù)邏輯的所要求的具體的數(shù)據(jù)庫存取操作。理論上sqldb和logic兩個組件在任何機器上單獨編譯成. dll文件即可直接使用,充分實現(xiàn)了代碼分離。413 表示層的實現(xiàn)新創(chuàng)建網(wǎng)站時系統(tǒng)會有一個默認的頁面文件default. as2px。在該頁面文件中,通過放置一些textbox文本框,button按紐,lable控件實現(xiàn)登錄表單。在后臺default. aspx. cs中寫入如下代碼:protectedvoid button1click (object sender , eventargse)sqllogic. sqllogic xx = new sqllogic. sqllogic () ;label1.text = xx. xianshi (this. textbox1.text) ;從上述代碼可以看出,表示層只是調(diào)用組件logic提供的方法xianshi (stringxx) ,通過頁面控件傳遞參數(shù)。具體的邏輯處理完全由邏輯層的組件負責(zé)。理論上,表示層可以通過各種頁面編輯工具制作,邏輯層可以在任何機器上存在,二者互不干擾,表示層的修改不影響邏輯層,反之亦然 。這就充分方便了代碼的復(fù)用以及應(yīng)用程序的擴展。小結(jié) 在asp. n et中實現(xiàn)三層結(jié)構(gòu)還有很多其他的方法,本文只是通過一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年甘肅建筑安全員B證考試題庫及答案
- 2025江西省安全員考試題庫附答案
- 上腔靜脈壓迫綜合征的處理
- 《汽車出口調(diào)查》課件
- 單位人力資源管理制度集錦合集十篇
- 課題申報書:偵查中的數(shù)據(jù)畫像研究
- 2024年培訓(xùn)學(xué)校工作總結(jié)(34篇)
- 2025關(guān)于合同解除的條件工程
- 2025關(guān)于出租車駕駛員勞動合同范本
- 平滑劑560行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 剝皮芝煤礦消防安全自檢方案及自查報告
- GB/T 22740-2008地理標(biāo)志產(chǎn)品靈寶蘋果
- 《人力資源情緒管理問題研究開題報告(含提綱)》
- 哮喘吸入裝置的正確使用方法課件
- 2023年成都東部集團有限公司招聘筆試題庫及答案解析
- 角點網(wǎng)格一.角點網(wǎng)格定義
- 自動控制原理全套課件
- 視頻監(jiān)控室值班記錄表
- 歌曲《梁祝》簡譜完整版
- 小學(xué)語文教研組期末考試質(zhì)量分析
- 校園安全存在問題及對策
評論
0/150
提交評論