业务逻辑与服务层


9

我读了这个答案:https : //softwareengineering.stackexchange.com/a/234254/173318请更正我的理解。

业务规则是指现实世界中的业务步骤列表(无代码)。

业务逻辑是指将业务规则转换为代码的过程,并将这些代码束/种类称为“业务逻辑”。

服务层的用途是什么?如果我读了这个答案,听起来与业务逻辑没什么不同https://stackoverflow.com/a/4817935/4190539

服务层是业务逻辑和存储库相遇的地方吗?


1
“服务层”是一个通用术语,可以是或包含您喜欢的任何内容。您引用的SO问题是关于“ ASP.NET MVC中的服务层”的讨论,它使该术语更加具体。您是否有意谈论后者?还是您只是错过了差异?
布朗

那就是我到目前为止所得到的。但我很想听听您对它们的解释。
卡卡西

Answers:


11

“服务层”是一个体系结构术语。它指的是系统的一部分,位于多层体系结构的中间,在用户交互层之下但在数据访问层之上。

可以在服务层中实现业务逻辑,从而执行业务规则。

但是请注意,在某些情况下,业务逻辑最终会出现在其他层中。例如,为了改善用户体验,在用户交互层中强制执行了一些业务规则(例如,用Javascript编写的验证器,以便您无需往返服务器即可对其进行检查)。在这种情况下,服务层通常将复制实施。

其他业务规则只能在数据库层执行,例如,在存在并发问题(设想一个您可以在其中签出图书馆书的应用程序)或性能问题(设想一个程序来计算繁忙的销售员的年度佣金,基于复杂的费用结构)。


如果我有服务目录并包含类作为放置业务逻辑并注入存储库,其他服务和验证的地方,那还好吗?
卡卡西

是的,将包括数据访问在内的其他服务注入服务层是很自然的-它必须以某种方式存储数据,并且如果编写得当,它本身就不知道该怎么做。
约翰·吴

仓库中不能包含任何业务代码,对吗?这意味着必须从验证,过滤器或任何其他strijg操作(例如strtolower)中清除存储库?
卡卡西

不一定(我已经在您的帖子中为您提供了两个示例),但是将尽可能多的业务逻辑移入服务层是一个好习惯。
约翰·吴

哦,好的,顺便说一句,您有我可以看到的存储库模式代码吗?
卡卡西
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.