繁体   English   中英

具有存储库和服务的干净架构

[英]Clean Architecture with Repositories and Services

我正在实施一个干净的架构。 我有四个项目:域、应用程序、基础设施和演示文稿。

我在基础架构中定义了存储库实现。 我在域中有存储库接口。

我也有注入相应存储库的服务。 例如,学生服务。 我将 StudentRepository 注入 StudentService。 我的问题是,IStudentService 接口应该放在哪里? 它应该与接口 IStudenRepository 一起驻留在域中吗? 还是放在应用程序中更合适?

我目前在应用程序项目中有我的 IStudentService。 但我的理解是松散耦合并将所有接口放在域项目中。 我的理解正确吗?

将接口定义放置在清洁架构应用程序的域层中通常是一种很好的做法。 这是因为领域层代表应用程序的核心业务逻辑,而接口是定义该逻辑契约的重要部分。 通过将接口定义放在领域层中,您可以确保领域与应用程序其他层中的实现细节解耦。

例如,在您的情况下,IStudentRepository 接口将在域层中定义,因为它表示 StudentService 如何与学生数据存储交互的合同。 IStudentService 接口也将在域层中定义,因为它表示与学生相关的业务逻辑的契约。

通过将这两个接口都放在领域层中,您可以确保领域与应用程序其他层中的实现细节分离。 这使得在不影响应用程序其余部分的情况下更容易更改这些接口的实现。

总之,将接口定义放在干净架构应用程序的域层中通常是一种很好的做法,以确保松散耦合和关注点分离。

要实施 Clean Architecture,请按照以下步骤操作:

领域项目:

  • 域应该只有实体,例如“学生”实体。

申请项目:

  • 应用程序应该有接口和服务以及服务的实现。

基建项目:

  • 基础设施应该有应用程序和 DbContext class 中定义的接口的实现。

演示文稿应该有用户界面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM