我知道这可能是一个重复的问题。但我从未找到像我这样的初学者能够理解的正确解释。
我的问题是“我们可以在业务逻辑层内做些什么”。 我做了3层架构项目。但我只使用BLL在UI和数据层之间传递值。
但每当我参加面试时,他们都会问我在BLL内所做的一切 请帮助我理解BLL的正确使用方法 如果可以,请提供一些示例代码。
答案 0 :(得分:9)
此问题可能会被删除,因为它不符合stackoverflow喜欢的格式。
BLL处理业务逻辑,例如如何执行特定公式或执行工作流。它通常包含公司希望实施的规则。
数据层通常只从数据库,文件或其他数据源获取数据,并且不对其进行任何进一步修改。通常是业务层将数据加载到某种业务相关的类/对象中。 BLL还可以在将数据传递到UI层之前修改数据层中的数据。 UI层仅执行简单验证并呈现从BLL获取的数据
例如。
在数据层中
你可以有一个功能
public DataSet GetAllAccounts()
{
DataSet ds;
//Some sql code to read out the sql data using datareader and dataadapter;
return ds;
}
并且您可以在业务层中
public List<Account> GetAllAccounts()
{
DataSet ds = DataLayerClass.GetAllAccounts();
return (from Tab1 in ds.Tables[0] select new Account(){AcctNum =Tab1.AcctNum, Name =Tab1.Name}).ToList();
}
如您所见,Account是一个特定于业务的对象,而DataSet与db有关,并不关心业务或任何业务规则。
答案 1 :(得分:2)
如果您的所有业务逻辑(我的意思是数据处理)单独完成,您可以安全地从一个数据库切换到另一个数据库。
此外,您可以使用相同的代码支持多个数据库(SQL Server,MySql,Access,文本文件)。
答案 2 :(得分:1)
首先你应该知道为什么我们将我们的对象分成两个独立的数据和业务层,而面向对象的数据和动作是在同一个类中,原因是当我们生产企业app时,我们的数据变化很少见但是我们的业务即将发生变化,因此这种模式有助于我们改变具体部分,
如果您了解现在使用3层模式回答您问题的主要原因之一 你真实业务中的所有逻辑都可以在同一个名称上, 例如,在金融项目中,RegisterVoucher可以是一种注册凭证备注的方法,以及在注册之前应该检查的所有验证。