初学者,三层架构的简单问题 请大家帮忙解答
我对三层架构的 BLL 层理解有些模糊,我想问一下:
BLL 主要是业务处理,他所谓的业务是指针对数据库查询出来的东西吗?
比如:要做一个登陆,登陆前,会判断用户输入是否有误,那么这个判断是属于业务吗?这个判断应该写在UI 还是 BLL层?
在一个比如当项目需要用到复杂的SOCKET,这个时候我们需要将SOCKET的方法其提取到一个类中,SOCKET类的方法主要是对一些命令的处理和进行相应的操作,请问,这个SOCKET类的方法属于业务吗?应该放在BLL 还是 UI 还是?
再比如,有时候我们可以 需要创建一些临时用的实体,这些临时用的实体有时候只是UI层用,并不需要连接数据库的,请问这些不连接数据库的实体也要放到实体层吗 ?
在一个,项目中用到了复杂的API函数,提取了一个类,这些复杂的API是对UI进行相应的判断和处理的,请问这个类是属于业务还是UI?
我的主要问题是 三层架构中,所谓的层,这些是不是只是针对数据库?如果不是针对数据库的东西放到common或者UI 吗?我上面举得例子都是不走数据库的。 BLL所谓的业务处理是指对数据库查出来的数据做相应的业务处理吗 ? 麻烦大家帮我解个这个误区 谢谢。
------解决方案-------------------- bll不是只跟数据库打交道,这不是必要的,它是处理 业务层面的需求的,socket是通信的,这个要看你具体需求了,放在哪并没有什么固定
------解决方案-------------------- 业务层主要处理业务上的逻辑判断。
针对数据库的有DAL层,DAL才是主要跟数据库之间进行交互的。
------解决方案-------------------- 不要太过找太过明确的划分。只把他理解成需要逻辑处理的层就行了
------解决方案-------------------- 引用: 那临时的实体呢 是不是放到要用的那个层下面最好?
实体类不必放在某一层下,他可以单独放在三层之外……
------解决方案-------------------- 放哪都行,据情况而定。
一般登录验证方法放BLL层,与数据库的操作放DAL层。
------解决方案-------------------- SOCKET类 就放在 xxxx.Net下就行了他跟业务没关系
------解决方案-------------------- DAL 数据访问层 一般写SQL语句操作数据库
BLL 业务层,不需要考虑SQL语句应该怎么写,一般作为DAL的扩展。
DAL 代码Demo
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM [TB_NOTE]");
if (strWhere.Trim() != "")
{
strSql.Append(" where " + strWhere);
}
strSql.Append(" order by [TB_NOTE_ROW_NUM]");
return DbHelperSQL.Query(strSql.ToString());
}
BLL 代码Demo
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetID1(string strWhere)
{
return dal.GetList(" [_ID]='1'");
}
/// <summary>
/// 获得数据列表