深入淺出學(xué)習(xí)C#三層架構(gòu)_第1頁(yè)
深入淺出學(xué)習(xí)C#三層架構(gòu)_第2頁(yè)
深入淺出學(xué)習(xí)C#三層架構(gòu)_第3頁(yè)
深入淺出學(xué)習(xí)C#三層架構(gòu)_第4頁(yè)
深入淺出學(xué)習(xí)C#三層架構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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)介

.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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論