asynchronous - 在同步或异步调用 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 等)时生成的默认身份验证/授权表有人可以让我知道我应该使用两种方法中的哪一种(在异步或同步之间)方法声明?
解决方案
在一般情况下,您应该使用可用的异步 API。这将在服务器端产生更大的可扩展性,因为异步将允许调用请求线程在异步操作正在进行时用于其他请求。
在某些特定情况下,本指南不适用。例如,如果您正在调用通用异步 API(如Stream.ReadAsync
),但您知道实现实际上是同步的(如MemoryStream
)。但总的来说,如果有一个异步 API,那么这就是你应该使用的。
推荐阅读
- java - 如何使用java在txt中添加新行,并且没有空格
- javascript - 有没有办法加入数组,但有编号?
- qt - qml - 引用顶部。
不能从 ListView 工作? - javascript - 使用 keydown 短暂发生更改,然后消失
- python - AttributeError:写入文件时“NoneType”对象没有属性“get”
- javascript - form.io 如何在模糊上触发自定义验证?
- ruby-on-rails - 运行 graphQL 突变的正确方法是什么?
- python - 400 错误请求:无法解码 JSON 对象;PUT 请求(Flask)
- java - 我想按顺序打印薪水最后一个称为安排的函数必须完成这项工作,而不是代码正在工作
- reactjs - 使用带有 React-Scripts 版本 3.4.1 的 Create React App 代理多个 API 请求