A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 希望在明日 中级黑马   /  2012-9-14 23:30  /  2016 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于三层结构体系一直不太懂,UI层,BLL层,数据访问层是在一个项目文件里么,可不可以利用一个小小的登录程序讲解一下,谢谢!~

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

倒序浏览
首先在这里说说我对.NET企业级开发三层架构的理解:

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语句、存储过程操作等方法。

从表现层到底层数据库操作,一环扣一环。其中还有一些方法我并不理解。比DALFactory的程序集发射技术、什么映射啊、什么服务器端的缓存什么的...............

这架构的划分好是好,但是初学起来也实在有点不好接受,特别是刚从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了。
了解还很肤浅,毕竟是第一次学习这么高级的家伙

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
三层架构主要有 数据访问层,业务逻辑层,页面表示层,页面表示层调用业务逻辑层,业务逻辑层调用数据访问层,数据访问层主要是数据库的连接,打开关闭数据库,对内置对象的方法,事件等,业务逻辑层主要是分析用户取求后写的方法,

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
王锋华 发表于 2012-9-15 10:07
首先在这里说说我对.NET企业级开发三层架构的理解:

BLL:业务逻辑层

呵呵,不错,已经很深入浅出了,谢谢。。。
回复 使用道具 举报
三层吗?太简单了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马