В нашей компании мы создаем веб-API, используя синхронные взаимодействия с базой данных, используя хранимые процедуры. Я недавно прочитал документы Microsoft, в которых говорилось, что асинхронные API должны быть по умолчанию (я оставлю теорию). Я также знаю, что если асинхронность не реализована правильно, вы получите метод синхронизации + дополнительные издержки.
Мои вопросы:
- Является ли мой адаптированный код на самом деле асинхронным?
- Если нет, то как я могу сделать его асинхронным?
- Есть ли способ проверить, является ли этот код асинхронным?
Оригинальный код:
public class EventsController : ApiController
{
EventCapturingToolDBEntities _db = new DBEntities();
IhttpActionResult GetProjectsByUserId(int userId)
{
results = _db.getProjectsByUserId(userId).AsQueryable.ToList(); //Stored procedure generated by EF after database first approach
var processResults = //resultsprocessing
return Ok(processResults)
}
}
Адаптированный код:
public class EventsController : ApiController
{
private EventCapturingToolDBEntities _db = new DBEntities();
public async Task<IhttpActionResult> GetProjectsByUserId(int userId)
{
var results = await _db.Database
.SqlQuery<getProjectsByUserId_Result>("getProjectsByUserId @p0", userId).ToListAsync(); //Class generated by EF as part of the stored procedure
var processResults = //resultsprocessing
return Ok(processResults)
}
} //Is this async?