也许这个问题是一个小白痴,因为一切都可以在业务层保证,但我不知道我是否应该努力把这种保证带到业务逻辑层。如何处理只能在UI中实现的业务逻辑?
例:
我有用户,如果他已经被记录只能够访问一个产品列表的第二页的ASP.NET应用程序的业务逻辑在ASP.NET应用程序的WebSecurity关心用户登录,所以我不能在业务层调用WebSecurity方法。我该如何处理?只有在UI层中保留这些法则?在你的业务逻辑
也许这个问题是一个小白痴,因为一切都可以在业务层保证,但我不知道我是否应该努力把这种保证带到业务逻辑层。如何处理只能在UI中实现的业务逻辑?
例:
我有用户,如果他已经被记录只能够访问一个产品列表的第二页的ASP.NET应用程序的业务逻辑在ASP.NET应用程序的WebSecurity关心用户登录,所以我不能在业务层调用WebSecurity方法。我该如何处理?只有在UI层中保留这些法则?在你的业务逻辑
业务逻辑是一个广义的术语,很容易混淆开发人员,他们说的是什么样的逻辑。人们认为“如果它的客户需求,那么它必须是一个业务逻辑”。
应用逻辑 - 这些是为应用专门制作的种类逻辑。他们确保应用程序顺利运行,例如过滤掉垃圾输入。
业务逻辑 - 这些类型的逻辑来自问题域。这些是真实世界业务规则。
例
下面是一个简单的练习:下面的项目是用户的年龄验证。找出哪一个属于应用程序逻辑或业务逻辑。
提示:如果客户试图购买啤酒时,收银员将永远不会问顾客的年龄是一个数字,或者如果它是1〜100
的范围内,在现实世界中,收银员是业务的一部分,并执行规则。它假设客户的年龄是正常的,而不是1000.
如果您通过身份验证,业务不关心。您是 那里做生意,这就是它
回答我的小运动:
年龄应该始终是数字,以及100在1 - 这验证了应用逻辑。应用程序的工作是确保用户输入的质量。没有垃圾输入。
用户年龄必须为18岁或以上。这个验证是一个商业逻辑。企业假设输入的格式或范围始终是正确的,只需检查您是否被允许购买啤酒。
把WebSecurity接听的话会有错的,正确的。然而,没有什么问题是在你的控制器中使用WebSecurity调用。
在与呼叫你的产品列表交易的操作,可以检查用户是否已登录并重定向到一个登录页面,如果他们试图查看比产品的第一页的任何其他。
这个问题很可能被关闭是开放的意见,因为有做你想做什么方法不止一种。例如,使用一个自定义的AuthorizeAttribute。
这只是一个例子。我想知道如何将只能在UI层实现的业务逻辑持久化到业务层。或者我应该担心这种业务逻辑只保留在UI层上? – GoldShip
我认为你会将业务逻辑与UI/UX混淆。真的,这不是一个业务规则。 –
听起来像你可能需要在业务层返回基于一些额外的参数信息,如
public List<Products> GetProductList(bool isAuthenticated = false)
{
}
更多的业务逻辑,那么你可以在正确的值传递从UI基于用户是否已经登录或不
你明白我问的是什么。这个例子到了我怀疑的地步。我看到数字1就像应用程序验证一样,但我的理解是,您的提示中说,像UI这样看到的收银员并不关心数字1的要求。我看到数字2是我必须保证的东西,因为如果我的生意是酒吧,我不能为18岁以下的人卖啤酒,或者我会入狱,而且很难理解像这样的东西,只是保证在应用程序逻辑。我是对还是不对?如果你不告诉我,我可以理解,但我需要改变我的观点。 – GoldShip
@GoldShip我已更新我的回答 – Yorro
谢谢!现在我对如何在项目中组织这些东西有了更好的了解。 – GoldShip