业务逻辑层的使用

我知道这可能是一个重复的问题。 但我从未找到像我这样的初学者能够理解的正确解释。

我的问题是“我们可以在业务逻辑层内做些什么”。 我做了3层架构项目。 但我只使用BLL在UI和数据层之间传递值。

但每当我参加面试时,他们都会问我在BLL里面做的所有事情。
请帮助我了解BLL的正确使用方法。
如果可以,请提供一些示例代码。

此问题可能会被删除,因为它不是stackoverflow喜欢的格式。

BLL处理业务逻辑,例如如何执行特定公式或执行工作流。 它通常包含公司希望实施的规则。

数据层通常只从数据库,文件或其他数据源获取数据,并且不对其进行任何进一步修改。 通常是业务层将数据加载到某种业务相关的类/对象中。 BLL还可以在将数据传递到UI层之前修改数据层中的数据。 UI层仅执行简单validation并呈现从BLL获取的数据

例如。

在数据层中

你可以有一个function

public DataSet GetAllAccounts() { DataSet ds; //Some sql code to read out the sql data using datareader and dataadapter; return ds; } 

并且在业务层中你可以拥有

 public List 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有关,并不关心业务或任何业务规则。

如果您的所有业务逻辑(我的意思是数据处理)单独完成,您可以安全地从一个数据库切换到另一个数据库。

您还可以使用相同的代码支持多个数据库(SQL Server,MySql,Access,文本文件)。

首先,您应该知道为什么我们将对象分成两个独立的数据和业务层,而面向对象的数据和操作在同一个类中,原因是当我们生产企业应用程序时,我们的数据变化很少,但我们的业务是即将改变所以这种模式有助于我们改变具体的部分,

如果您了解现在使用3层模式回答您问题的主要原因之一,那么您真实业务中的所有逻辑都可以在同一个名称上,例如在财务项目中,RegisterVoucher可以是一种注册凭证的方​​法注意以及在注册之前应该检查的所有validation。