我不是一个有经验的程序员。我总是浏览源代码来学习一些东西。 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);
}
最佳答案
来自 NLayer-Architecture 的文档:
这就是高级评论中的意思:
// 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
调用。参见:Should I be calling an AppService from another AppService?
关于asp.net - 同时使用 Application Service 和 Manager 的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54369969/