Некоторые проблемы внедрения Ajax технологии в ASP.NET проекты Методы их решения Правук Роман Разработчик программного обеспечения
Постановка задачи Постановка задачи Использование объекта ViewState Использование объекта ViewState Использование объекта SessionState Использование объекта SessionState Проблема создания экземпляра HttpApplication Проблема создания экземпляра HttpApplication
Постановка задачи Обновляемые элементы управления передаются в виде HTML обрамленного JSON Для обработки запросов используется класс Web.UI.Page или его наследники Отображение элементов управления распределено по времени (в несколько этапов)
Использование объекта ViewState
Использование объекта ViewState
Использование объекта SessionState
Использование объекта SessionState Отказаться от использования Реализация собственного SessionState Прерывание текущих запросов
Использование объекта SessionState
Использование объекта 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(); }
Создание экземпляра 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(); }
Создание экземпляра HttpApplication Неблагоприятные условия
Создание экземпляра HttpApplication Критичные условия
Вопросы