业务逻辑层的用途

4

我知道这可能是一个重复的问题。但我从来没有找到一个初学者能理解的正确解释。

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

但每当我参加面试时,他们都会问我在BLL中做了什么。
请帮助我理解BLL的正确使用。
如果您可以的话,请提供一些示例代码。


请参考http://msdn.microsoft.com/en-us/library/ee658103.aspx,阅读有关编程的相关内容。 - Randhi Rupesh
3个回答

10

这个问题可能会被删除,因为它不符合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则与数据库相关,并且不关心任何业务或业务规则。


2

如果所有的业务逻辑,也就是数据处理都是分开的,那么您可以安全地从一个数据库切换到另一个数据库。

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


为了安全地从一个数据库切换到另一个数据库(或者)从一种数据持久化方法切换到另一种,最好使用仓储模式。但我承认BLL也可以承担这个责任。 - Steve.NayLinAung

1
首先,您应该知道为什么我们将对象分为两个独立的数据层和业务层,而在面向对象编程中,数据和操作通常在同一个类中。原因在于,当我们制作企业应用程序时,我们的数据更改很少,但我们的业务经常变化,因此这种模式帮助我们更改特定部分。如果您理解使用3层模式的主要原因之一,那么现在来回答您的问题:您真正的业务逻辑都可以在其中具有相同的名称,例如,在财务项目中,RegisterVoucher可以是注册凭证注释的方法,并且在注册之前应检查所有验证。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接