Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 12:21 03.06.24 
Компютри и Интернет
   >> .NET
Всички теми Следваща тема *Кратък преглед

Тема persistance  
Автор z_free (людоед)
Публикувано13.04.05 10:02



asp.net

Ако инициализирам някакъв списък (ArrayList) на Page_Load, което отнема много време, на следващия post back този списък изчезва, и трябва да се ре-инициализира. Мога ли по някакъв начин да му кажа да не се губи, за да избегна повтарянето на бавната операция?

За момента виждам, че мога да го вкарам в cache - това ли е стандартния подход към проблема? Не ми харесва това, защото може да изчезне от кеша когато ресурсите започнат да свършват.

PS: ArrayList-а ми е деклариран като private поле на WebForm-ата.

-------------
Special killer double trouble triple extra nicotine monster!
<P ID="edit">

Редактирано от z_free на 13.04.05 10:33.



Тема Re: persistanceнови [re: z_free]  
Автор BlackEarl ()
Публикувано13.04.05 11:05



private ArrayList myArray
{
get{return (ArrayList)Session["myArray"];}
set{Session["myArray"]=value;}
}

Може и в ViewState-а да го пазиш

Earls of black, flying high
Coming through the darkened sky

Редактирано от BlackEarl на 13.04.05 11:06.



Тема ахаа, 10qнови [re: BlackEarl]  
Автор z_free (людоед)
Публикувано13.04.05 11:14



Мерси много, открехна ме на новости :)

-------------
Special killer double trouble triple extra nicotine monster!


Тема Re: persistanceнови [re: z_free]  
Автор Survivor (X)
Публикувано13.04.05 11:14



Уффф, пак ли аз
Имаш няколко варианта:
1) ViewState. В никакъв случай не го препоръчвам. Всъщност тук-таме за малки обеми данни е безценно, но ако се прекали, става пълен кошмар. Щом инициализацията ти отнема прекалено много време, предполагам, че става въпрос за доста данни, така че това го изключвам.
2) Session. Тогава обаче (както се сещаш) всяка сесия ще има собствено копие на данните. В зависимост на натовареността на сървъра... кхъм, сещаш се
3) Application Cache. Най-оптимално, май.
4) Колкото и бавна да е инициализацията (освен ако не е обръщане към БД за извличане на 3 милиона записа един след друг), пак е за предпочитане пред всички предишни еквилибристики.
5) Помисли дали всички тези данни са ти необходими, как можеш да ги редуцираш, дали не е по-добре например в OnLoad да ги заредиш еднократно в XmlDocument и после да ги извличаш с XPath заявки (само идея, че сега съм на XML вълна ) и ей-такива работи.

но след безсънни дълги нощи станах силен и голям
и вече знам, че мога да се справя сам


Тема Re: persistanceнови [re: z_free]  
Автор Гypy (бенгбъс драйвър)
Публикувано13.04.05 11:23



Сесия, кеш, вюстейт или апликейшън. Ако е вюстейт отива при всеки клиента всеки път заедно с HTML-a и ако е примерно 100К става доста зле. Ако е в сесия, за всеки клиент се създава нова сесия с този обект, което е кофти ако обекта е един и същ.

Ако АррейЛиста ти е един и същ, без значение кой клиент се логва, моеш да ползваш апликейшън - тука има детайли.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconApplicationState.asp

--
Sometimes the sole purpose of your life is to serve as a warning to others.


Тема Re: persistanceнови [re: Гypy]  
Автор z_free (людоед)
Публикувано13.04.05 12:05



Става въпрос за списък с обекти, които са резултат от търсене на клиента. Ще идват от XML Web Service (данните ще са на DB) - уникални са за всеки клиент, и ми се струва, че сесията е нещото, което трябва да ползвам (ще проуча и XML варианта на Survivor).

PS: Още не съм започнал да го пиша, и се извинявам ако въпросите са rookie - ще гледам да не задавам тривиалности вече преди да съм си допрочел книгите

-------------
Special killer double trouble triple extra nicotine monster!

Редактирано от z_free на 13.04.05 12:09.



Тема Re: persistanceнови [re: z_free]  
Автор Гypy (бенгбъс драйвър)
Публикувано13.04.05 13:51



Ами това ми прилича подходящо за Cache. Понеже не може да си сигурен, кога Кеша е експирясал, мое да направиш нещо подобно на това:


private ArrayList GetData()
{

if (Cache["CachedData"] != null)
{
return (ArrayList) Cache["CachedData"];
}
else
{
ArrayList dataList = WebService.GetData();
Cache["CachedData"] = dataList;

return dataList;
}

}

И после да си взимаш данните само с GetData() метода.

ЕДИТ: Упс, не видях че трябва да е уникален листа спрямо клиента. Ами, тогава моеш да сложиш някакво UniqueID на клиента като ID на Cache или да не ме слушаш какви глупости говоря :)

--
Sometimes the sole purpose of your life is to serve as a warning to others.

Редактирано от Гypy на 13.04.05 13:54.




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.