【问题标题】:microservice folder structure微服务文件夹结构
【发布时间】:2020-01-06 10:48:02
【问题描述】:

微服务

  • 身份
    • API
    • 应用
      • 接口
        • IUserService.cs
      • 服务
        • UserService.cs
    • 数据
      • 命令处理程序
        • CreateUserCommandHandler.cs
      • 命令
        • CreateUserCommand.cs
      • 接口
        • IUserRepository.cs
      • 活动

按照这种方法,我无法将 IUserService 接口注入我的 CreateUserCommandHandler(循环引用)。 显然这不是正确的方法,你将如何重组这个文件夹组织?

public class CreateUserCommandHandler : IRequestHandler<CreateUserCommand, bool>
{
     private readonly IEventBus _bus;
     // private readonly IUserService _userService; cannot access this

      public CreateUserCommandHandler(IEventBus bus)
      {
          _bus = bus;
      }

      public Task<bool> Handle(CreateUserCommand request, CancellationToken cancellationToken)
      {
         _bus.Publish(new UserCreatedEvent(request.Name, request.Email));
          return Task.FromResult(true);
      }
}

【问题讨论】:

    标签: .net microservices


    【解决方案1】:

    处理程序类通常是应用程序项目的一部分。

    域实体不应与任何其他项目有任何依赖关系。它们应该被视为您项目的核心。他们的唯一职责是包装业务逻辑并确保他们的状态始终是一致的。

    服务可以指应用程序服务和域服务。域服务应该是域项目的一部分。 Domain vs application services

    我会将命令和事件类放在 API 项目中。

    因此,在您的情况下,Domain 项目将有一个 User 类,它包含用户的所有业务逻辑、表示持久性抽象的存储库接口以及最后一个能够协调多个用户实体之间的逻辑的用户域服务.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-05
      • 2013-04-19
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 2016-11-17
      • 1970-01-01
      相关资源
      最近更新 更多