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