我对N层架构的理解

            以前没太多关注各多层架构的设计,一直以来都是用的三层架构做网站,最近对N层架构有些兴趣,就稍微研究了一下,由于自己也没怎么用过,也是才学习,中间可能有些错误,请大家指正。
            ASP.NET的框架不管有多少层架构,都脱离不了最基本的三层:表现层,业务层,数据访问层。
      
      整个过程的来回都跟请求和数据有关,往右发送请求,往左响应请求返回数据。
      最简单的三层结构:Default.aspx——>BLL——>SQLHelper
                               Default.aspx<——BLL<——SQLHelper
     多层架构既然是基于三层架构的,它是对最基础的三层结构进行再抽离,那么就可以在三层架构的基础上再至少抽出一个中间层,是最原始的三层架构之间的桥梁,它起到一个衔接作用。试想一个业务比较复杂的网站,BLL的代码量会比较庞大,基本的三层显然是不够用的。我的做法是在三层的基础之上,先给Web和BLL之间搭一座桥,我叫它BLLManager,它的作用就是来统一管理所有的BLL类;这还不够,我把和SQLHelper相关的数据访问类都放到DAL中(以前的做法是用BLL来访问SQLHelper),这就相当于业务的数据都在DAL中请求和获得;然后我再在BLL和DAL中抽出一个类DALFactory用来管理所有的DAL(除了SQLHelper)。现在基本的结构如下图(不知道我的理解对不对,希望大家指正):


      使用N层架构的效果:每一层都可以在仅仅更改很少量的代码后,就能放到物理上不同的服务器上使用,因此结构灵活而且性能更佳。此外,每层做些什么其它层是完全看不到的,因此更改、更新某层,都不再需要重新编译或者更改全部的层了。这是个很强大的功能。例如,如果把数据访问代码与业务逻辑层分离,当数据库服务器更改后,你只需要更改数据访问的代码,因为业务逻辑层是不变的,因此不需要更改或者重新编译业务逻辑层。

下面我给了个简单的例子:
Default.aspx
Code
Default.aspx.cs
Code
Emp.cs
Code
BLLManager.cs
Code

EmpBLL.cs


Code

DALFactory.cs
Code

EmpDAL.cs
Code
            SQLHelper.cs我就不贴了。下面有整个源码(包含sql)的下载
            /Files/psunny/N-tier-structure.rar
posted @ 2009-08-16 22:41  Sunny Peng  阅读(4941)  评论(36编辑  收藏  举报