我认为服务层的目的包括以下内容是否正确?
- 域模型的细化(即某些功能的移动,如缓存、实例化)
- 减少与领域模型的依赖关系
- API 最小化
传统上(当不使用领域驱动设计时)服务层,或者也称为“业务层”,是您为应用程序编写所有业务逻辑的地方。因此,例如在处理发放银行贷款的应用程序中,服务层是决定是否应发放特定贷款的代码所在的位置。显然,服务层需要有关贷款申请人的一些信息,才能对她的可信度做出决定。为了检索此信息,业务层调用“数据”或“存储库”层,它处理提取信息并将其存储到数据库中。
服务层不处理持久性或其他基础设施问题。
如果您的设计是领域驱动的,那么 anthares 的答案是正确的。
例如,在域驱动设计方面,域服务层用于无法在域对象的上下文中定义的操作。例如,如果您有一个对象 CreditCard,那么您的服务层中合适的操作将是发行一张新的信用卡。
在更大的应用程序中使用模式贫血域模型,其中域对象仅用作数据容器,整个业务逻辑在您的域服务层中(这有时被称为反模式,但在大型解决方案中可能非常有用,添加另一个抽象层)。
但是,在不同的解决方案架构和模式中,服务层可能有不同的目的。
顾名思义,服务层提供不直接由任何其他域对象负责的服务。
服务层还有助于解耦职责。服务层是数据库/持久层和客户端/UI/Web层之间的中间部分。
正确设计服务层允许从任何客户端使用它,无论是 Web 客户端、Web 服务 (SOA) 还是移动设备。