




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 診所電子設(shè)備管理制度
- 試劑耗材分級(jí)管理制度
- 財(cái)務(wù)結(jié)賬流程管理制度
- 財(cái)富管理中心管理制度
- 貨架倉(cāng)庫(kù)安全管理制度
- 貨物驗(yàn)收流程管理制度
- 貨運(yùn)簽收單據(jù)管理制度
- 應(yīng)急通道協(xié)議書范本
- 服裝代工合同協(xié)議書范本
- 勞務(wù)擔(dān)保協(xié)議書范本
- DB43T-湖南省改性?;⒅閺?fù)合材料外墻修繕系統(tǒng)應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 產(chǎn)品質(zhì)量檢驗(yàn)方法
- 直播帶貨主播培訓(xùn)課程
- 放射治療擺位技術(shù)
- 2025年上半年云南普洱市事業(yè)單位招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年“安全生產(chǎn)月”總結(jié)(4篇)
- 貴州美食課件
- 人教版三年級(jí)下冊(cè)口算題大全1000道帶答案
- 醫(yī)療類結(jié)構(gòu)化面試試題
- 2021-2022學(xué)年浙江省杭州市臨平區(qū)小學(xué)二年級(jí)下冊(cè)語(yǔ)文期末試題及答案
- 江蘇省蘇州市2022-2023學(xué)年高一下學(xué)期期末迎考數(shù)學(xué)試卷(原卷)
評(píng)論
0/150
提交評(píng)論