Avatar billede lasserasch Juniormester
13. december 2008 - 20:13 Der er 7 kommentarer og
1 løsning

ang. properties for et objekt.

Hejsa.

Hurtigt spørgsmål:

Jeg har et objekt som har en boolean property.

Ved Get for denne property laver jeg en forespørgelse ned i en SQL database for at finde den aktuelle værdi og retunerer så denne.

Det virker fint nok, men kan godt blive lidt performance krævende hvis jeg henter værdien mange gange inden for kort tid i min kode.

Tænkte på om der findes en eller anden smart måde at cache resultatet på i f.eks. 30 sek, således at den kun laver forespørgelsen 1. gang og de næste 30 sek så retunerer den cachede værdi.

Jeg tænkte på at lave det ved at have en intern datetime værdi i mit objekt som angiver hvornår der blev spurgt SQL databasen sidst.

Mit spørgsmål er om der findes nogle standard fremgangsmåder til at lave sådan nogle ting eller om det i det hele taget er en god ide. Så mere et generelt spørgsmål og ikke så meget konkret hjælp...

Mvh.
LAsse
Avatar billede laped Nybegynder
13. december 2008 - 20:35 #1
Du kunne gemme hele objektet i cachen - tjek evt HttpRuntime.Cache: http://msdn.microsoft.com/en-us/library/system.web.caching.cache(VS.80).aspx
Avatar billede lasserasch Juniormester
13. december 2008 - 20:58 #2
Jo, men det må ikke være web baseret kun. Objektet bruges nemlig både i windows applikationer og på en web grænseflade.


Mvh.
Lasse
Avatar billede montago Praktikant
13. december 2008 - 21:16 #3
problemet ligger lidt i : hvornår skifter din boolean ??

tænk hvis du 10.000 gange læser den som true, mens den har skiftet til false ?


hvor mange gange læser du den ?
hvor kritisk er den ?

kan du erstatte din Database med noget smartere ? (statisk/global variabel f.eks.)
Avatar billede aaberg Nybegynder
14. december 2008 - 19:12 #4
Her er en simpel måde at løse den på.

private DateTime propertyTimeOut = DateTime.MinValue;
private bool _myBoolProperty;

public bool MyBoolProperty
{
    get
    {
        if (DateTime.Now > propertyTimeOut)
        {
            propertyTimeOut = DateTime.Now.AddSeconds(30);
            _myBoolProperty = GetValueFromDatabase();
        }
        return _myBoolProperty;
    }
}
Avatar billede lasserasch Juniormester
11. oktober 2010 - 20:53 #5
smid svar for points. Først til mølle princippet
Avatar billede aaberg Nybegynder
11. oktober 2010 - 20:57 #6
svar
Avatar billede lasserasch Juniormester
11. oktober 2010 - 21:11 #7
Ja, jeg er ved at rydde op. Pinligt med så mange gamle åbne spørgsmål :-)
Avatar billede Syska Mester
11. oktober 2010 - 21:14 #8
haha :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester