服务层的目的

时间:2010-02-19 10:11:59

标签: service-layer

我认为服务层的目的包括以下内容是否正确?

  • 稀疏域模型(即某些函数的移动,如缓存,实例化)
  • 减少域模型的依赖关系
  • API最小化

3 个答案:

答案 0 :(得分:18)

传统上(当不使用域驱动设计时)服务层或称为“业务层”的是您为应用程序编写所有业务逻辑的地方。因此,例如在处理提供银行贷款的应用程序中,服务层是代码所在的位置,决定是否应该提供某种贷款。 显然,服务层需要一些关于贷款申请人的信息才能决定她的可信度。要检索此信息,业务层将调用“数据”或“存储库”层,该层处理将信息提取并存储到数据库中。

服务层不处理持久性或其他基础设施问题。

如果你的设计是域驱动的,那么anthares的回答是正确的。

答案 1 :(得分:14)

就域驱动设计而言,域服务层用于无法在域对象的上下文中定义的操作。例如,如果您有一个对象CreditCard,您的服务层中的合适操作将是发行新的信用卡。

在更大的应用程序中使用模式Anemic Domain Models,其中域对象仅用作数据容器,整个业务逻辑在您的域服务层中(这有时被称为反模式,但可能非常有用在大解决方案中,添加另一个抽象层)。

在不同的解决方案体系结构和模式中,服务层可能有不同的目的。

答案 2 :(得分:4)

服务层顾名思义提供的服务并非直接由任何其他域对象负责。

服务层还有助于解除责任。服务层构成了数据库/持久层和客户/ UI / Web层之间的中间部分。

正确设计服务层允许从任何客户端使用它,无论是Web客户端还是Web服务(SOA)或移动设备。