C# 当控制器已经在ASP.NET核心中使用异步时,服务中的方法也必须是异步的吗?
我对ASP.NET核心中的异步编程非常陌生。我已经为我的checktoken功能提供了服务和控制器。这是我在我的身份验证服务中的方法:C# 当控制器已经在ASP.NET核心中使用异步时,服务中的方法也必须是异步的吗?,c#,asp.net,multithreading,asp.net-core,asynchronous,C#,Asp.net,Multithreading,Asp.net Core,Asynchronous,我对ASP.NET核心中的异步编程非常陌生。我已经为我的checktoken功能提供了服务和控制器。这是我在我的身份验证服务中的方法: public AppUser CheckToken(string token) { if (token == null || string.IsNullOrWhiteSpace(token)) throw new CustomUnauthorizedException("Unauthorized", "You are not author
public AppUser CheckToken(string token)
{
if (token == null || string.IsNullOrWhiteSpace(token))
throw new CustomUnauthorizedException("Unauthorized", "You are not authorized to perform this action");
var user = _context.DbSet<AppUser>().Query.FirstOrDefault(x => x.TOKEN == token);
if (user == null)
throw new CustomUnauthorizedException("Unauthorized", "You are not authorized to perform this action");
return user;
}
[HttpGet("{Id}")]
public async Task<ActionResult<IEnumerable<Follow>>> GetFollows([FromHeader]string token, long Id)
{
var user = _authService.CheckToken(token);
return await _context.DbSet<Follow>().Query.Where(x => x.Id == Id && x.UserId ==
user.UserId).ToListAsync();
}
public-AppUser检查令牌(字符串令牌)
{
if(token==null | | string.IsNullOrWhiteSpace(token))
抛出新的CustomUnauthorizedException(“未经授权”,“您无权执行此操作”);
var user=_context.DbSet一般来说,任何I/O代码都应该在ASP.NET核心应用程序中异步完成。这包括所有数据库查询
ASP.NET上的异步代码实际上会使每个请求的运行速度稍慢,但它也会减少应用程序使用的线程数,从而允许应用程序处理更多的同时请求。一般来说,任何I/O代码都应该在ASP.NET核心应用程序中异步执行。这包括所有数据库查询
ASP.NET上的异步代码实际上会使每个请求的运行速度稍慢,但它也会减少应用程序使用的线程数,从而使应用程序能够处理更多的同时请求。这取决于,如果您想处理在服务中获得的对象,是否要将它们写入redis缓存,例如n这将是异步的。如果您只使用服务加载/保存内容,而不将它们存储在其他地方,则不需要。我自己喜欢验证我的对象,因此我的服务方法主要是异步的。因此,当我使用异步twices时,这不是一个问题?一个用于服务,一个用于控制器?不,这很好,但如果您真的需要想知道吗,还有基于性能的问题,你将不得不对这个问题进行基准测试很多人很早就对async
/await
感到困惑。async
所做的一切,实际上就是让你在这个方法中编写await
。所有await
所做的就是等待已经实现的异步从别处开始,没有阻塞。这取决于,如果你想处理你在服务中得到的对象,比如在redis缓存中写入它们,那么这样做的动作是异步的。如果你只是用服务加载/保存东西,而不将它们存储在其他地方,就不需要了。我自己喜欢验证我的objects所以我的服务方法大部分是异步的。所以当我使用异步twices时,这不是一个问题?一个用于服务,一个用于控制器?不,这很好,但是如果你真的想知道,也基于性能,你将不得不对这个问题进行基准测试。很多人很早就对异步/等待感到困惑sync
实际上是让您在该方法中写入await
。所有await
所做的就是等待已在其他地方启动的异步操作,而不阻塞。