Какова цель использования службы приложений и менеджера? - PullRequest
0 голосов
/ 25 января 2019

Я не опытный программист. Я всегда просматриваю исходные коды, чтобы узнать некоторые вещи. 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 Ответ

0 голосов
/ 26 января 2019

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

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

Уровень домена ... выполняет [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 немного отличается.

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

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

  • ChatMessageManager
  • ProfileAppService
  • TenantDemoDataBuilder

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

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

...