2013-11-07 3 views
0

У меня есть веб-приложение MVC действие контроллера вызывает код в бизнес-слой, который, в свою очередь, вызывает к API:Должен ли я использовать ожидание по возвращении?

public async Task<ActionResult> TestAction(){ 
    Info something = await businessLayer.GetInfoAsync(); 
    return View(something); 
} 

в бизнес-слое я GetInfoAsync определяется следующим образом:

public async Task<Info> GetInfoAsync(){ 
    return await myLib.GetAsync<Info>(); 
} 

в моей библиотеке я GetAsync определяется следующим образом:

public async Task<T> GetAsync(){ 
    //do something 
    var data = await aService.Get<T>(); 
    return data; 
} 

Как вы можете видеть выше метод GetInfoAsync просто делает вызов myLib.GetAsync и г выдает любое значение myLib.GetAsync. Могу ли я просто избавиться от асинхронного/ждет GetInfoAsync, и определит его следующим образом:

public Task<Info> GetInfoAsync(){ 
    return myLib.GetAsync<Info>(); 
} 

Спасибо!

ответ

1

Да, вы можете (и должны) избавиться от async/await в среднем слое.

Если ваш метод async равен await Выполнение одной задачи (и это все, что она делает), то async просто добавляет накладные расходы.

+0

спасибо! Кстати, ваши сообщения в блоге на асинхронном/ожидающем материале были очень полезны для меня. Большое спасибо ! –

Смежные вопросы