深入浅出学习C#三层架构_第1页
深入浅出学习C#三层架构_第2页
深入浅出学习C#三层架构_第3页
深入浅出学习C#三层架构_第4页
深入浅出学习C#三层架构_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.z.-深入浅出学习C*三层架构本文用一个示例来介绍如何建设一个三层架构的项目,并说明项目中各个文件所处的层次与作用。写本文的目的,不是为了说明自己的这个方法有多对,而是希望给那些初学三层架构却不知从何入手的朋友提供一点帮助。因为网上的文章,大多是注重理论的介绍,而忽略了具体的实践应用,或者有示例但讲得不透彻。导致看了之后,理论上又学习了一遍,但还是不知道代码怎么写。所以想从这个方面入手写一下,让UIBLL据访问层(DAL),而且每层如何细msClassFactoryPetshop例没什么区别,而且更简单,因为在下也是通过csrs这只能说明项目比较简单,或者项目本身与业务的关系结合的不紧密(比如当前比较流行的MIS),所以.z.-问层。举例:有些朋友感觉BLL层意义不大,只是将DAL的数据提上或email得到用户详细信息。IsE*ist(UserInfouserInfo)判断指定的username或email是否存在。然后DAL也相应提供方法共BLL调用SelectUser(UserInfouserInfo)IsE*ist(UserInfouserInfo)这样BLL确实只起到了一个传递的作用。但如果这样做:BLL.IsE*ist(Userinfouserinfo){UerInfouser=DAL.SelectUser(User);username)SelectUserByName(stringusername,stringpassword)SelectUserByEmail(stringemail)SelectUserByEmail(stringemail,stringpassword)可以概括为:SelectUser(userId)SelectUser(user)这里sernamepasswordemailUserId呢,这个就需要按照先后的顺序了,有具体代码决定。这里按这个顺序处理首先看是否同时具eemail会员卡(number),则无需更改接口,只要在DAL的.z.-erDalSelectUsersUserDALIUserDALIDALDAL本人有这样的构造基本就符合三层标准了(虽然实现起来比较难^_^)。例如如果将项目从B/S改为C/S(或相反),首先,我介绍一些3层架构的理论知识。简单说明:什么是3层架构.3层架构的优点是 .z.-逻辑层组件和GUI组件系统。我们只需要更新商业逻辑组件就可以了。应用程序开发人员可以并行,独立的开发单独的层。这个组件有3层,第一个层或者称为GUI层用form实现,叫做FrmGUI。第二层或者称为商业逻辑层,叫做BOCustomer,是BussniessObjectCustomer的缩写。最后是第三层或者称为数据层,叫做DACustomer,是DataAccessCustomer的缩写。为了方便,我把三个层编下面是用户接口成的一段代码,我只选取了调用商业逻辑层的一部分代码。{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());}}下面是商业逻辑层的所有代码,主要包括定义customer对象的属性。但这仅仅是个虚引用cusData=newDACustomer().而且还引用了System.Data名字空间。商业逻辑层使用DataSet返回数据给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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论