asp.net-mvc - 如何处理只能在 UI 中实现的业务逻辑?

标签 asp.net-mvc design-patterns domain-driven-design business-logic

也许这个问题有点白痴,因为业务层可以保证一切,但我不知道是否应该努力将这种保证带到业务逻辑层。

例子:

我在 ASP.NET 应用程序中有一个业务逻辑,用户只有在登录后才能访问产品列表的第二页。在 ASP.NET 应用程序中,WebSecurity 负责用户登录,所以我无法在业务层调用 WebSecurity 方法。我该如何处理它?仅在 UI 层保留此法则?

最佳答案

业务逻辑是一个宽泛的术语,很容易使开发人员混淆他们所谈论的逻辑类型。人们认为“如果它是客户需求,那么它一定是业务逻辑”

  1. 应用程序逻辑 - 这些是专门为应用程序制作的逻辑种类。他们确保应用程序顺利运行,例如过滤掉垃圾输入。

    • UI 输入验证,例如电子邮件应始终看起来像 user@domain.com
    • 应用安全、登录。
  2. 业务逻辑 - 这些类型的逻辑来自问题域。这些是现实世界的商业规则。

    • 如果你能只谈规则而不提申请,那么它是一个很好的候选人。

示例

这是一个简单的练习:以下项目是对用户年龄的验证。找出哪个属于应用逻辑或业务逻辑。

  1. 年龄应始终为数字,并且在 1 到 100 之间。
  2. 用户的年龄必须年满 18 岁。

提示:如果顾客试图购买啤酒,收银员永远不会询问顾客的年龄是否为数字或是否在 1 到 100 的范围内。

在现实世界中,收银员是业务的一部分,并执行规则。它假定客户的年龄是正常的,而不是 1000。

The business does not care if you are authenticated or not. You are there to do business, that's it

我的小练习的答案:

  1. 年龄应该始终是数字,并且在 1 到 100 之间。 - 此验证是一个应用程序逻辑。确保用户输入的质量是应用程序的工作。没有垃圾输入。

  2. 用户的年龄必须为 18 岁或以上。 此验证是一种业务逻辑。业务假设输入的格式或范围总是正确的,它所要做的就是检查你是否被允许购买啤酒。

关于asp.net-mvc - 如何处理只能在 UI 中实现的业务逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343492/

相关文章:

c# - 这是观察者反模式吗? (有奖金状态机问题)

node.js - 将结果返回给外部函数

javascript - 主干门面/中介模式挑战

domain-driven-design - CQRS/事件溯源,如何获得一致的数据来应用业务规则?

java - DDD - 具有树结构的事件溯源

asp.net-mvc - 无法解析绑定(bind) knockout 错误

c# - Visual Studio 智能感知搞砸了

c# - 如何在 asp.net web api 中将图像流式传输到客户端应用程序?

asp.net-mvc - 如何在 ASP.NET MVC 中拥有小写路由?

c# - DDD 命令模式实现细节 - 持久化命令