Слайд 2Постановка задачи
Использование объекта ViewState
Использование объекта SessionState
Проблема создания экземпляра HttpApplication

Слайд 3Постановка задачи
Обновляемые элементы управления передаются в виде HTML обрамленного JSON
Для обработки запросов

используется класс Web.UI.Page или его наследники
Отображение элементов управления распределено по времени (в несколько этапов)
Слайд 4Использование объекта ViewState

Слайд 5Использование объекта ViewState

Слайд 6Использование объекта SessionState

Слайд 7Использование объекта SessionState
Отказаться от использования
Реализация собственного SessionState
Прерывание текущих запросов

Слайд 8Использование объекта SessionState

Слайд 9Использование объекта SessionState
Отмена обработки события
Асинхронное событие
public delegate void AsyncEventDelegate(EventArgs e);
public void

OnAsyncEvent(){
Thread thread = new Thread(new ThreadStart(OnEvent));
thread.CurrentCulture = Thread.CurrentThread.CurrentCulture;
thread.Start();
while(!IsCompleted){
if(!HttpContext.Current.Response.IsClientConnected){
thread.Abort();
HttpContext.Current.Response.End();
return;
}
Thread.Sleep(10);
}
}
private void OnEvent(){
HttpContext.Current = context;
asyncEvent(args);
IsCompleted = true;
}
Создание события
protected override void OnInit(EventArgs e)
{
new AsyncEventWrapper(new AsyncEventDelegate(base.OnInit), e, Context).OnAsyncEvent();
}
Слайд 10Создание экземпляра HttpApplication
HttpApplicationFactory.RecycleNormalApplicationInstance(HttpApplication app)
private void RecycleNormalApplicationInstance(HttpApplication app)
{
if (this._numFreeAppInstances

< 100)
{
lock (this._freeList)
{
this._freeList.Push(app);
this._numFreeAppInstances++;
return;
}
}
app.DisposeInternal();
}
Слайд 11Создание экземпляра HttpApplication
Неблагоприятные условия

Слайд 12Создание экземпляра HttpApplication
Критичные условия
