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

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

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

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

【问题讨论】:

标签: c# asp.net 3-tier


【解决方案1】:

这个问题可能会被删除,因为它不是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 也可以承担这个责任。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 2011-12-03
      • 2011-11-26
      • 2017-04-29
      • 2016-08-12
      • 2018-08-02
      • 2014-09-04
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多