三层架构的理解.pdf
《三层架构的理解.pdf》由会员分享,可在线阅读,更多相关《三层架构的理解.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、三层架构的理解三层架构的理解三层架构的理解三层架构的理解了解了解c#c#中的三层架构中的三层架构(DAL,BLL,UI(DAL,BLL,UI一提三层架构一提三层架构,大家都知道是表现层大家都知道是表现层(UI,(UI,业务业务逻辑层逻辑层(BLL(BLL和数据访问层和数据访问层(DAL,(DAL,而且每层如何细分也都有很多的方法。但具体代而且每层如何细分也都有很多的方法。但具体代码怎么写码怎么写,到底那些文件算在哪一层到底那些文件算在哪一层,却是模模糊糊的。下面用一个简单的例子来带却是模模糊糊的。下面用一个简单的例子来带领大家实战三层架构的项目领大家实战三层架构的项目,这个例子只有一个功能这个
2、例子只有一个功能,就是用户的简单管理。就是用户的简单管理。首先建立一个空白解决方案首先建立一个空白解决方案,添加如下项目及文件添加如下项目及文件1 1、添加、添加ASP.NET Web ApplicationASP.NET Web Application项目项目,命名为命名为UI,UI,新建新建WebWebFormForm类型文件类型文件User.aspx(User.aspx(含含User.aspx.csUser.aspx.cs2 2、添加、添加ClassLibraryClassLibrary项目项目,命名为命名为BLL,BLL,新建新建ClassClass类型文件类型文件UserBLL.cs
3、UserBLL.cs3 3、添加、添加ClassLibraryClassLibrary项目项目,命名为命名为DAL,DAL,新建新建ClassClass类型文件类型文件UserDAL.csUserDAL.cs。添加。添加S SQLHelperQLHelper引用。引用。(这个是微软的数据访问类这个是微软的数据访问类,也可以不用也可以不用,直接编写所有的数据访问直接编写所有的数据访问代码。我一般用自己写的数据访问类代码。我一般用自己写的数据访问类DataAccessHelperDataAccessHelper。4 4、添加、添加ClassLibraryClassLibrary项目项目,命名为命名
4、为Model,Model,新建新建ClassClass类型文件类型文件UserModel.csUserModel.cs5 5、添加、添加ClassLibraryClassLibrary项目项目,命名为命名为IDAL,IDAL,新建新建InterfaceInterface类型文件类型文件IUserDAL.csIUserDAL.cs6 6、添加、添加ClassLibraryClassLibrary项目项目,命名为命名为ClassFactoryClassFactory相信大家已经看出来了相信大家已经看出来了,这个和这个和PetshopPetshop的示例没什么区别的示例没什么区别,而且更简单而且更简
5、单,因为在因为在下也是通过下也是通过PetshopPetshop学习三层架构的。但一些朋友对于这几个项目所处的层次学习三层架构的。但一些朋友对于这几个项目所处的层次,以及以及它们之间的关系它们之间的关系,可能比较模糊可能比较模糊,这里逐个说明一下这里逐个说明一下:1 1、User.aspxUser.aspx和和User.aspx.csUser.aspx.cs这两个文件这两个文件(以及文件所属的项目以及文件所属的项目,下面也是如此下面也是如此,不再重复强调了都属于表现层不再重复强调了都属于表现层部分。部分。User.aspxUser.aspx比较好理解比较好理解,因为它就是显示页面了。因为它就是
6、显示页面了。User.aspx.csUser.aspx.cs有些人觉得不应该算有些人觉得不应该算,而是要划到而是要划到业务逻辑层中去。如果不做分层的话业务逻辑层中去。如果不做分层的话,那么让那么让User.aspx.csUser.aspx.cs来处理业务逻辑来处理业务逻辑,甚至操作甚至操作数据库都没什么问题数据库都没什么问题,但是做分层的话但是做分层的话,这样就不应该了。在分层结构中这样就不应该了。在分层结构中,User.aspx.c,User.aspx.cs s仅应该处理与显示有关的内容仅应该处理与显示有关的内容,其它部分都不应该涉及。其它部分都不应该涉及。举例举例:我们实现用列表方式显示用
7、户的功能我们实现用列表方式显示用户的功能,那么提取信息的工作是由那么提取信息的工作是由BLLBLL来做来做的的,UI(,UI(本例中是本例中是User.aspx.csUser.aspx.cs调用调用BLLBLL得到得到UserInfoUserInfo后后,通过代码绑定到通过代码绑定到User.aspxUser.aspx的的数据控件上数据控件上,就实现了列表的显示。在此过程中就实现了列表的显示。在此过程中User.aspx.csUser.aspx.cs对对UIUI没有起到什么作用没有起到什么作用,仅是用来传递数据仅是用来传递数据,而且因为实际编码中大部分情况都是如此的实现而且因为实际编码中大部分
8、情况都是如此的实现,所以使有些人所以使有些人觉得觉得User.aspx.csUser.aspx.cs不应该算不应该算UI,UI,而应该并入而应该并入BLLBLL负责逻辑处理。继续往下看负责逻辑处理。继续往下看,这时提出这时提出了一个新需求了一个新需求,要求在每个用户的前面加一个图标要求在每个用户的前面加一个图标,生动地表现出用户的性别生动地表现出用户的性别,而且不而且不满满1818岁的用儿童图标表示。这个需求的实现岁的用儿童图标表示。这个需求的实现,就轮到就轮到User.aspx.csUser.aspx.cs来做了来做了,这种情况下这种情况下User.aspx.csUser.aspx.cs才算
9、有了真正的用途。才算有了真正的用途。2 2、NewBLL.csNewBLL.cs添加如下方法添加如下方法:public IList GetUsers(:public IList GetUsers(:返回所有的用户信息列表返回所有的用户信息列表public UserInfo GetUser(int UserId:public UserInfo GetUser(int UserId:返回指定用户的详返回指定用户的详细信息细信息public bool AddUser(UserInfo User:public bool AddUser(UserInfo User:新增用户信息新增用户信息public
10、bool ChangeUser(UserInfo User:public bool ChangeUser(UserInfo User:更新用户信息更新用户信息public void RemoveUser(int UserId:public void RemoveUser(int UserId:移除用户信息移除用户信息此文件就属于业务逻辑层了此文件就属于业务逻辑层了,专门用来处理与业务逻辑有关的操作。可能有很专门用来处理与业务逻辑有关的操作。可能有很多人觉得这一层唯一的用途多人觉得这一层唯一的用途,就是把表现层传过来的数据转发给数据层。这种情况就是把表现层传过来的数据转发给数据层。这种情况确实很
11、多确实很多,但这只能说明项目比较简单但这只能说明项目比较简单,或者项目本身与业务的关系结合的不紧密或者项目本身与业务的关系结合的不紧密(比比如当前比较流行的如当前比较流行的MIS,MIS,所以造成业务层无事可做所以造成业务层无事可做,只起到了一个转发的作用。但这只起到了一个转发的作用。但这不代表业务层可有可无不代表业务层可有可无,随着项目的增大随着项目的增大,或者业务关系比较多或者业务关系比较多,业务层就会体现出它业务层就会体现出它的作用来了。的作用来了。此处最可能造成错误的此处最可能造成错误的,就是把数据操作代码划在了业务逻辑层就是把数据操作代码划在了业务逻辑层,而把数据库作而把数据库作为了
12、数据访问层。举例为了数据访问层。举例:有些朋友感觉有些朋友感觉BLLBLL层意义不大层意义不大,只是将只是将DALDAL的数据提上来就的数据提上来就转发给了转发给了UI,UI,而未作任何处理。看一下这个例子而未作任何处理。看一下这个例子BLLBLL层层SelectUser(UserInfo userInfoSelectUser(UserInfo userInfo根据传入的根据传入的usernameusername或或emailemail得到用户详细信息。得到用户详细信息。IsExist(UserInfo userInfoIsExist(UserInfo userInfo判断指定的判断指定的us
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三层 架构 理解
限制150内