在同步或异步调用 asp.net 核心 Blazor 方法之间进行选择

Choosing between calling asp.net core blazor methods synchronously or asynchronously

我在 Blazor 中有一个 CRUD 应用程序,它只是从 table 中获取分配列表,并且有一个用于数据访问层的 AssignmentReminderService,它有一个方法(异步版本)

    public async Task<AssignmentReminder> AddAssignment(AssignmentReminder assignment)
    {
        _context.assignments.Add(assignment);
        await _context.SaveChangesAsync();
        return assignment;
    }

我也可以用同步代码调用方法:

    public  AssignmentReminder AddAssignment(AssignmentReminder assignment)
    {
        _context.assignments.Add(assignment);
         _context.SaveChanges();
        return assignment;
    }

现在它只是一个从本地服务器(也可以托管在云上)访问的数据库,只有一个分配 table 和生成的默认 authentication/authorization tables当一个人使用个人用户帐户时(aspnetusers、aspnetroles 等) 有人可以让我知道我应该使用两种方法中的哪一种(在异步或同步之间)方法声明吗?

在一般情况下,如果可用,您应该使用异步 APIs。这将在服务器端带来更大的可扩展性,因为异步将允许调用请求线程在异步操作进行时用于其他请求。

在某些特定情况下此指南不适用。例如,如果您正在调用通用异步 API(如 Stream.ReadAsync),但您知道实现实际上是同步的(如 MemoryStream)。但一般来说,如果有异步 API,那么你应该使用它。

which of the two ways I should use (between async or sync) method declaration?

第一个。

这里的稀缺资源是线程。你想减少它们的数量,第一种方法通过释放线程来做其他工作来实现。

在第二种方法中,线程在 I/O 操作期间被挂起。您将需要更多线程来处理相同数量的请求。

所以使用异步 I/O 可以让同一个硬件同时处理更多的请求。

你应该清楚你说的blazor版本,因为在客户端使用async方法和在服务端使用是不一样的。