业务逻辑层的使用

Posted

技术标签:

【中文标题】业务逻辑层的使用【英文标题】:Uses of Business Logic Layer 【发布时间】:2013-05-18 07:42:48 【问题描述】:

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

我的问题是“我们可以在业务逻辑层中做的所有事情”。 我做过 3 层架构项目。但我只使用 BLL 在 UI 和数据层之间传递值。

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

【问题讨论】:

您可以参考msdn.microsoft.com/en-us/library/ee658103.aspx @smile-azeez。如果我的回答有帮助,请将其标记为已接受。 【参考方案1】:

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

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 也可以承担这个责任。【参考方案3】:

首先您应该知道为什么我们将对象分为两个单独的数据和业务层,而在面向对象的数据和操作中属于同一类,原因就在这里,当我们通常生产企业应用程序时,我们的数据更改很少,但是我们的业务即将发生变化,因此这种模式有助于我们更改特定部分,

如果您现在了解使用 3 层模式的主要原因之一来回答您的问题 您实际业务中的所有逻辑都可能在那边同名, 例如,在金融项目中,RegisterVoucher 可以作为一种注册凭证的方​​法,并且在注册之前您应该检查所有验证。

【讨论】:

以上是关于业务逻辑层的使用的主要内容,如果未能解决你的问题,请参考以下文章

用于业务逻辑或数据访问层的 Web 服务

架构中MVC模型和业务逻辑层的区别

任何将单独的数据访问层(使用 EF)突出显示到业务逻辑层的示例 C# 项目

业务逻辑和数据访问层的循环依赖

MVC5 网站开发之四 业务逻辑层的架构和基本功能

如何在现实生活中实现业务逻辑层的良好实践asp.net