Слайд 2Постановка задачи
Использование объекта ViewState
Использование объекта SessionState
Проблема создания экземпляра HttpApplication
![Постановка задачи Использование объекта ViewState Использование объекта SessionState Проблема создания экземпляра HttpApplication](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-1.jpg)
Слайд 3Постановка задачи
Обновляемые элементы управления передаются в виде HTML обрамленного JSON
Для обработки запросов
![Постановка задачи Обновляемые элементы управления передаются в виде HTML обрамленного JSON Для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-2.jpg)
используется класс Web.UI.Page или его наследники
Отображение элементов управления распределено по времени (в несколько этапов)
Слайд 4Использование объекта ViewState
![Использование объекта ViewState](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-3.jpg)
Слайд 5Использование объекта ViewState
![Использование объекта ViewState](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-4.jpg)
Слайд 6Использование объекта SessionState
![Использование объекта SessionState](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-5.jpg)
Слайд 7Использование объекта SessionState
Отказаться от использования
Реализация собственного SessionState
Прерывание текущих запросов
![Использование объекта SessionState Отказаться от использования Реализация собственного SessionState Прерывание текущих запросов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-6.jpg)
Слайд 8Использование объекта SessionState
![Использование объекта SessionState](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-7.jpg)
Слайд 9Использование объекта SessionState
Отмена обработки события
Асинхронное событие
public delegate void AsyncEventDelegate(EventArgs e);
public void
![Использование объекта SessionState Отмена обработки события Асинхронное событие public delegate void AsyncEventDelegate(EventArgs](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-8.jpg)
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
![Создание экземпляра HttpApplication HttpApplicationFactory.RecycleNormalApplicationInstance(HttpApplication app) private void RecycleNormalApplicationInstance(HttpApplication app) { if (this._numFreeAppInstances](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-9.jpg)
< 100)
{
lock (this._freeList)
{
this._freeList.Push(app);
this._numFreeAppInstances++;
return;
}
}
app.DisposeInternal();
}
Слайд 11Создание экземпляра HttpApplication
Неблагоприятные условия
![Создание экземпляра HttpApplication Неблагоприятные условия](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-10.jpg)
Слайд 12Создание экземпляра HttpApplication
Критичные условия
![Создание экземпляра HttpApplication Критичные условия](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/476651/slide-11.jpg)