Я заметил несколько мест на своем веб-сайте, где я говорю с сторонними ресурсами. Я видел несколько рекомендаций (например, MSDN Magazine: Asynchronous Pages в ASP.NET 2.0), что такой код должен выполняться асинхронно, хотя бы для того, чтобы избежать насыщения пула потоков. Предположим, что я ввожу несколько таких функций:
public static void LoadThirdPartyInfo(/*Arguments*/)
{
Page page = (Page) HttpContext.Current.CurrentHandler;
if(page.IsAsync)
{
page.AddOnPreRenderCompleteAsync( //...
}
else
{
//Oops...
}
}
На данный момент я мог:
1. Удалите (или сохраните) предложение else и постарайтесь быть осторожным только для его вызова на страницах Async, возможно, добавив некоторые протоколирования, чтобы обнаружить, когда это сделано неправильно.
2. То же, что и # 1, но используйте Async="True"
на новых страницах.
3. То же, что и # 1, но используйте Async="True"
на всех страницах.
Я не уверен, есть ли риск ввести ненужные директивы Async. Кажется, они ничего не сломают.
Вопрос: Можно ли вводить ложные асинхронные директивы?
Примечание. Я использую.Net 4.0, но я открыт для ответов, нацеленных на.Net 4.5.
Простое добавление Async = true к странице без активации какого-либо из кодов, связанных с асинхронным кодом, прекрасно. Это приведет к незначительному штрафу. Штраф обычно незначителен, но может быть хорошей идеей перфорировать ваш сайт снова после любых изменений, которые вы делаете, чтобы удостовериться, что ничего не изменилось.