理解.NET三层架构基本思想

时间:2021-08-31 03:51:30

.Net   2009-08-04 20:43   阅读79   评论0  

字号:    

BLL:业务逻辑层
DALFactory:数据层工厂模式
DBUtility:数据库访问操作类
IDAL:数据库访问层的接口定义
Model:业务实体对象
SQLServerDAL:SQL Sever 数据访问层
WEB:表示层

其中业务逻辑组件层包括:Model、BLL项目。
数据访问层包括:DALFactory、IDAL、SQLServerDAL和DBUtility.
表现层包括:WEB项目

其 中大概是这样的,我们实现业务的处理表一般在表现层调用业务逻辑层BLL项目中封装的对于不同数据库表各种操作方法的类,一般对于数据的Insert、 Add这些要使用存储过程的,我们还要用到Model项目自动提取数据库中字段。其中BLL层是联系表现层WEB和底层数据库访问操作的中间介。而 IDAL项目里是每个业务实体对应一个接口类,接口类中定义的方法,在SQLServerDAL项目中的数据库访问类来继承,实现整个解决方案对应的几乎 所有的业务实体都在该项目中进行了定义。
在这里,DBUtility 项目里面的DbHelperSQL类的方法,为SQLServerDAL提供完整的对SQLServer数据库操作的方法,包括了一些公用方法、和用到的SQL语句执行、代参数的SQL语句、存储过程操作等方法。

这架构的划分好是好,但是初学起来也实在有点不好接受,特别是刚从PHP或者ASP过渡过来。
下面举例说明一下增添一个处理业务的方法在业务逻辑层和数据库访问层中怎么添加代码:
比如我们现在要增添在一张用户表中根据用户名读取用户密码的方法:

String GetPwd(string string LoginName)

首先我们在BLL里面对应表的业务逻辑类:UserInfo.cs文件里面的public class UserInfo 类增添方法

         ///<summary>
         ///获得用户密码
         ///</summary>
         public string GetPwd(string LoginName)
         {
             return dal.GetPwd(LoginName);
         }

然后我们需要在IDAL接口层类 public interface IUserInfo 里面添加一个接口

       ///<summary>
         ///获得用户密码
         ///</summary>
         string GetPwd(string LoginName);

在后,如果我们使用SQL语句对数据库进行操作并返回密码,
在SQLServerDAL数据库访问层里面相对应的 UserInfo.cs 文件 public class UserInfo:IUserInfo 类里面添加这个方法

         ///<sumary>
         ///获得用户密码
         ///<returns>密码</returns>
         ///</sumary>
         public string GetPwd(string LoginName)
         {
             string Sql = "select Login_Password from UserInfo where Login_Name='lb' ";
             SqlDataReader DataReader_UserPwd = DbHelperSQL.ExecuteReader(Sql);
             string Pwd = "";
             while (DataReader_UserPwd.Read())
             {
                 Pwd = Convert.ToString( DataReader_UserPwd.GetValue(0) );
             }
             DataReader_UserPwd.Close();
             return Pwd;
         }

这个方法里面有调用了 DBUtility 项目里面的 DbHelperSQL.cs 文件里面的 public abstract class DbHelperSQL 类里面的数据库访问方法。

在WEB表现层里面 我们
       BLL.UserInfo MyUserInfo = new AOMISF.BLL.UserInfo();
       string PassWord = MyUserInfo.GetPwd("User_Name");
就得到了我们所需要的结果。也就是处理完了一个业务。
好了OK了。

转自: http://hi.baidu.com/libo%5Flibo/blog/item/ec4194a1854a6e8d471064c6.html