c# - 基础设施服务能否返回 Bob 大叔的 The Clean Architecture 中的领域实体?

标签 c# domain-driven-design clean-architecture onion-architecture

考虑:

用例层定义了一个接口(interface)

public interface IGeocoder
{
    Coordinate GetCoordinate(Address address);
}

CoordinateAddress 是在域层(即 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/

相关文章:

c# - 字典的高运行时间。添加大量项目

c# - WPF MVVM 导航 View

architecture - 我的身份服务器应该拥有用户配置文件吗?

android - 在 Jetpack Compose 中管理状态

c# - 如何在 Roslyn 中加载解决方案?

domain-driven-design - EventSourced Saga实现

domain-driven-design - 我应该始终使用服务,还是可以直接使用存储库?

android - 当 2d 数组元素的变量在 Compose with Clean Architecture 中发生变化时重新组合

android - 道用例。 MVVM还是Clean Architecture反模式?

c# - UI 线程正在阻止调用 COM 对象的后台线程