为什么我所见到的项目中,BLL层都只是简单的调用DAL的代码,BLL层作用何在?

zhuawang 2011-07-14 05:12:42
为什么我所见到的项目中,BLL层都只是简单的调用DAL的代码,BLL层作用何在?所谓BLL不是要处理业务逻辑的吗?为什么都只是简单的调用DAL,如果是这样那还要BLL做什么,省了算了。直接在UI层调用DAL就行了.大家说呢?
public class AdminBLL
{
private AdminDAL dal;

public AdminBLL()
{
dal = new AdminDAL();
}

public void Update(Admin admin)
{
dal.Update(admin);
}

public Admin GetByUserName(string userName)
{
return dal.GetByUserName(userName);
}
}
...全文
1954 122 打赏 收藏 转发到动态 举报
写回复
用AI写文章
122 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice_baili 2011-07-27
  • 打赏
  • 举报
回复
和业务员一个道理
大飞飞虫 2011-07-27
  • 打赏
  • 举报
回复
分层不是必须的。
不过你设计做久、系统做多了就会发现,分层很大的原因是为了复用,还有为了未来的修改更方便。
带着这种思路自然而然就分开了 :)

事实可能与楼主看到的往往相悖,反而BLL层是所有层里比较庞大的一块。

我的拙见~~~
keyouea 2011-07-27
  • 打赏
  • 举报
回复
反正哥总结了一下,目前所谓的3层指导思想就是不要在应用程序中出现SQL语句?
云寂@ 2011-07-27
  • 打赏
  • 举报
回复
学习了,收藏一下
骑猪看海 2011-07-27
  • 打赏
  • 举报
回复
神马都是浮云,淡定才是真理
zhuawang 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 117 楼 amandag 的回复:]
如果业务规则不复杂,bll层所做的事是不多,但日志记录,数据检查一般还是在bll层做的
[/Quote]
数据检查是指哪些?类似文本框不能为空吗?这不是在ui层做的吗?
ourola 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 82 楼 bwangel 的回复:]
BLL层还是很有用的,
比如,一个实体的Save()方法,在数据层实现,但是何时进行Save,这是BLL要做的事.
多看看各类设计模式,就明白BLL的作用了
[/Quote]
严重同意此说法.
kiss筱魔 2011-07-21
  • 打赏
  • 举报
回复
个人理解,bll层就是一些方法的封装,调用过程中只调用该方法,方法的实现封装在dal层,在以后的开发中,大致也是这几层逻辑,不过要根据自己的需要来合理分配和建立自己的逻辑关系层
zzxap 2011-07-20
  • 打赏
  • 举报
回复
bll 可以static
amandag 2011-07-20
  • 打赏
  • 举报
回复
如果业务规则不复杂,bll层所做的事是不多,但日志记录,数据检查一般还是在bll层做的

aXen 2011-07-20
  • 打赏
  • 举报
回复
一般MIS类的系统,业务规则不复杂,基本在其他层就处理了,bll层确实用处不大,我以前也很疑惑这点,lz不要被三层这东西给迷惑了。
看看mvc之类的架构,你就更能体会业务逻辑的概念了。
kiba518 2011-07-20
  • 打赏
  • 举报
回复
[Quote=引用 112 楼 luoweihua7 的回复:]
引用 11 楼 wanghui0380 的回复:

我只能说你没碰到真正需要BIL的项目

比如:我现在需要做个报表,我需要从10张表(或者10多个对象集合)中抽取记录,并进行相应计算,计算规则本身可以动态配置,而前端UI可以是word,可以是excel,也可以是普通的html页面。

告诉你怎么办,这个时候你还只是简单的调用DAL吗?

当然也许你会说,我存储过程吧结果都计算好了……
[/Quote]

存储过程效率高啊 可是也难啊 改的时候也费尽
kiba518 2011-07-20
  • 打赏
  • 举报
回复
说实话 我从来不知道三层咋用 也不想学
我属于用到什么就写什么

比如 一般网站 要数据库连接 那弄一个类 要数据库查询 弄一个类 要字符串操作弄一个类 全是静态方法

要是计算特复杂哪种 就给数据表弄个实体 在弄个类把查询的数据计算一下 就这么弄 啥三层 四层 那是干什么的
stszd604 2011-07-19
  • 打赏
  • 举报
回复 1
[Quote=引用 30 楼 zooen2011 的回复:]
BLL层,看似符合现实生活中的场景。

就拿学校的食堂来说了,食堂的人员分以下几个角色:

打饭的 - UI层(直接面对学生)
端饭菜的 - BLL层
煮饭煮菜的 - DAL层

很显然,最不重要的好像就是BLL层,打饭的可以去兼顾,但是效率可想而知。
我是觉得BLL层很有必要的,就拿抽象工厂来说吧,一个BLL管理AccessDAL和SqlDal,就是一个项目兼容2种以上数据库。……
[/Quote]

兼容多种数据库 VB必须你这样做

直接在数据层给做掉了 IDBFACTORY 你懂得
stszd604 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 dongxinxi 的回复:]
做报表时,可以增加一些只读属性代代替方法的作用
如果业务逻辑稍微复杂一点,不止方法,光是属性访问器都要写不少
[/Quote]

C# 2.0以下可以PROC 3.0以上直接get;set

ECLIPSE 可以自动生成
showjim 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 107 楼 learnjsee 的回复:]...[/Quote]
moneysoft还能淡定...
stszd604 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 a281274533 的回复:]
仔细看下三层介绍
[/Quote]

装什么深沉 有本事说出来
遊戲王千金 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 93 楼 moneysoft 的回复:]
2.业务层,顾名思义,描述业务
比如定义一个方法
Method UserUpdate = new Method(AppKey,"UserUpdate");
ViewDrv.CreateView(UserUpdate);//动态创建UI
Method.UpdateParams(this.Page);//从视图自动匹配要更新的值
DAHelper.Execute(UserUpdate);//……
[/Quote]
比较赞成
举一个修改用户资料功能,小项目你可能,拖textBox控件(做UI),之后按ID去BLL或者BAL读用户资料...
但当项目到UI需要许多美工做,程序员如何改得过来(累),所以读静态html,替换值变得很重要,这一操作就是在BLL里面处理.我贴代码大家容易理解。

<tr><td><span class="red">*</span> 手机</td><td><input id="mobile" name="mobile" maxlength="20" value="{$mobile}" /></td></tr>
<tr><td>  联系电话</td><td><input name="tel" maxlength="20" value="{$tel}" /></td></tr>

其中{$mobile}标签与数据库字段名一样。

public static string VipModifyJoinMt4Template(string strVipUid, bool EditedByManager)
{
DataTable dt = new DAL.VipDa().GetVip("uid", strVipUid);
if (dt.Rows.Count == 0)
{
JsUtil.Show("会员已被删除!", "/vip/login.aspx");
}
string strTemp = IOUtil.ReadString(HttpContext.Current.Server.MapPath("~/template/temp_joinvipinfo.html")); // 创建模板
string str;
string strValue;

// 替换模板
foreach (DataColumn dc in dt.Columns)
{
str = "";
strValue = dt.Rows[0][dc].ToString(); // 字段值
switch (dc.ColumnName)
{

case "firstName": //逻辑改动,例如限制某某项不能修改
str += "<input name=\"firstName\" maxlength=\"20\" value=\"" + strValue + "\"" + (EditedByManager ? "" : " disabled=\"disabled\"") + " />" + (EditedByManager ? "" : "  无权修改此项,<a href=\"modify.aspx?tag=firstname\">申请修改</a>");
strTemp = strTemp.Replace("{$firstName}", str);
break;
default: // {$mobile}标签与数据库字段名一样好处
strTemp = strTemp.Replace("{$" + dc.ColumnName + "}", strValue);
break;
}
}

return strTemp;
}

之后我们页面Response.Write出该.界面就出现了。BLL做业务逻辑是有必要的.


种草德鲁伊 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 100 楼 moneysoft 的回复:]

呵呵,楼上的兄弟,照你说法,你每个项目都要开发DAL咯?
如果数据库100个表需要操作,你就写100个方法是吧?
不管你的BLL还有没有别的算法,反正最后总是要再来调用这100个方法?

[/Quote]

不如把你的DAL实现放出来看看?
火星大能猫 2011-07-19
  • 打赏
  • 举报
回复
有点意思,收藏了.!!@#!#
加载更多回复(102)

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧