




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.NET的三層架構(gòu)三層體系結(jié)構(gòu),是在客戶端與數(shù)據(jù)庫之間加入了一個中間層。這里所說的三層體系,不是指物理上的三層,是指邏輯上的三層,是一種體系結(jié)構(gòu),它是源自并優(yōu)化了經(jīng)典體系模式MVC模式的產(chǎn)物。通過本章的學(xué)習(xí)深入了解什么是三層結(jié)構(gòu),如何用三層結(jié)構(gòu)開發(fā)應(yīng)用系統(tǒng),以及用三層結(jié)構(gòu)開發(fā)軟件系統(tǒng)具有哪些優(yōu)勢。主要內(nèi)容有:什么是三層結(jié)構(gòu)?為什么要使用三層結(jié)構(gòu)?如何應(yīng)用三層結(jié)構(gòu)開發(fā)軟件系統(tǒng)?三層結(jié)構(gòu)的優(yōu)勢與劣勢?三層結(jié)構(gòu)概述典型的三層結(jié)構(gòu)包括界面層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層,使用三層結(jié)構(gòu)創(chuàng)建的應(yīng)用系統(tǒng),由于層與層之間的低耦合、層內(nèi)部的高內(nèi)聚,使得解決方案的維護和增強變得更容易。為什么需要三層結(jié)構(gòu)如果您經(jīng)營一個飯
2、店,你會請三種員工,一種是服務(wù)員,負(fù)責(zé)給客戶提供服務(wù),另一種是廚師,負(fù)責(zé)烹飪美食,還有一種是采購員,負(fù)責(zé)為廚師提供做菜的原料。飯店將整個業(yè)務(wù)分解為三部分來完成,每一部分各負(fù)其責(zé),服務(wù)員只管接待顧客、向廚師傳遞顧客的需求;廚師只管烹炒不同口味、不同特色的美食;后勤工作人員只管提供美食原料;他們?nèi)叻止ず献鞴餐瑸轭櫩吞峁M意的服務(wù)。在飯店為顧客提供服務(wù)期間,服務(wù)員、廚師、后勤工作人員,三者中任何一者的人員發(fā)生變化時,都不會影響其他兩者的正常工作,只對變化者進行重新調(diào)整即可正常營業(yè)。有了良好而明確的分工后,管理就比較容易。如果客戶批評飯店服務(wù)態(tài)度不好,肯定是服務(wù)員出問題了,不可能是廚師或采購,如果是
3、菜的味道不好,那就是廚師的問題,與服務(wù)員無關(guān)。用三層結(jié)構(gòu)開發(fā)的軟件系統(tǒng)與此類似,表示層就像飯店的服務(wù)員,直接和客戶打交道,提供軟件系統(tǒng)與用戶交互的接口;業(yè)務(wù)邏輯層是表示層和數(shù)據(jù)訪問層之間的橋梁,負(fù)責(zé)數(shù)據(jù)處理和傳遞,就像飯店的廚師,負(fù)責(zé)把采購回來的食品加工完成,傳遞給服務(wù)員。數(shù)據(jù)訪問層只負(fù)責(zé)數(shù)據(jù)的存取工作,類似于飯店的采購,系統(tǒng)里有什么數(shù)據(jù)取決于數(shù)據(jù)訪問層的工作,飯店能夠提供什么樣的飯菜首先取決于采購購買的材料。什么是三層結(jié)構(gòu)通常所說的三層結(jié)構(gòu)包括表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。采用分層設(shè)計的軟件可維護性、可重用性、可伸縮性都比較好。三層結(jié)構(gòu)的示意圖如圖15.1所示。表示層:主要是指與用戶交互的
4、界面,用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),將用戶輸入的數(shù)據(jù)傳遞給業(yè)務(wù)邏輯層,一般不包含任何實際的業(yè)務(wù)處理,當(dāng)業(yè)務(wù)邏輯層的數(shù)據(jù)發(fā)生變化時,表示層就會顯示出更新的結(jié)果。表示層提供應(yīng)用程序的用戶界面,通常為Windows應(yīng)用程序或Web應(yīng)用程序。業(yè)務(wù)邏輯層:是表示層和數(shù)據(jù)訪問層之間的橋梁,它代表應(yīng)用程序的核心功能,負(fù)責(zé)處理數(shù)據(jù)層的數(shù)據(jù),實現(xiàn)業(yè)務(wù)邏輯。業(yè)務(wù)邏輯具體包含驗證、計算、業(yè)務(wù)規(guī)則等等。業(yè)務(wù)邏輯層通常為類庫。數(shù)據(jù)訪問層:主要實現(xiàn)對數(shù)據(jù)的保存和讀取操作,將存儲在數(shù)據(jù)庫中的數(shù)據(jù)提交給業(yè)務(wù)層,同時將業(yè)務(wù)層處理的數(shù)據(jù)保存到數(shù)據(jù)庫中。數(shù)據(jù)訪問層可以訪問關(guān)系數(shù)據(jù)庫、文本文件或者XML文檔,通常為類庫。什么是三
5、層結(jié)構(gòu)通常所說的三層結(jié)構(gòu)包括表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。采用分層設(shè)計的軟件可維護性、可重用性、可伸縮性都比較好。三層結(jié)構(gòu)的示意圖如圖15.1所示。表示層:主要是指與用戶交互的界面,用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),將用戶輸入的數(shù)據(jù)傳遞給業(yè)務(wù)邏輯層,一般不包含任何實際的業(yè)務(wù)處理,當(dāng)業(yè)務(wù)邏輯層的數(shù)據(jù)發(fā)生變化時,表示層就會顯示出更新的結(jié)果。表示層提供應(yīng)用程序的用戶界面,通常為Windows應(yīng)用程序或Web應(yīng)用程序。業(yè)務(wù)邏輯層:是表示層和數(shù)據(jù)訪問層之間的橋梁,它代表應(yīng)用程序的核心功能,負(fù)責(zé)處理數(shù)據(jù)層的數(shù)據(jù),實現(xiàn)業(yè)務(wù)邏輯。業(yè)務(wù)邏輯層通常為類庫。數(shù)據(jù)訪問層:主要實現(xiàn)對數(shù)據(jù)的保存和讀取操作,將存儲在數(shù)據(jù)
6、庫中的數(shù)據(jù)提交給業(yè)務(wù)層,同時將業(yè)務(wù)層處理的數(shù)據(jù)保存到數(shù)據(jù)庫中。數(shù)據(jù)訪問層可以訪問關(guān)系數(shù)據(jù)庫、文本文件或者XML文檔,通常為類庫。三層結(jié)構(gòu)的優(yōu)勢與劣勢優(yōu)勢:結(jié)構(gòu)清晰、耦合度低便于系統(tǒng)的維護與擴展 利于開發(fā)任務(wù)同步進行劣勢:降低了一定的性能創(chuàng)建三層結(jié)構(gòu)前面我們對三層結(jié)構(gòu)有一個簡單的認(rèn)知,明白了三層結(jié)構(gòu)包括的內(nèi)容以及各層之間的關(guān)系,下面在VS2008中創(chuàng)建一個三層架構(gòu)的項目。創(chuàng)建表示層首先打開VS2008,新建項目,在彈出的“新建項目”對話框項目類型中選擇“VisualC#”選項,模板選擇Windows應(yīng)用程序,填寫項目名稱“SchoolManager”,并選中“創(chuàng)建解決方案的目錄”前的復(fù)選框,如圖
7、15.2所示。創(chuàng)建業(yè)務(wù)邏輯層在創(chuàng)建好的解決方案名稱上右擊,選擇“添加”“新建項目”選項,打開“添加新項目”對話框,在模板中選擇“類庫”選項,填寫名稱“BLL”,如圖15.3所示。創(chuàng)建數(shù)據(jù)訪問層創(chuàng)建數(shù)據(jù)訪問層和創(chuàng)建業(yè)務(wù)邏輯層的方法相同,只是在名稱中輸入“DAL”,如圖15.4所示。添加各層之間的依賴關(guān)系三層的框架已經(jīng)搭建成功,但是每層之間是互相獨立的,.NET應(yīng)用程序中需要對層之間添加引用,創(chuàng)建依賴關(guān)系。1實現(xiàn)表示層對業(yè)務(wù)邏輯層的引用打開“解決方案資源管理器”面板,右擊表示層的“引用”圖標(biāo),選擇“添加引用”選項,如圖15.5所示,打開“添加引用”對話框,如圖15.6所示。在“添加引用”對話框中選
8、擇“項目”選項卡,選中名稱“BLL”,單擊“確定”按鈕即可。此時在表示層的引用目錄中可以看到剛才添加的“BLL”,如圖15.7所示。2實現(xiàn)業(yè)務(wù)邏輯層對數(shù)據(jù)訪問層的引用操作方式和界面層引用業(yè)務(wù)邏輯層相同,不再詳述。三層結(jié)構(gòu)應(yīng)用示例用戶登錄實現(xiàn)這一節(jié)使用三層架構(gòu)實現(xiàn)一個簡單的用戶登錄功能。建立數(shù)據(jù)庫首先建立數(shù)據(jù)庫,在VS2008中打開“服務(wù)器資源管理器”面板,創(chuàng)建數(shù)據(jù)庫,名稱為“StudentInfo”,創(chuàng)建完成后在其中添加表,創(chuàng)建表“Login”,存儲用戶登錄的信息,數(shù)據(jù)表的結(jié)構(gòu)見表15.1。創(chuàng)建三層架構(gòu)的項目運用前面學(xué)過的知識,創(chuàng)建一個三層架構(gòu)的項目,項目名稱為“SchoolManager”,
9、創(chuàng)建業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層,添加層之間的依賴關(guān)系。創(chuàng)建好后的解決方案如圖15.8所示。添加實體層三層架構(gòu)搭建好之后,有一個問題需要解決,使用什么在三層之間傳遞數(shù)據(jù)呢?目前通用的解決方法有兩種:一種是使用實體類在三層之間傳遞數(shù)據(jù),一種是使用DataSet在三層之間傳遞數(shù)據(jù)。使用實體類的主要好處在于實體類是一個比較易于控制的對象,它具有面向?qū)ο蟮幕咎卣?,可以自由的向?qū)嶓w類添加行為等。實體類是業(yè)務(wù)邏輯對象的基礎(chǔ),用面向?qū)ο蟮乃枷胂岁P(guān)系數(shù)據(jù)與對象之間的差異。實體類通常是一個存儲應(yīng)用系統(tǒng)信息的數(shù)據(jù)表,將數(shù)據(jù)表中的字段定義成屬性,將這些屬性封裝成一個“類”,就是實體類。本例中創(chuàng)建一個實體類Login
10、.cs,用來反映數(shù)據(jù)表Login中的記錄。添加實體層的方式和創(chuàng)建業(yè)務(wù)邏輯層的方式相同,在解決方案中添加“Model”項目即可。添加完成后的解決方案如圖15.9所示。編寫實體類Login.cs實體類Login.cs和數(shù)據(jù)庫中Login表相對應(yīng),將那個數(shù)據(jù)表中的字段定義為屬性。登錄界面設(shè)計在界面層“SchoolManager”上右擊,選擇“添加”“添加Windows窗體”命令,添加窗體文件“LoginForm.cs”。界面設(shè)計如圖15.10所示。數(shù)據(jù)訪問層代碼編寫在數(shù)據(jù)訪問層添加類“LoginService.cs”,編寫訪問數(shù)據(jù)庫的代碼。為了訪問的簡化,將數(shù)據(jù)訪問層中的類都設(shè)為靜態(tài)類,其中的方法和變量都是靜態(tài)的。在數(shù)據(jù)訪問層的類中編寫根據(jù)用戶名獲得用戶的方法。業(yè)務(wù)邏輯層用戶登錄代碼編寫在業(yè)務(wù)邏輯層中添加類“LoginManager.cs”,編寫代碼實現(xiàn)用戶登錄的業(yè)務(wù)邏輯。業(yè)務(wù)邏輯層負(fù)責(zé)把數(shù)據(jù)層獲得的數(shù)據(jù)傳遞到界面層,在傳遞過程中,根據(jù)業(yè)務(wù)需求編寫規(guī)則,返回請求的數(shù)據(jù)。本示例比較簡單,根據(jù)用戶ID能夠查詢到用戶信息就返回true,否則返回false。示例代碼如代碼15-3所示。用戶登錄
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 整車制造綠色環(huán)保技術(shù)應(yīng)用考核試卷
- 木材采伐作業(yè)成本控制考核試卷
- 衛(wèi)生材料的社會影響與企業(yè)責(zé)任考核試卷
- 在建工地安全課件模板
- 工廠院內(nèi)改造合同范本
- 公司聘用合同范本6
- 土地小院出租合同范本
- 團隊合作合同范本
- 鋁廠服裝租借合同范本
- 小學(xué)生注意力課件
- 2025年武漢長江委水文局招考(57人)高頻重點模擬試卷提升(共500題附帶答案詳解)
- 四川省成都市2024年七年級《英語》上冊月考試題與參考答案
- 2025(人教版)數(shù)學(xué)一年級下冊全冊教學(xué)案
- 蘇科版 八年級物理下冊 第六章 綜合測試卷(2025年春)
- 2025年中學(xué)生心理健康教育心得體會例文(5篇)
- 小學(xué)生學(xué)會公平與公正的行為主題班會
- 2025年湖南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 江蘇省南通市2025屆高三第一次調(diào)研測試數(shù)學(xué)試題(南通一模)(含解析)
- 《大學(xué)物理矢量》課件
- 梅大高速塌方災(zāi)害調(diào)查評估報告及安全警示學(xué)習(xí)教育
- 福建省部分地市2025屆高中畢業(yè)班第一次質(zhì)量檢測 生物試卷(含答案)
評論
0/150
提交評論