首页 > 解决方案 > 在同步或异步调用 asp.net core blazor 方法之间进行选择

问题描述

我在 Blazor 中有一个 CRUD 应用程序,它只是从表中获取分配列表,并有一个用于具有方法(异步版本)的数据访问层的 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;
    }

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

标签: asynchronousmethodsblazorsynchronous

解决方案


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

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


推荐阅读