代码之家  ›  专栏  ›  技术社区  ›  Fabricio Rodriguez

Async是否在这种情况下提供了性能改进?(.NET核心2.1 Web API)

  •  -1
  • Fabricio Rodriguez  · 技术社区  · 7 年前

    我有一个.NET核心2.1 Web API。我的许多控制器操作不是异步的,我正在考虑让它们成为异步的。但我想知道,在至少简单的场景中,它是否会有任何性能改进?以一个非常基本的动作为例:

    // GET: api/People/5
    [HttpGet("id")]
    public Person GetPerson([FromRoute] int id)
    {
        return _context.People.FirstOrDefault(p => p.Id == id);
    }
    

    如果我把它转换成:

    // GET: api/People/5
    [HttpGet("id")]
    public async Task<Person> GetPerson([FromRoute] int id)
    {
        return await _context.People.FirstOrDefaultAsync(p => p.Id == id);
    }
    

    当然,至少在这个非常基本的示例中,这两个操作将在同一时间段内执行?我的意思是,即使对非异步操作方法有两个同时调用,IIS/Kestrel也会承担创建它的第二个实例的任务,以允许两个实例同时执行?我的意思是,这不像是因为一个客户机调用了这个API端点,现在所有其他客户机都必须等待它完成,然后才能提供服务,因为它不是异步的?

    2 回复  |  直到 7 年前
        2
  •  4
  •   Chris Pratt    7 年前

    FirstOrDefault