如何处理只能在 UI 中实现的业务逻辑?
How can I handle with business logic that only can be implemented in UI?
也许这个问题有点白痴,因为在业务层可以保证一切,但我不知道是否应该努力将这种保证带到业务逻辑层。
示例:
我在 ASP.NET 应用程序中有一个业务逻辑,用户只有在登录后才能访问产品列表的第二页。在 ASP.NET 应用程序中,WebSecurity 采用关心用户登录,所以我不能在业务层调用 WebSecurity 方法。我该如何处理它?仅在 UI 层保留此法则?
将 WebSecurity 调用放入您的业务逻辑中是错误的,正确的。然而,在您的控制器中使用 WebSecurity 调用并没有错。
在处理产品列表分页的操作中,您可以检查用户是否已登录,如果他们试图查看产品首页以外的任何内容,则将他们重定向到登录页面。
这个问题可以关闭以征求意见,因为有不止一种方法可以做你想做的事。例如,使用自定义 AuthorizeAttribute。
听起来您可能需要在业务层中使用更多业务逻辑来 return 基于一些额外参数的信息,例如
public List<Products> GetProductList(bool isAuthenticated = false)
{
}
然后您可以根据用户是否登录
从UI传递正确的值
业务逻辑是一个宽泛的术语,很容易使开发人员混淆他们所谈论的逻辑类型。人们认为"if its a client requirement then it must be a business logic"。
应用程序逻辑 - 这些是专门为应用程序制作的逻辑种类。他们确保应用程序顺利运行,例如过滤掉垃圾输入。
- UI 输入验证,就像电子邮件应该始终看起来像 user@domain.com
- 应用程序安全,登录。
业务逻辑 - 这些逻辑来自问题域。这些是 现实世界 的业务规则。
- 如果能只谈规则,不提申请,那还是不错的人选。
例子
这是一个简单的练习:以下项目是对用户年龄的验证。找出哪个属于应用逻辑或业务逻辑。
- 年龄应始终为数字,并且在 1 到 100 之间。
- 用户的年龄必须为 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 到 100 之间。 - 此验证是一个应用程序逻辑。确保用户输入的质量是应用程序的工作。没有垃圾输入。
用户年龄必须在18岁以上。这个验证是一个业务逻辑。业务假设输入的格式或范围总是正确的,它所要做的就是检查你是否被允许购买啤酒。
也许这个问题有点白痴,因为在业务层可以保证一切,但我不知道是否应该努力将这种保证带到业务逻辑层。
示例:
我在 ASP.NET 应用程序中有一个业务逻辑,用户只有在登录后才能访问产品列表的第二页。在 ASP.NET 应用程序中,WebSecurity 采用关心用户登录,所以我不能在业务层调用 WebSecurity 方法。我该如何处理它?仅在 UI 层保留此法则?
将 WebSecurity 调用放入您的业务逻辑中是错误的,正确的。然而,在您的控制器中使用 WebSecurity 调用并没有错。
在处理产品列表分页的操作中,您可以检查用户是否已登录,如果他们试图查看产品首页以外的任何内容,则将他们重定向到登录页面。
这个问题可以关闭以征求意见,因为有不止一种方法可以做你想做的事。例如,使用自定义 AuthorizeAttribute。
听起来您可能需要在业务层中使用更多业务逻辑来 return 基于一些额外参数的信息,例如
public List<Products> GetProductList(bool isAuthenticated = false)
{
}
然后您可以根据用户是否登录
从UI传递正确的值业务逻辑是一个宽泛的术语,很容易使开发人员混淆他们所谈论的逻辑类型。人们认为"if its a client requirement then it must be a business logic"。
应用程序逻辑 - 这些是专门为应用程序制作的逻辑种类。他们确保应用程序顺利运行,例如过滤掉垃圾输入。
- UI 输入验证,就像电子邮件应该始终看起来像 user@domain.com
- 应用程序安全,登录。
业务逻辑 - 这些逻辑来自问题域。这些是 现实世界 的业务规则。
- 如果能只谈规则,不提申请,那还是不错的人选。
例子
这是一个简单的练习:以下项目是对用户年龄的验证。找出哪个属于应用逻辑或业务逻辑。
- 年龄应始终为数字,并且在 1 到 100 之间。
- 用户的年龄必须为 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 到 100 之间。 - 此验证是一个应用程序逻辑。确保用户输入的质量是应用程序的工作。没有垃圾输入。
用户年龄必须在18岁以上。这个验证是一个业务逻辑。业务假设输入的格式或范围总是正确的,它所要做的就是检查你是否被允许购买啤酒。