业务逻辑层的使用
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 可以作为一种注册凭证的方法,并且在注册之前您应该检查所有验证。
【讨论】:
以上是关于业务逻辑层的使用的主要内容,如果未能解决你的问题,请参考以下文章