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

Posted

技术标签:

【中文标题】如何在现实生活中实现业务逻辑层的良好实践asp.net【英文标题】:How to implement good practise of Business Logic Layer in Real Life asp.net 【发布时间】:2012-12-15 19:48:58 【问题描述】:

我通常将数据集创建为 DAL,并在原始项目中创建 BLL。

在学习了Entity Framework之后,我知道业务逻辑层通常是在单独的项目(类库)中创建的。

但是,ASP.NET 站点没有相应的教程。

因此,当我创建 BLL 时,尤其是在引用期间,我很困惑。

    为了完成 BLL 课程,我应该像这样直接添加引用吗?

然后用 USING 语句访问实体:

但是,访问 BLL 的主项目中的表示层可能需要引用回 BLL 项目。我看到一些示例将整个 BLL 项目的 DLL 文件放在主项目中。

引用 BLL 和 Main 项目的正确方法是什么,或者只是像上面那样引用?

有什么好的教程可以学习吗?

【问题讨论】:

【参考方案1】:

我通常设置一个数据访问项目,设置一个引用数据访问项目的业务项目,以及一个同时引用数据访问和业务项目的 Web 项目。使用实体框架,所有生成的类都在数据访问层。我通常使用存储库模式,我所有的存储库都在业务层(也可以在数据访问层),并将实体框架实体返回给调用者,调用者是表示层中的一个对象(一个 MVC 控制器,或 MVP 演示者,或 asp.net 网络表单的代码隐藏,具体取决于您使用的内容)。

HTH

【讨论】:

更好的办法是将实体(模型)分离(推出)到一个新项目中。这样,您的 Web 层仅引用业务层和模型(实体),而不直接引用数据访问层。这当然是如果您只在业务层使用数据访问(存储库),而不是直接从 Web 层使用它们。 我同意这样做有好处,但也增加了复杂性。这实际上取决于项目的规模和需求来确定这是否有益。只需将实体从上下文通过存储库推送到 Web 层,然后将它们全部附加,就非常快速和容易。

以上是关于如何在现实生活中实现业务逻辑层的良好实践asp.net的主要内容,如果未能解决你的问题,请参考以下文章

在 3 层架构中实现业务逻辑

在java 8 stream表达式中实现if/else逻辑

在java 8 stream表达式中实现if/else逻辑

在组合模式中实现访问者(Visitor)模式

在没有UI锁定的情况下在MVVM中实现长时间运行的业务逻辑

如何设计业务逻辑层