三层架构实例

一、概要
在我的上一篇博客中,我们谈了谈分层,到底为什么分层(http://blog.csdn.net/shan9liang/article/details/6836300
这篇博客,准备用一个小Demo来介绍应该实现三层架构。三层架构只是分层的一种经典形式,到底分几层,要依具体情况而定,考虑到系统的复杂程度,和后期的可维护性,完全可以分四层,五层,甚至六层,七层。
 
三层架构(3-tierapplication),通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想(《百度百科》)
 
二、DEMO
1、实现语言:VB.NET
2、需求:《学校机房收费系统》中的一个功能:操作员为学生注册机房上机卡。
3、用例图:


4、三层架构下的包图:


注:Entity中放的都是实体类,即由数据库中的表抽象出来的类。实体类主要作为数据的载体,在各个层之间被传递。
 
我们现在要做的就是对用例图中所示的这个功能进行抽象,即分别在UI,BLL,DAL三层抽象类。
 
数据访问层DAL:数据库中的一张表对应DAL层的一个类,所以这里要有一个dal_DealStudentInfo类,它必然有一个方法AddRecord,用于向数据库中添加数据。这个方法的参数便是studentInfo这张表映射出的一个实体类的一个实例,方法中包含了一些SQL语句。IsExist是验证数据有效性,这里主要是检验用户是否已经存在。图示:



关键代码如下:

业务逻辑层BLL:这里会有一个类bll_ControlStudent与DAL层中的dal_DealStudentInfo类对应,调用dal_DealStudentInfo的AddRecord方法,这个方法传递的参数就是UI层传递过来的studentInfo实体类的一个实例。如果需要验证输入合法性,也放在bll_ControlStudent中,并与dal_DealStudentInfo中的方法相对应,可以单独用一个方法,也可以集成到AddStudent中,我这里因为只是进行了简单的判断,就把它放到了AddStudent。
图示:




关键代码如下:


表现层UI:这里肯定有一个窗体类frmRegister。上面有一些控件,这里我简要画了一个界面:


在按钮确定的事件下,我们需要实例化studentInfo这张表映射出的一个实体类,把这个对象作为一个参数,传递给BLL层中的类bll_ControlStudent。
关键代码:


4、总体的关系类图:


五、总结
本文主要通过一个小demo简要实现了三层架构,我们看到三层架构的主要特点:UI调用BLL中类的方法,即UI知道BLL的方法,但不知道方法实现的细节,而BLL层并不知道UI的存在.同样BLL层调用DAL,而DAL也不知道BLL的存在。三者中任何一者发生变化都不会影响其他俩者的正常工作,只对变化者进行重新调整即可。三层把Entity实体类的实例作为参数来传递.
总之,表示层只提供软件系统与用户交互的接口;业务逻辑层是界面层和数据访问层之间的桥梁,负责数据处理和传递;数据访问层只负责数据的存取工作。





posted on 2011-10-03 08:02  springside例子  阅读(443)  评论(0编辑  收藏  举报