软件系统最常用的一般会讲到三层架构,其实就是将整个业务应用划分为表示层、业务逻辑层、数据访问层等,有的还要细一些,通过分解业务细节,将不同的功能代码分散开来,更利于系统的设计和开发,同时为可能的变更提供了更小的单元,十分有利于系统的维护和扩展。

常见的三层架构基本包括如下几个部分,如图所示。



 

三层架构接口 三层架构bll_数据库

◆数据访问层 DAL:用于实现与数据库的交互和访问,从数据库获取数据或保存数据到数据库的部分。

◆业务逻辑层 BLL:业务逻辑层承上启下,用于对上下交互的数据进行逻辑处理,实现业务目标。

◆表示层 Web:主要实现和用户的交互,接收用户请求或返回用户请求的数据结果的展现,而具体的数据处理则交给业务逻辑层和数据访问层去处理。

日常开发的很多情况下为了复用一些共同的东西,会把一些各层都用的东西抽象出来。如我们将数据对象实体和方法分离,以便在多个层中传递,例如称为 Model。一些共性的通用辅助类和工具方法,如数据校验、缓存处理、加解密处理等,为了让各个层之间复用,也单独分离出来,作为独立的模块使用,例如称为 Common。

此时,三层架构会演变为如图所示的情况。

 

三层架构接口 三层架构bll_业务逻辑_02

◆业务实体 Model :用于封装实体类数据结构,一般用于映射数据库的数据表或视图,用以描述业务中客观存在的对象。 Model分离出来是为了更好地解耦,为了更好地发挥分层的作用,更好地进行复用和扩展,增强灵活性。

◆通用类库 Common:通用的辅助工具类。

 对数据库的共性操作抽象封装成数据操作类(例如 DbHelperSQL),以便更好地复用和使代码简洁。数据层底层使用通用数据库操作类来访问数据库,最后完整的三层架构如图 14-3所示。

最后完整的三层架构

三层架构接口 三层架构bll_数据库_03

数据库访问类是对 ADO.NET的封装,封装了一些常用的重复的数据库操作。如微软的企业库 SQLHelper.cs,动软的DBUtility/DbHelperSQL等,为 DAL提供访问数据库的辅助工具类。

现在我们来看下一个具体的例子:

解决方案整体架构:

三层架构接口 三层架构bll_三层架构_04



再来看看DAL层的具体实现:操作共数据库

三层架构接口 三层架构bll_三层架构_05

再来看看BLL层的实现:

三层架构接口 三层架构bll_业务逻辑_06

还有一个model:主要是业务实体类

using' namespace Model{
         public class Class{
                           public int ClassID{get;set}
                           public string ClassName{get;set}
                            public int GradeID{get;set}
}

}