Upload
webcrunch
View
461
Download
4
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Некоторые проблемы Некоторые проблемы внедрения внедрения Ajax Ajax технологии в технологии в ASP.NET ASP.NET проектыпроекты
Методы их решенияМетоды их решения
Правук РоманПравук РоманРазработчик программного обеспеченияРазработчик программного обеспечения[email protected]@AVIcode.com
www.rit2007.ru
Постановка задачиПостановка задачи Использование объекта Использование объекта
ViewStateViewState Использование объекта Использование объекта
SessionStateSessionState Проблема создания Проблема создания
экземпляра экземпляра HttpApplicationHttpApplication
www.rit2007.ru
Постановка задачиПостановка задачи
Обновляемые элементы управления передаются в виде HTML обрамленного JSON
Для обработки запросов используется класс Web.UI.Page или его наследники
Отображение элементов управления распределено по времени (в несколько этапов)
www.rit2007.ru
Использование объекта Использование объекта ViewStateViewState
www.rit2007.ru
Использование объекта Использование объекта ViewStateViewState
www.rit2007.ru
Использование объекта Использование объекта SessionStateSessionState
www.rit2007.ru
Использование объекта Использование объекта SessionStateSessionState
• Отказаться от использования
• Реализация собственного SessionState
• Прерывание текущих запросов
www.rit2007.ru
Использование объекта Использование объекта SessionStateSessionState
www.rit2007.ru
Использование объекта Использование объекта 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();
}
www.rit2007.ru
Создание экземпляра Создание экземпляра HttpApplicationHttpApplication HttpApplicationFactory HttpApplicationFactory..RecycleNormalApplicationInstance(HttpApplication app) RecycleNormalApplicationInstance(HttpApplication app)
private void RecycleNormalApplicationInstance(HttpApplication app)
{
if (this._numFreeAppInstances < 100)
{
lock (this._freeList)
{
this._freeList.Push(app);
this._numFreeAppInstances++;
return;
}
}
app.DisposeInternal();
}
www.rit2007.ru
Создание экземпляра Создание экземпляра HttpApplicationHttpApplicationНеблагоприятные условияНеблагоприятные условия
www.rit2007.ru
Создание экземпляра Создание экземпляра HttpApplicationHttpApplicationКритичные условияКритичные условия
www.rit2007.ru
Вопросы