第1章 企業(yè)級(jí)開(kāi)發(fā)中搭建三層架構(gòu)(理論)_第1頁(yè)
第1章 企業(yè)級(jí)開(kāi)發(fā)中搭建三層架構(gòu)(理論)_第2頁(yè)
第1章 企業(yè)級(jí)開(kāi)發(fā)中搭建三層架構(gòu)(理論)_第3頁(yè)
第1章 企業(yè)級(jí)開(kāi)發(fā)中搭建三層架構(gòu)(理論)_第4頁(yè)
第1章 企業(yè)級(jí)開(kāi)發(fā)中搭建三層架構(gòu)(理論)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、HCCE 2010HCCE 2010課程體系介紹課程體系介紹第一章第一章 企業(yè)級(jí)開(kāi)發(fā)中搭建三層架構(gòu)企業(yè)級(jí)開(kāi)發(fā)中搭建三層架構(gòu)課程地位課程地位課程目標(biāo)課程目標(biāo)u學(xué)習(xí)內(nèi)容n三層架構(gòu)的原理n使用實(shí)體類對(duì)象在三層架構(gòu)之間傳遞數(shù)據(jù)n實(shí)現(xiàn)高效的數(shù)據(jù)訪問(wèn)層n特性、序列化和反序列化、反射nWindows服務(wù)n異常處理和單元測(cè)試u學(xué)習(xí)目標(biāo)n能夠搭建三層架構(gòu)的系統(tǒng)n能夠創(chuàng)建高效的數(shù)據(jù)訪問(wèn)層n能夠使用實(shí)體類對(duì)象在三層架構(gòu)之間傳遞數(shù)據(jù)n能夠使用系統(tǒng)提供的特性,并自定義特性n能夠使用序列化保存對(duì)象狀態(tài),使用反序列化構(gòu)建對(duì)象n能夠使用反射動(dòng)態(tài)調(diào)用方法n能夠創(chuàng)建和監(jiān)視Windows服務(wù)n能夠使用VSTS工具進(jìn)行單元測(cè)試u實(shí)戰(zhàn)

2、項(xiàng)目n綜合項(xiàng)目:固定資產(chǎn)管理系統(tǒng)本章內(nèi)容本章內(nèi)容u理解三層架構(gòu)的優(yōu)點(diǎn)u三層架構(gòu)中各層之間的邏輯關(guān)系和各自功能u使用三層架構(gòu)搭建項(xiàng)目u使用DataSet作為業(yè)務(wù)實(shí)體本章目標(biāo)本章目標(biāo)u能夠使用三層架構(gòu)搭建項(xiàng)目框架u能夠使用DataSet在三層間傳遞數(shù)據(jù)1.1.三層架構(gòu)概述三層架構(gòu)概述u現(xiàn)實(shí)生活中的肉類食品加工廠的場(chǎng)景這樣做有什么好處呢?1.1 為什么需要三層架構(gòu)?為什么需要三層架構(gòu)?為什么需要三層架構(gòu)?u顧客到商場(chǎng)購(gòu)買肉食品u商場(chǎng)負(fù)責(zé)接待購(gòu)買肉食品的顧客u商場(chǎng)從食品加工工廠批量購(gòu)入食品u食品加工廠為商場(chǎng)提供肉食品u食品加工廠從屠宰場(chǎng)獲取原材料u兔子在場(chǎng)負(fù)責(zé)提供原材料給食品加工廠 食品加工企業(yè)將整個(gè)

3、企業(yè)業(yè)務(wù)分為三部分來(lái)實(shí)現(xiàn),這樣做的好處是:其中一個(gè)環(huán)節(jié)發(fā)生變化,不會(huì)影響到整個(gè)企業(yè)的業(yè)務(wù),只需要其他環(huán)節(jié)略微變化即可為什么需要三層架構(gòu)?為什么需要三層架構(gòu)?u沒(méi)有使用三層架構(gòu)時(shí)的用戶登錄:private void btnLogin_Click(object sender, EventArgs e) if (InputValidate()/輸入驗(yàn)證通過(guò)輸入驗(yàn)證通過(guò) string message = ; if (UserValidate(txtUsername.Text.Trim(), txtPassword.Text.Trim(),ref message) /登錄成功登錄成功 else /登錄失

4、敗登錄失敗 MessageBox.Show(message); 為什么需要三層架構(gòu)?為什么需要三層架構(gòu)?u用戶要求添加身份認(rèn)證:業(yè)務(wù)邏輯改變以后,會(huì)帶來(lái)什么問(wèn)題?private void btnLogin_Click(object sender, EventArgs e) if (InputValidate()/輸入驗(yàn)證通過(guò)輸入驗(yàn)證通過(guò) string message = ; /方法調(diào)用多傳遞了一個(gè)參數(shù)方法調(diào)用多傳遞了一個(gè)參數(shù) if (UserValidate(txtUsername.Text.Trim(), txtPassword.Text.Trim(),cboRole.Text.Trim()

5、, ref message) /登錄成功登錄成功 else MessageBox.Show(message); 1.2 1.2 三層架構(gòu)是什么?三層架構(gòu)是什么? 三層架構(gòu)是基于模塊化程序設(shè)計(jì)的思想,為實(shí)現(xiàn)分解應(yīng)用程序的需求,而逐漸形成的一種標(biāo)準(zhǔn)模式的模塊劃分方法。三層架構(gòu)包含:表現(xiàn)層(UI):UserInterface數(shù)據(jù)訪問(wèn)層(DAL):Data Access Layer業(yè)務(wù)邏輯層(BLL):Business Logic Layer三層架構(gòu)是什么?三層架構(gòu)是什么??jī)?yōu)點(diǎn)一:不必為了業(yè)務(wù)邏輯上的微小變化而導(dǎo)致整個(gè)程序的修改,只需要修改商業(yè)邏輯層中的一個(gè)函數(shù)或一個(gè)過(guò)程優(yōu)點(diǎn)二:增強(qiáng)了代碼的可重用性優(yōu)

6、點(diǎn)三:便于不同層次的開(kāi)發(fā)人員之間的合作u三層架構(gòu)的優(yōu)點(diǎn)三層架構(gòu)的優(yōu)點(diǎn): : 三層架構(gòu)是什么?三層架構(gòu)是什么?u表現(xiàn)層(UI):主要實(shí)現(xiàn)和用戶的交互u業(yè)務(wù)邏輯層(BLL) :用于對(duì)上下交互的數(shù)據(jù)進(jìn)行邏輯處理u數(shù)據(jù)訪問(wèn)層 (DAL) :用于實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互和訪問(wèn)將業(yè)務(wù)實(shí)體與業(yè)務(wù)方法分離,作為一個(gè)單獨(dú)的層將一些會(huì)重用的方法封裝在獨(dú)立的類里,使代碼重用性更強(qiáng)三層架構(gòu)各層的功能:三層架構(gòu)各層的功能:1.3 1.3 三層架構(gòu)各層之間的關(guān)系三層架構(gòu)各層之間的關(guān)系表示層業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)層u各層之間存在依賴關(guān)系:表現(xiàn)層依賴業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層依賴于數(shù)據(jù)訪問(wèn)層三層架構(gòu)各層之間的關(guān)系三層架構(gòu)各層之間的關(guān)系表現(xiàn)

7、層將用戶的請(qǐng)求發(fā)送給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層通過(guò)數(shù)據(jù)訪問(wèn)層來(lái)處理數(shù)據(jù),然后接受到數(shù)據(jù)訪問(wèn)層處理的數(shù)據(jù),再通過(guò)一定的業(yè)務(wù)規(guī)則處理返回給用戶u三層架構(gòu)的數(shù)據(jù)流向三層架構(gòu)的數(shù)據(jù)流向小結(jié)小結(jié)1 1回顧前面的食品加工廠案例,說(shuō)出食品加工廠在三層架構(gòu)里位于哪一層?三層架構(gòu)一定是三個(gè)項(xiàng)目嗎?2.2.如何搭建三層架構(gòu)?如何搭建三層架構(gòu)?創(chuàng)建表現(xiàn)層創(chuàng)建數(shù)據(jù)操作層 創(chuàng)建業(yè)務(wù)邏輯層創(chuàng)建業(yè)務(wù)實(shí)體建立依賴關(guān)系u搭建三層架構(gòu)有五個(gè)步驟2.1 2.1 創(chuàng)建表現(xiàn)層創(chuàng)建表現(xiàn)層 u先創(chuàng)建一個(gè)空白解決方案創(chuàng)建表現(xiàn)層創(chuàng)建表現(xiàn)層u在解決方案里添加一個(gè)WinForm程序:WinUI2.2 2.2 創(chuàng)建數(shù)據(jù)操作層創(chuàng)建數(shù)據(jù)操作層 u在解決方案

8、里添加一個(gè)C#類庫(kù)項(xiàng)目:SqlServerDAL2.3 2.3 創(chuàng)建業(yè)務(wù)邏輯層創(chuàng)建業(yè)務(wù)邏輯層 u在解決方案里添加一個(gè)C#類庫(kù)項(xiàng)目:BLL2.4 2.4 建立業(yè)務(wù)實(shí)體建立業(yè)務(wù)實(shí)體 u在解決方案里添加一個(gè)C#類庫(kù)項(xiàng)目:Model2.5 2.5 建立三層之間的依賴關(guān)系建立三層之間的依賴關(guān)系表現(xiàn)層(UI)依賴于業(yè)務(wù)邏輯層(BLL)依賴于數(shù)據(jù)訪問(wèn)層(DAL)業(yè)務(wù)實(shí)體(Model)依賴于依賴于依賴于 建立三層之間的依賴關(guān)系建立三層之間的依賴關(guān)系u右鍵Model項(xiàng)目,點(diǎn)“生成”。生成成功以后,右鍵SqlServerDAL項(xiàng)目下的“引用”,選擇“添加引用”命令 添加引用后的效果建立三層之間的依賴關(guān)系建立三層之

9、間的依賴關(guān)系u為業(yè)務(wù)邏輯層添加對(duì)于數(shù)據(jù)訪問(wèn)層的依賴。建立三層之間的依賴關(guān)系建立三層之間的依賴關(guān)系思考:數(shù)據(jù)訪問(wèn)層主要是用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)并且得到數(shù)據(jù),那么保存數(shù)據(jù)的方式有很多種,比如保存到DataReader中,保存進(jìn)DataSet中,保存進(jìn)List中等,你要把數(shù)據(jù)保存進(jìn)哪里呢?如果界面層顯示數(shù)據(jù)用ListView控件,那么你的數(shù)據(jù)訪問(wèn)層用什么來(lái)保存數(shù)據(jù)更方便?如果界面層顯示數(shù)據(jù)用DataGridView控件,那么你的數(shù)據(jù)訪問(wèn)層用什么來(lái)保存數(shù)據(jù)更方便?建立三層之間的依賴關(guān)系建立三層之間的依賴關(guān)系三層架構(gòu)里表現(xiàn)層可以直接引用數(shù)據(jù)操作層嗎?三層架構(gòu)里允許重復(fù)引用嗎?小結(jié)小結(jié)2 2三層架構(gòu)包含哪三層?三

10、層架構(gòu)各層之間如何依賴?搭建三層架構(gòu)的步驟是哪幾步?3.3.使用使用DataSetDataSet在三層之間傳遞數(shù)據(jù)在三層之間傳遞數(shù)據(jù)實(shí)體對(duì)象的類型DataSetEntity Class如何三層架構(gòu)里使用如何三層架構(gòu)里使用DataSetDataSet傳遞數(shù)據(jù)傳遞數(shù)據(jù) 創(chuàng)建數(shù)據(jù)訪問(wèn)層的方法,填充DataSet 創(chuàng)建業(yè)務(wù)邏輯方法獲取DataSet的方法,得到DataSet對(duì)象表現(xiàn)層里通過(guò)業(yè)務(wù)邏輯層的業(yè)務(wù)方法獲取DataSet對(duì)象,呈現(xiàn)給用戶。u如何三層架構(gòu)里使用如何三層架構(gòu)里使用DataSetDataSet傳遞數(shù)據(jù)傳遞數(shù)據(jù)3.1 3.1 創(chuàng)建數(shù)據(jù)訪問(wèn)層的方法創(chuàng)建數(shù)據(jù)訪問(wèn)層的方法public clas

11、s CustomerDAL SqlConnection connection = new SqlConnection(server=.;database=CRM;uid=sa;pwd=180705); public DataSet GetAllCustomers() DataSet dsCust = new DataSet(); SqlDataAdapter daCust = new SqlDataAdapter(select * from Customers, connection); daCust.Fill(dsCust, Customers); return dsCust; 數(shù)據(jù)訪問(wèn)層里

12、添加的數(shù)據(jù)訪問(wèn)方法,返回DataSet 配置文件使用配置文件使用u一般程序在升級(jí)時(shí)有可能會(huì)更改連接數(shù)據(jù)庫(kù)的字符串,在不修改源代碼的原則下可以使用配置文件來(lái)定義連接數(shù)據(jù)庫(kù)的字符串,具體步驟如下:n在UI層添加新建項(xiàng),在彈出的選擇框選擇應(yīng)用程序配置文件n在配置文件中,有規(guī)定好了的節(jié)點(diǎn),那么我們?cè)诠?jié)點(diǎn)中添加子節(jié)點(diǎn),在ConnectionStrings節(jié)點(diǎn)中添加,這樣如果程序升級(jí)我們只需要改變url的值即可n在DAL層添加引用.net中的System configurationn在DBHelper中導(dǎo)入命名空間System.Configuration,獲取URL的代碼為: String urlurl=

13、 =ConfigurationManager.ConnectionStrings“url的名字.ToString();.ToString();關(guān)于關(guān)于DBHelperDBHelper的設(shè)計(jì)可以讓的設(shè)計(jì)可以讓URLURL是靜態(tài)的變量,那么是靜態(tài)的變量,那么DBHelperDBHelper也是靜態(tài)的類也是靜態(tài)的類,在該類的靜態(tài)構(gòu)造方法中為靜態(tài)變量賦值,在該類的靜態(tài)構(gòu)造方法中為靜態(tài)變量賦值3.2 3.2 創(chuàng)建業(yè)務(wù)邏輯層的方法創(chuàng)建業(yè)務(wù)邏輯層的方法public class CustomerBLL/數(shù)據(jù)訪問(wèn)類的實(shí)例數(shù)據(jù)訪問(wèn)類的實(shí)例 CustomerDAL cust = new CustomerDAL();

14、/業(yè)務(wù)邏輯方法,通過(guò)調(diào)用數(shù)據(jù)訪問(wèn)層的數(shù)據(jù)訪問(wèn)方法獲取所有客戶的業(yè)務(wù)邏輯方法,通過(guò)調(diào)用數(shù)據(jù)訪問(wèn)層的數(shù)據(jù)訪問(wèn)方法獲取所有客戶的/信息信息 public DataSet GetCustomers() return cust.GetAllCustomers(); 業(yè)務(wù)邏輯層里添加的業(yè)務(wù)方法,獲取數(shù)據(jù)訪問(wèn)層里返回的DataSet,并將傳遞給表現(xiàn)層3.3 3.3 表現(xiàn)層獲取數(shù)據(jù)表現(xiàn)層獲取數(shù)據(jù)private void CustomerFrm_Load(object sender, EventArgs e)CustomerBLL cust = new CustomerBLL();/業(yè)務(wù)邏輯類的實(shí)例業(yè)務(wù)邏輯類的實(shí)例DataSet dsCust = cust.GetCustomers();/調(diào)用業(yè)務(wù)邏輯類的方法調(diào)用業(yè)務(wù)邏輯類的方法/結(jié)果在結(jié)果在DataGridView顯示顯示dgvCustomer.DataSource = dsCust.Tables0; 小結(jié)小結(jié)3 3uDataSet作為業(yè)務(wù)對(duì)象在三層里每一層之間傳遞數(shù)據(jù),所以每一層里都需要引入

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論