考虑:
用例层定义了一个接口(interface)
public interface IGeocoder
{
Coordinate GetCoordinate(Address address);
}
Coordinate
和 Address
是在域层(即 Uncle Bob 行话中的实体层)中定义的值对象。显然,用例(交互器)构造了 Address
并将其传递给 IGeocoder
,期望返回一个 Coordinate
。
这会违反任何整洁架构规则吗?我是否应该改为通过接口(interface)传递 DTO,以便服务的实际实现不负责生成域实体?或者这样可以吗?
请注意,我看不出这与存储库(实体网关)之间有任何区别,后者的接口(interface)也将在用例层中定义,但在周围的接口(interface)适配器层中实现:
public interface IRestaurantRepository
{
// ...
}
最佳答案
谁负责基础设施服务的实现?是同一个团队吗?然后像存储库一样处理它应该没问题;直接返回域实体。 它属于不同的团队吗?然后创建边界并传递专用 DTO 可能会有所帮助,因为它会减少耦合。
关于c# - 基础设施服务能否返回 Bob 大叔的 The Clean Architecture 中的领域实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63393006/