A.net 剖析三层架构(3)_.NET概论及软件使用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

A.net 剖析三层架构(3)

作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0

本篇关键词:架构剖析 数据
黑客防线网安网讯:   4、UserDAL.cs    public IList SelectUsers():返回所有的用户信息列表    public UserInfo SelectUser(int UserId):返回指定用户的相信信息    public bool InsertUser(UserInfo...

   4、UserDAL.cs
    public IList SelectUsers():返回所有的用户信息列表
    public UserInfo SelectUser(int UserId):返回指定用户的相信信息
    public bool InsertUser(UserInfo User):新增用户信息
    public bool UpdateUser(UserInfo User):更新用户信息
    public void DeleteUser(int UserId):移除用户信息
    很多人最闹不清的就是数据访问层到底那部分才算数据访问层呢?有些认为数据库就是数据访问层这是对定义没有搞清楚,DAL是数据访问层而不是数据存储层,因此数据库不可能是这一层的也有的把SQLHelper(或其同类作用的组件)作为数据访问层,它又是一个可有可无的东西,SQLHelper的作用是减少重复性编码,提高编码效率,因此如果我习惯在乎效率或使用一个非数据库的数据源时,可以丢弃SQLHelper,一个可以随意弃置的部分,又怎么能成为三层架构中的一层呢
    可以这样定义:与数据源操作有关的代码,就应该放在数据访问层中,属于数据访问层
    5、IUserDAL
    数据访问层接口,这又是一个可有可无的东西,因为Petshop中带了它和ClassFactory类工厂,所以有些项目不论需不需要支持多数据源,都把这两个东西做了进来,有的甚至不建ClassFactory而只建了IDAL,然后"IUserDAL iUserDal = new UserDAL();",不知意义何在。这就完全是画虎不成反类犬了。
    许多人在这里有一个误解,那就是以为存在这样的关系:BLL?àIDAL?àDAL,认为IDAL起到了BLL和DAL之间的桥梁作用,BLL是通过IDAL来调用DAL的。但实际是即使你如此编码:"IUserDAL iUserDal = ClassFacotry.CreateUserDAL();",那么在执行"iUserDal.SelectUsers()"时,其实还是执行的UserDAL实例,而不是IUserDAL实例,所以IDAL在三层中的位置是与DAL平级的关系。
    通过上面的介绍,基本上将三层架构的层次结构说明了。其实,本人有一个判断三层架构是否标准的方法,那就是将三层中的任意一层完全替换,都不会对其它两层造成影响,这样的构造基本就符合三层标准了(虽然实现起来比较难^_^)。例如如果将项目从B/S改为C/S(或相反),那么除了UI以外,BLL与DAL都不用改动;或者将SQLServer改为Oracle,只需替换SQLServerDAL到OracleDAL,无需其它操作等等。本来想在文中加入一些具体的代码的,但感觉不是很必要,如果大家觉得需要的话,我再补充吧。
    总结:不要因为某个层对你来说没用,或者实现起来特别简单,就认为它没有必要,或者摒弃它,或者挪作它用。只要进行了分层,不管是几层,每一层都要有明确的目的和功能实现,而不要被实际过程所左右,造成同一类文件位于不同层的情况发生。也不要出现同一层实现了不同的功能的情况发生。

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14307-1.html
网站维护教程更新时间:2012-03-30 05:44:59  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer