background image

深入浅出 C#

 

三层架构

本文用一个示例来介绍如何建设一个三层架构的项目,并说明项目中各个文件所处的层
次与作用。写本文的目的,不是为了说明自己的这个方法有多对,而是希望给那些初学三
层架构却不知从何入手的朋友提供一点帮助。因为网上的文章,大多是注重理论的介绍,
而忽略了具体的实践应用,或者有示例但讲得不透彻。导致看了之后,理论上又学习了一
遍,但还是不知道代码怎么写。所以想从这个方面入手写一下,让从来没做过三层架构的
初学者也能照猫画虎,写出代码来。文中的代码是伪代码,仅用来阐明思路。
   正文:
一提三层架构,大家都知道是表现层(UI),业务逻辑层(BLL)和数据访问层
(DAL),而且每层如何细分也都有很多的方法。但具体代码怎么写,到底那些文件算在
哪一层,却是模模糊糊的。下面用一个简单的例子来带领大家实战三层架构的项目,这个
例子只有一个功能,就是用户的简单管理。
首先建立一个空白解决方案,添加如下项目及文件

1、添加 ASP.NET Web Application 项目,命名为 UI,新建 Web Form 类型文件
User.aspx(含 User.aspx.cs)

2、添加 ClassLibrary 项目,命名为 BLL,新建 Class 类型文件 UserBLL.cs

3、添加 ClassLibrary 项目,命名为 DAL,新建 Class 类型文件 UserDAL.cs。添加
SQLHelper 引用。(这个是微软的数据访问类,也可以不用,直接编写所有的数据访问
代码。我一般用自己写的数据访问类 DataAccessHelper )。

4、添加 ClassLibrary 项目,命名为 Model,新建 Class 类型文件 UserModel.cs

5、添加 ClassLibrary 项目,命名为 IDAL,新建 Interface 类型文件 IUserDAL.cs

6、添加 ClassLibrary 项目,命名为 ClassFactory

相信大家已经看出来了,这个和 Petshop 的示例没什么区别,而且更简单,因为在下也
是通过 Petshop 学习三层架构的。但一些朋友对于这几个项目所处的层次,以及它们之
间的关系,可能比较模糊,这里逐个说明一下:

1、User.aspx 和 User.aspx.cs

这两个文件(以及文件所属的项目,下面也是如此,不再重复强调了)都属于表现层部
分。User.aspx 比较好理解,因为它就是显示页面了。User.aspx.cs 有些人觉得不应该算,
而是要划到业务逻辑层中去。如果不做分层的话,那么让 User.aspx.cs 来处理业务逻辑,
甚至操作数据库都没什么问题,但是做分层的话,这样就不应该了。在分层结构中,
User.aspx.cs 仅应该处理与显示有关的内容,其它部分都不应该涉及。

举例:我们实现用列表方式显示用户的功能,那么提取信息的工作是由 BLL 来做的,
UI(本例中是 User.aspx.cs)调用 BLL 得到 UserInfo 后,通过代码绑定到 User.aspx
的数据控件上,就实现了列表的显示。在此过程中 User.aspx.cs 对 UI 没有起到什么作用,