我不是一个有经验的程序员。我总是浏览源代码来学习一些东西。 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.
    // ...
}

请注意,AppServiceManager 中的关注点(和结果操作)略有不同。
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/

    10-12 16:33