gpt4 book ai didi

asp.net - 同时使用 Application Service 和 Manager 的目的是什么?

转载 作者:行者123 更新时间:2023-12-02 09:09:18 25 4
gpt4 key购买 nike

我不是一个经验丰富的程序员。我总是浏览源代码来学习一些东西。 ASP.NET 样板是我最喜欢的样板。昨天,我注意到有友谊应用服务(在服务/应用层)和友谊管理器(在业务/领域层)。我不明白为什么会有友谊经理。友情服务还不够?

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 上的文档:

The application layer ... perform[s] requested application functionalities. It uses Data Transfer Objects to get data from and return data to the presentation or distributed service layer. ...

The domain layer ... perform[s] business/domain logic. ...

在高级评论中,这意味着:

// 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com