Service 域驱动设计中的服务

Service 域驱动设计中的服务,service,domain-driven-design,repository-pattern,Service,Domain Driven Design,Repository Pattern,我对DDD中的服务有点困惑 首先。为什么服务总是表示为接口?这是规定吗 为什么服务只包含一个方法?有时在单个类中实现相关方法是有意义的 我是否必须为每个存储库提供服务?我一定是做错了什么,因为我发现自己在为CRUD操作提供服务 例如,我有一个带有常用方法的存储库。如何控制对存储库中持久化对象的访问?我倾向于使用多种阅读方法来提供服务。这些服务可以检查用户角色,然后决定用户是否可以使用这些对象。我觉得我的设计有点不好。我想你说的是域服务。DDD中还有其他类型的服务,如应用程序服务和基础设施服务 首

我对DDD中的服务有点困惑

首先。为什么服务总是表示为接口?这是规定吗

为什么服务只包含一个方法?有时在单个类中实现相关方法是有意义的

我是否必须为每个存储库提供服务?我一定是做错了什么,因为我发现自己在为CRUD操作提供服务


例如,我有一个带有常用方法的存储库。如何控制对存储库中持久化对象的访问?我倾向于使用多种阅读方法来提供服务。这些服务可以检查用户角色,然后决定用户是否可以使用这些对象。我觉得我的设计有点不好。

我想你说的是域服务。DDD中还有其他类型的服务,如应用程序服务和基础设施服务

首先。为什么服务总是表示为接口?是 这是规定吗

不,这不是规则。仅在需要时创建接口抽象

为什么服务只包含一个方法?有时候,这样做是有道理的 在单个类中实现相关方法

具有单个方法的服务可以被认为是实现单个操作-单个用例。如果在一个对象中封装多个操作是合理的,那么这也是可以接受的。然而,将多个职责合并到一个类中往往会导致违反SRP

我是否必须为每个存储库提供服务

不是。存储库已经是一种服务了。更具体地说,存储库实现可以看作是一种基础设施服务


应用程序服务调用存储库以实现某些用例。它委托给域实体,并协调给定操作可能需要的其他服务。请看一个各种服务交互的示例。

我假设您谈论的是域服务。DDD中还有其他类型的服务,如应用程序服务和基础设施服务

首先。为什么服务总是表示为接口?是 这是规定吗

不,这不是规则。仅在需要时创建接口抽象

为什么服务只包含一个方法?有时候,这样做是有道理的 在单个类中实现相关方法

具有单个方法的服务可以被认为是实现单个操作-单个用例。如果在一个对象中封装多个操作是合理的,那么这也是可以接受的。然而,将多个职责合并到一个类中往往会导致违反SRP

我是否必须为每个存储库提供服务

不是。存储库已经是一种服务了。更具体地说,存储库实现可以看作是一种基础设施服务

应用程序服务调用存储库以实现某些用例。它委托给域实体,并协调给定操作可能需要的其他服务。看一看各种服务交互的示例