c# - mvc 设计模式的哪一部分代表了业务逻辑?

标签 c# asp.net-mvc asp.net-mvc-4 business-logic

我对编程中业务逻辑的定义有点困惑,因为我以前开发时不注意这些术语,但现在我想成为一名优秀的开发人员。

当我阅读 Wiki 时关于业务逻辑的定义我看了下面的定义:

In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, displayed, stored, and changed.

在另一个website我已经通过示例阅读了以下定义:

Business logic is that portion of an enterprise system which determines how data is: Transformed and/or calculated. For example, business logic determines how a tax total is calculated from invoice line items. Routed to people or software systems, aka workflow.

所以我想知道 MVC 的哪一部分代表业务逻辑,它是 Controller 还是模型或其他部分可以在 MVC 中?

我知道 Controller 负责向模型发送命令,但它负责应用业务规则吗?

例如让我们以上面的税收为例:

假设我们从 View 中的表单中获取了发票数据,数据将被定向到 Controller ,但是在计算税款的地方,我们是在 Controller 中计算还是寻求外部帮助类来计算它还是我们会在更新数据库之前在模型中计算它?

如果能举个例子,我们将不胜感激。

最佳答案

可以将税收计算逻辑放在 Controller 中,但最好将其放在模型中,因为它的耦合更松散。想在很多页面上计算税收是合理的,所以不要把它放在很多 Controller 中,把它放在一个可以重复使用的模型中。

如果您听到有人在谈论“胖” Controller 与“瘦” Controller ,那么这就是他们在谈论的内容。大多数开发人员会提倡在他们的 Controller 中使用很少的代码(使它们“变瘦”),并且实际上只是充当模型的中继/协调器。

我确实认为术语 Model 有点令人困惑,因为在面向服务的体系结构(以及与此相关的功能语言)中,他们强调尝试拥有没有任何东西的“愚蠢”对象功能,他们经常将这些哑对象称为“模型”。但是当谈到 MVC 时,“模型”实际上指的是业务模型,它结合了持有值(value)的哑对象和在它们之上工作的服务。

关于c# - mvc 设计模式的哪一部分代表了业务逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32039188/

相关文章:

c# - 表中具有相同名称但不同ID的值的总和

asp.net-mvc - ASP.NET MVC 中的模型绑定(bind)嵌套集合

javascript - 在不同的浏览器中输入时间字段以不同的格式显示

c# - 为什么这个额外的 "?_=1579068576376"被添加到我的 API 请求的 URL '/api/customers' 中

javascript - 为什么 ASP.NET MVC 无法识别 knockout

asp.net-mvc - 未将对象引用设置为 TempData 中对象的实例

c# - 通过 Selenium、ChromeDriver 和 Chrome 执行测试时出现 "Message=unknown error: cannot focus element"

c# - 基于 XML 的验证框架跨语言

c# - 从 EFCore 延迟加载上下文中删除导航集合实体 - 导航集合未立即更新

asp.net-mvc - jQuery Mobile 1.3.x 和 ASP.NET MVC 4 Razor 的 ListView 渲染问题