版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.z.-深入淺出學(xué)習(xí)C*三層架構(gòu)本文用一個(gè)示例來(lái)介紹如何建設(shè)一個(gè)三層架構(gòu)的項(xiàng)目,并說(shuō)明項(xiàng)目中各個(gè)文件所處的層次與作用。寫(xiě)本文的目的,不是為了說(shuō)明自己的這個(gè)方法有多對(duì),而是希望給那些初學(xué)三層架構(gòu)卻不知從何入手的朋友提供一點(diǎn)幫助。因?yàn)榫W(wǎng)上的文章,大多是注重理論的介紹,而忽略了具體的實(shí)踐應(yīng)用,或者有示例但講得不透徹。導(dǎo)致看了之后,理論上又學(xué)習(xí)了一遍,但還是不知道代碼怎么寫(xiě)。所以想從這個(gè)方面入手寫(xiě)一下,讓UIBLL據(jù)訪問(wèn)層(DAL),而且每層如何細(xì)msClassFactoryPetshop例沒(méi)什么區(qū)別,而且更簡(jiǎn)單,因?yàn)樵谙乱彩峭ㄟ^(guò)csrs這只能說(shuō)明項(xiàng)目比較簡(jiǎn)單,或者項(xiàng)目本身與業(yè)務(wù)的關(guān)系結(jié)合的不緊密(比如當(dāng)前比較流行的MIS),所以.z.-問(wèn)層。舉例:有些朋友感覺(jué)BLL層意義不大,只是將DAL的數(shù)據(jù)提上或email得到用戶詳細(xì)信息。IsE*ist(UserInfouserInfo)判斷指定的username或email是否存在。然后DAL也相應(yīng)提供方法共BLL調(diào)用SelectUser(UserInfouserInfo)IsE*ist(UserInfouserInfo)這樣BLL確實(shí)只起到了一個(gè)傳遞的作用。但如果這樣做:BLL.IsE*ist(Userinfouserinfo){UerInfouser=DAL.SelectUser(User);username)SelectUserByName(stringusername,stringpassword)SelectUserByEmail(stringemail)SelectUserByEmail(stringemail,stringpassword)可以概括為:SelectUser(userId)SelectUser(user)這里sernamepasswordemailUserId呢,這個(gè)就需要按照先后的順序了,有具體代碼決定。這里按這個(gè)順序處理首先看是否同時(shí)具eemail會(huì)員卡(number),則無(wú)需更改接口,只要在DAL的.z.-erDalSelectUsersUserDALIUserDALIDALDAL本人有這樣的構(gòu)造基本就符合三層標(biāo)準(zhǔn)了(雖然實(shí)現(xiàn)起來(lái)比較難^_^)。例如如果將項(xiàng)目從B/S改為C/S(或相反),首先,我介紹一些3層架構(gòu)的理論知識(shí)。簡(jiǎn)單說(shuō)明:什么是3層架構(gòu).3層架構(gòu)的優(yōu)點(diǎn)是 .z.-邏輯層組件和GUI組件系統(tǒng)。我們只需要更新商業(yè)邏輯組件就可以了。應(yīng)用程序開(kāi)發(fā)人員可以并行,獨(dú)立的開(kāi)發(fā)單獨(dú)的層。這個(gè)組件有3層,第一個(gè)層或者稱為GUI層用form實(shí)現(xiàn),叫做FrmGUI。第二層或者稱為商業(yè)邏輯層,叫做BOCustomer,是BussniessObjectCustomer的縮寫(xiě)。最后是第三層或者稱為數(shù)據(jù)層,叫做DACustomer,是DataAccessCustomer的縮寫(xiě)。為了方便,我把三個(gè)層編下面是用戶接口成的一段代碼,我只選取了調(diào)用商業(yè)邏輯層的一部分代碼。{y{cus=newBOCustomer();cus.cusID=t*tID.Te*t.ToString();cus.LName=t*tLName.Te*t.ToString();cus.FName=t*tFName.Te*t.ToString();-ng}catch(E*ceptionerr){MessageBo*.Show(err.Message.ToString());}}//ThisfunctiongetstheIDfromtheuserandfindsthe//customerdetailsandreturnthedetailsintheformof//adatasetviabusnissobjectlayer.Thenitloopsthrough//thecontentofthedatasetandfillsthecontrols.privatevoidcmdFind_Click(objectsender,System.EventArgse){y{StringcusID=t*tID.Te*t.ToString();BOCustomerthisCus=newBOCustomer();DataSetds=thisCus.Find(cusID);DataRowrow;row=ds.Tables[0].Rows[0];{t*tFName.Te*t=rows["CUS_F_NAME"].ToString();t*tLName.Te*t=rows["CUS_L_NAME"].ToString();t*tAddress.Te*t=rows["CUS_ADDRESS"].ToString();t*tTel.Te*t=rows["CUS_TEL"].ToString();}}catch(E*ceptionerr){MessageBo*.Show(err.Message.ToString());}}//thisfunctionusedtoupdatethecustomerdetails.privatevoidcmdUpdate_Click(objectsender,System.EventArgse){y{cus=newBOCustomer();cus.cusID=t*tID.Te*t.ToString();cus.LName=t*tLName.Te*t.ToString();-gng}catch(E*ceptionerr){MessageBo*.Show(err.Message.ToString());}}下面是商業(yè)邏輯層的所有代碼,主要包括定義customer對(duì)象的屬性。但這僅僅是個(gè)虛引用cusData=newDACustomer().而且還引用了System.Data名字空間。商業(yè)邏輯層使用DataSet返回?cái)?shù)據(jù)給GUI層。usingSystem;usingSystem.Data;namespace_3tierarchitecture{stomerpublicclassBOCustomer.z.-{privateStringfName;privateStringlName;privateStringcusId;privateStringaddress;privateStringtel;privateDACustomercusData;publicBOCustomer(){//AninstanceoftheDataaccesslayer!cusData=newDACustomer();}publicStringFName{{returnthis.fName;}{try{-this.fName=value;if(this.fName=="){thrownewE*ception("Pleaseprovidefirstname...");}}catch(E*ceptione){thrownewE*ception(e.Message.ToString());}}}publicStringLName{{returnthis.lName;}{//couldbemorecheckingshereegrevmove'charse-this.lName=value;if(this.LName=="){thrownewE*ception("Pleaseprovidename...");}}}publicStringcusID{{returnthis.cusId;}{this.cusId=value;if(this.cusID=="){thrownewE*ception("PleaseprovideID...");}}}-}6a\}{sa\}}nawOadindlaesadJvipaeppJass{{{}6a\}{-{this.tel=value;if(this.Tel=="){thrownewE*ception("PleaseprovideTel...");}}}erpublicvoidAdd(){cusData.Add(this);}publicvoidUpdate(){cusData.Update(this);}-thetierpublicDataSetFind(Stringstr){if(str==")thrownewE*ception("PleaseprovideIDtosearch");DataSetdata=null;data=cusData.Find(str);returndata;}}}ususingSystem;usingSystem.Data.OleDb;usingSystem.Data;namespace_3tierarchitecture{//////SummarydescriptionforDACustomer.-///publicclassDACustomer{privateOleDbConnectio
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030歐洲教育咨詢行業(yè)市場(chǎng)競(jìng)爭(zhēng)現(xiàn)狀分析投資價(jià)值評(píng)估規(guī)劃研究分析報(bào)告
- 2025-2030歐洲工業(yè)機(jī)器人行業(yè)市場(chǎng)發(fā)展格局及投資評(píng)估規(guī)劃報(bào)告
- 2025-2030歐洲室內(nèi)裝修行業(yè)市場(chǎng)供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2026華西第二醫(yī)院招聘超聲技師招聘10人備考題庫(kù)有完整答案詳解
- 2026中國(guó)新聞社招聘應(yīng)屆高校畢業(yè)生11人備考題庫(kù)及完整答案詳解一套
- 2026廣東中山市民眾街道村(社區(qū))招聘8人備考題庫(kù)參考答案詳解
- 2026四川樂(lè)山市峨眉山旅游股份有限公司招聘專業(yè)人才4人備考題庫(kù)及參考答案詳解
- 2026云南省執(zhí)業(yè)藥師注冊(cè)中心招聘1人備考題庫(kù)完整答案詳解
- 2025中國(guó)農(nóng)業(yè)科學(xué)院油料作物研究所南方大豆遺傳育種創(chuàng)新團(tuán)隊(duì)科研助理招聘1人備考題庫(kù)及答案詳解(考點(diǎn)梳理)
- 2026上海市姚連生中學(xué)招聘教師備考題庫(kù)及1套參考答案詳解
- 第四單元“愛(ài)國(guó)情懷”(主題閱讀)-五年級(jí)語(yǔ)文上冊(cè)閱讀理解(統(tǒng)編版)
- 海洋科技課件
- 口腔種植進(jìn)修匯報(bào)
- 黨建品牌管理辦法
- 國(guó)外退貨管理辦法
- 氧療設(shè)備的安全使用與維護(hù)
- 鄉(xiāng)鎮(zhèn)建筑垃圾管理辦法
- 瓊海市2025年公開(kāi)招聘事業(yè)單位工作人員和農(nóng)墾移交醫(yī)院工作人員筆試崗位排名及筆試合格分?jǐn)?shù)線筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 油料運(yùn)輸使用管理辦法
- DB42T 1319-2021 綠色建筑設(shè)計(jì)與工程驗(yàn)收標(biāo)準(zhǔn)
- 2025年第三屆國(guó)賽項(xiàng)目江蘇省選拔賽無(wú)人機(jī)駕駛員(植保)項(xiàng)目技術(shù)文件
評(píng)論
0/150
提交評(píng)論