Какова цель использования службы приложений и менеджера?

Я не опытный программист. Я всегда просматриваю исходные коды, чтобы узнать некоторые вещи. ASP.NET Boilerplate - мой любимый. Вчера я заметил, что есть сервис приложений дружбы (на уровне сервиса / приложения) и менеджер дружбы (на уровне бизнеса / домена). Я не понял, почему есть менеджер дружбы. Служба дружбы не достаточно?

public interface IFriendshipAppService : IApplicationService
{
    Task<FriendDto> CreateFriendshipRequest(CreateFriendshipRequestInput input);

    Task<FriendDto> CreateFriendshipRequestByUserName(CreateFriendshipRequestByUserNameInput input);

    void BlockUser(BlockUserInput input);

    void UnblockUser(UnblockUserInput input);

    void AcceptFriendshipRequest(AcceptFriendshipRequestInput input);
}
public interface IFriendshipManager : IDomainService
{
    void CreateFriendship(Friendship friendship);

    void UpdateFriendship(Friendship friendship);

    Friendship GetFriendshipOrNull(UserIdentifier user, UserIdentifier probableFriend);

    void BanFriend(UserIdentifier userIdentifier, UserIdentifier probableFriend);

    void AcceptFriendshipRequest(UserIdentifier userIdentifier, UserIdentifier probableFriend);
}

1 ответ

Решение

Из документации по NLayer-Architecture:

Прикладной уровень... выполняет запрошенные функциональные возможности приложения. Он использует объекты передачи данных для получения и возврата данных на уровень представления или распределенного обслуживания....

Доменный уровень... выполняет [s] бизнес / доменную логику....

Вот что это значит в комментариях высокого уровня:

// IFriendshipManager implementation

public void CreateFriendshipAsync(Friendship friendship)
{
    // Check if friending self. If yes, then throw exception.
    // ...

    // Insert friendship via repository.
    // ...
}
// IFriendshipAppService implementation

public Task<FriendDto> CreateFriendshipRequest(CreateFriendshipRequestInput input)
{
    // Check if friendship/chat feature is enabled. If no, then throw exception.
    // ...

    // Check if already friends. If yes, then throw exception.
    // ...

    // Create friendships via IFriendshipManager.
    // ...

    // Send friendship request messages.
    // ...

    // Return a mapped FriendDto.
    // ...
}

Обратите внимание, что проблемы (и последующие действия) в AppService а также Manager тонко разные.

Manager предназначен для повторного использования AppService, другой Managerили другие части кода.

Например, IFriendshipManager может использоваться:

  • ChatMessageManager
  • ProfileAppService
  • TenantDemoDataBuilder

С другой стороны, AppService не должен звонить с другого AppService,

См.: Должен ли я вызывать AppService из другого AppService?

Другие вопросы по тегам