《三层架构应用总结.docx》由会员分享,可在线阅读,更多相关《三层架构应用总结.docx(10页珍藏版)》请在优知文库上搜索。
1、ASRNET三层架构应用总结与ASP相比ASP.NET在Web应用开发上无疑更简洁,更有效率。Web开发大部分还是围围着数据操作,建立数据库存储数据,编写代码访问和修改数据,设计界面采集和呈现数据。走过Aspmei学习入门阶段后,真正开头着手开发一个Web项目时,才发觉错综简单的数据与关联根本就不是SqlDataSource和AccessDaUiSource数据源控件能简洁解决的,而恰恰是被忽视了的一个ObjeCtDaIaSOUrCe数据源控件才是真正踏入开发门槛的关键,由此也对三层架构模式有了初步体验。一.ASP.NET三层架构介绍设计模式中的分层架构(可以参考一下J2EE中MVC模式)实现
2、了各司其职,互不干涉,所以假如一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。这样就能更好的实现开发中的分工,有利于组件的重用。所以这些年关于模式的讨论有很多成果,应用也很广泛。一个好的模式在程序开发和后期维护中作用重大。ASP.NET三层架构自底向上分为:数据访问层(DAL),业务规律层(BLL)和表示层(PL)。数据访问层(DAL):使用了一个强类型的DataSet作为数据访问层,只是单纯的对数据进行增,删,改,查询和推断存在等等较通用的数据访问方法(由SQL语句来供应),不应当有“事务”存在。业务规律层(BLL):业务规律层是在数据访问层和表示层之间进
3、行数据交换的桥梁,按业务需求调用数据访问层中的方法组合,集合了各种业务规章到一个BLL中,例如通过条件进行推断的数据操作或“事务”处理。BLL都是以类库(CIaSSLibrary)的形式来实现的。表示层(PL):表示层是为客户供应用于交互的应用服务图形界面,关心用户理解和高效地定位应用服务,呈现业务规律层中传递的数据,用ASP.NET页面来实现。二.三层架构应用实现随着ASP.NET的不断升级,可以很便利的使用ASP.NET来构建B/S三层架构的应用程序,下而以“老师业务信息管理系统”项目中的部分例子来演示如何使用ASP.NET2.0和SQLServer2005数据库来构建一个三层架构的应用程
4、序。1 .创建数据库打开SQLSerVer2005,新建个数据库TeacherDb,建立如下所示结构的两个表Personlnfo”和JoblnfoO两表以PerSonlDNUmber作为关联字段,存储18位身份证号码O表名:字段名PersonInfo类型说明基本信息表备注IDint主健,自增UserIDuniqueidentifier登录帐户IDTrueNamenvarchar(20)姓名PersonIDNumbernvarchar(18)身份证Sexnvarchar(1)性别“男”或“女”BirthDatedatetie出生日期Nationnvarchar(10)民族NativePlacen
5、varchar(50)籍贯Politynvarchar(10)政治面貌JoinPolityTimedatetie入党时间PersonImageUrlnvarchar(250)相片地址允许NULLTelephonenvarchar(50)联系电话MobiePhonenvarchar(50)手机号码Emailnvarchar(50)Email表名:JobInfo取业信息表字段名类型说明备注IDint主健,自增PersonIDNumbernvarchar(18)身份证号码Post1nvarchar(20)职务Post2nvarchar(20)职务2第二职务JoinTimedatetime参加工作时间
6、COUntryWorkedTieint农村年限MasteSubjectnvarchar(20)学科SecondSubjectnvarchar(20)兼职学科SchoolPhasenvarchar(10)学段MotherClassTimeint班主任年限SchoolIDint所在学校代码InPositionreal是否在职2 .创建数据访问层在开头创建数据访问层(DAL)之前,首先需要创建一个网站,配置好数据库链接。第一步:创建一个Web项目,配置数据库连接打开ViSUaISmdiO2005(以下简称VS2005)集成开发环境,首先创建个C#语言的ASP.NET网站,并将其命名为WebSite,
7、设置位置(LoCatiOn)列表的选项为文件系统(FileSystem),然后选这一个放置这个网站的文件夹,然后选择编程语言为C#。ViSUalSmdi。会为你生成个新的网站,同时生成个名为Default.aspx的网页,和一个App_Data文件夹。其次步:创建数据访问层,配置数据库连接接卜.来创建数据访问层,添加一个强类型的DataSet0在解决方案管理器里的项目节点上按右鼠标,选择“添加新项,在模板列单里选择数据集,将其命名为DataSetlxscL接下来会消失TabIeAdpater”配置向导的窗口,选择数据库服务器,设置好各项参数,并依据提示逐步完成。需要留意:1 .指定连接的数据库
8、字符串,并选择将连接字符串保存到Web.coZig文件中去。2 .命令类型选择“使用SQL语句”,通过“高级选项”选择“生成InSert、UPdate和DeIete语句”,通过“查询生成器生成要装载数据的Select语句:并为方法命名。选择要生成的方法_TableAdapter方法在应用程序和数据库之间加载和保存数据。要将些方法添加到TabieAdaPter?Pr蓄充DataTable(X)创建一个方法,让其使用DataTable或数据集作为参数,并执行在上一页中输入的SQL语句或SELECT存储过程。方法名):PinP返回DataTable)创建一个方法,让其返回一个新的DataTabIe并
9、用在上一页中输入的SQL语句或SELECT存储过程的结果进行埴充方法名称也):IGetPerSonS-“创建方法以将更新直接发送到数得库(GeiierateDBDirectiethods)(U)创建可进行调用以将单个行更改直接发送到数据库的Insert、Update和Delete方法. 11完成但)资料二引言:木文不是从理论的角度来研讨三层架构,而是用一个示例来介绍如何建设一个三层架构的项目,并说明项目中各个文件所处的层次与作用。写本文的目的,不是为了说明自己的这个方法有多对,别人的确定不对,而是盼望给那些初学三层架构却不知从何入手的伴侣供应一点关心。由于网上的文章,大多是留意理论的介绍,而忽
10、视了具体的实践应用,或者有示例但讲得不透彻。导致看了之后,理论上又学习了一遍,但还是不知道代码怎么写。所以想从这个方面入手写一下,让从来没做过三层架构的初学者也能照猫画虎,写出代码来。文章表述的是笔者个人对三层架构的熟悉,确定有很多不足的地方,欢迎大家指正,小弟也会依据反馈来修改这篇文章。文中的代码是伪代码,仅用来阐明思路。正文:一提三层架构,大家都知道是表现层(UI),业务规律层(BLL)和数据访问层(DAL),而且每层如何细分也都有很多的方法。但具体代码怎么写,究竟那些文件算在哪一层,却是模模糊糊的。下面用一个简洁的例子来带领大家实战三层架构的项目,这个例子只有一个功能,就是用户的简洁管理
11、。首先建立一个空臼解决方案,添加如下项目及文件1、添加ASRNETWebApplication项目,命名为UL新建WebForm类型文件Usenaspx(含User.aspx.cs)2、添加ClaSSLibrary项目,命名为BLL,新建CIaSS类型文件USerBLL.cs3、添加ClassLibrary项目,命名为DAL,新建Class类型文件USerDAL.cs。添加SQLHelper引用。(这个是微软的数据访问类,也可以不用,直接编写全部的数据访问代码。我一般用自己写的数据访问类DataAccessHelper).,4添加ClassLibrary项目,命名为Model,新建Class类
12、型文件UserModeLcs5、添加ClassLibrary项目,命名为IDAL,新建Interface类型文件IUserDAL.cs6、添加ClassLibrary项目,命名为ClassFactory信任大家已经看出来了,这个和PetShoP的示例没什么区分,而且更简洁,由于在下也是通过PetSh叩学习三层架构的。但一些伴侣对于这几个项目所处的层次,以及它们之间的关系,可能比较模糊,这里逐个说明一下:1User.aspxUser.aspx.cs这两个文件(以及文件所属的项目,下面也是如此,不再重复强调了)都属于表现层部分。Usenaspx比较好理解,由于它就是显示页面了。User.aspx.
13、cs有些人觉得不应当算,而是要划到业务规律层中去。假如不做分层的话,那么让User.aspx.cs来处理业务规律,甚至操作数据库都没什么问题,但是做分层的话,这样就不应当了。在分层结构中,User.aspx.cs仅应当处理与显示有关的内容,其它部分都不应当涉及。举例:我们实现用列表方式显示用户的功能,那么提取信息的工作是由BLL来做的,UI(本例中是User.aspx.cs)调用BLL得到UserInfo后,通过代码绑定到User.aspx的数据控件上,就实现了列表的显示。在此过程中USer.aspx.es对Ul没有起到什么作用,仅是用来传递数据,而且由于实际编码中大部分状况都是如此的实现,所
14、以使有些人觉得User.aspx.cs不应当算UL而应当并入BLL负责规律处理。连续往下看,这时提出了一个新需求,要求在每个用户的前面加一个图标,生动地表现出用户的性别,而且不满18岁的用儿童图标表示。这个需求的实现,就轮到User.aspx.es来做了,这种状况下User.aspx.cs才算有了真正的用途。2、NewBLL.cs添加如下方法:publicIListGetUsers():返回全部的用户信息列表publicUserInfoGetUser(intUserid):返回指定用户的具体信息publicboolAddUser(UserInfoUser):新增用户信息publicboolCh
15、angeUser(UserInfoUser):更新用户信息publicvoidRemoveUser(intUserid):移除用户信息此文件就属于业务规律层了,特地用来处理与业务规律有关的操作。可能有很多人觉得这一层唯一的用途,就是把表现层传过来的数据转发给数据层。这种状况的确很多,但这只能说明项目比较简洁,或者项目本身与业务的关系结合的不紧密(比如当前比较流行的MlS),所以造成业务层无事可做,只起到了一个转发的作用。但这不代表业务层可有可无,随着项目的增大,或者业务关系比较多,业务层就会体现出它的作用来了。此处最可能造成错误的,就是把数据操作代码划在了业务规律层,而把数据库作为了数据访问层。举例:有些伴侣感觉BLL层意义不大,只是将DAL的数据提上来就转发给了UI,而未作任何处理。看一下这个例子BLL层SelectUser(Userinfous