gpt4 book ai didi

c# - 业务层或 Controller 中的计算以查看特定信息

转载 作者:行者123 更新时间:2023-11-30 20:00:22 25 4
gpt4 key购买 nike

我正在使用 n 层方法构建 ASP.Net MVC Web 应用程序。我的结构如下所示:

Business Objects - Model
Data Access Layer - DAL
Business Logic Layer - BLL
Mapping Layer
ViewModels
Controllers
Views

我通常把计算放在业务层,但是那些只用于展示目的的计算呢?例如,在我的应用程序的一个 View 中,我显示了发票总额、任何付款和欠款。欠款余额是计算得出的金额。因为我在我的应用程序中多次使用 BalanceOwing,所以我倾向于在我的 BLL 中创建一个通用的 BalanceOwing 方法,但在其他情况下,计算只会用于一个 View 。在这种情况下,计算应该进入 Controller 还是在我的情况下进入映射层? (我有一个映射层,用于将域模型转换为 View 模型。它使 Controller 更整洁)。

那真的是分界线吗?也就是说,如果我可以概括一个计算并多次使用它,它应该放在 BLL 中,但如果它特定于一个 View ,它应该放在 Controller 或映射器中?

总结:

我接受了@trailmax 的回答,因为他看到一些我认为是表示逻辑的东西实际上是业务逻辑,因此属于 BLL。如果某些东西确实是表示逻辑并且涉及分页等计算,我会将它们放在实用程序类或扩展方法中,如@ramiramilu 所述

最佳答案

我不喜欢 Controller 中的任何实际逻辑。所以,我会把它移到现有的 BLL 中,如果您想将它分开,甚至可以移到 BLL 中的一个新组件中。

我采用这种方法的原因有两个。

首先,这种逻辑往往会失控,它确实会使您的 Controller 操作变得困惑。我喜欢它们非常简洁。 (我通常会在其中发生三件事 - 身份验证、数据检索、ViewModel 构造。这些都是通过以某种形式的 BLL 调用单独的方法来实现的。)

第二个原因,是因为 Controller 操作更难进行单元测试,尤其是当它们有很多困惑的逻辑时。以这种方式构建我的 Controller 操作确实有助于良好的单元测试实践。

关于c# - 业务层或 Controller 中的计算以查看特定信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21282341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com