Въпрос за най-добри практики на източник на данни

Това вероятно не е труден проект, но не съм сигурен кой е най-добрият начин да се справя с него.

Имам ASP.Net страница, която трябва да направи запитване към db за някаква информация (списък от около 12 имейл адреса), които се използват в цялото приложение с една страница (основно набор от 8 бутона, всеки от които поставя запис в друг DB таблица, която включва съобщение [различно за всеки бутон] и имейл адреса [от първия db], до който трябва да бъде изпратено съобщението).

Списъкът с адреси се променя рядко. В кой момент моето приложение трябва да направи заявка в базата данни за адресите? Да го правя с натискането на бутона изглежда като загуба, тъй като ще правя една и съща заявка и ще получавам едни и същи резултати отново и отново. Мислех да отворя своя източник на данни и да използвам SqlDataReader и да съхраня списъка с имейл адреси в низов масив, но къде е най-доброто място да направя това, така че данните да се поддържат, но да не се задават многократни заявки (както може да разберете , не съм добър в ASP и все още не съм разбран какъв е животът на променливите - приложение, сесия или просто докато страницата се обработва).

Всяка помощ се оценява.

Благодаря

Адам


person Adam Rosen    schedule 02.03.2011    source източник


Отговори (4)


Използвайте Кеш. Потърсете внедряване на метода GetProductData() в тази страница

person amit_g    schedule 02.03.2011
comment
Благодаря ви (и на други, които ме насочиха в тази посока). Ще прочета малко кеша и ще тръгна по този път. - person Adam Rosen; 02.03.2011

Във вашия слой данни поставете резултатите от заявката в кеш.

В метода първо проверявате дали записът в кеша съществува, ако не, извиквате DB и попълвате кеша с резултатите. Ако го направи, връщате кешираните стойности.

person Oded    schedule 02.03.2011

Трябва да разгледате използването на кеша.

person Achilles    schedule 02.03.2011

Кешът най-вероятно е това, от което се нуждаете: http://msdn.microsoft.com/en-us/library/6hbbsfk6.aspx

Кратката версия е, че можете да поставите предмет там и да зададете условия за изтичане. Като например да изтече след фиксиран период от време, след като измине определен период от време без достъп до него, когато се промени друга стойност в кеша или когато основните данни в базата данни се променят.

Обикновено обгръщам кеширането си в свойства/методи, които ще се опитат да получат стойността от кеша, ако е налице, и след това да се върна в базата данни, ако не е (или никога не е била четена преди или е изтекла).

person Rozwel    schedule 02.03.2011