ASP.NET flere brugere system

Tags:    asp.net

Hej alle.

På det seneste har jeg on-and-off arbejdet på et ASP.NET C# projekt. Det er en oversigt over de kunder som mit firma i øjeblikket har. Hvor informationer omkring kunderne bliver skrevet ind i en fil, og kan derefter læses i tabeller. På den måde får man et hurtigt overblik når man skal bruge det.

Mit spøgrsmål er følgende.
Når jeg har C# som codebehind i mit projekt. Hvordan sikre jeg så at hvis to brugere, loader siden på samme tid og de begge to aktivere codebehind samtidig. Bliver noget af koden for bruger #1 så eksekveret, men stopper når bruger #2 starter med at loade siden. Hvor bruger #1 så ikke får det forventet resultat. Som er den fulde side. Hvordan tager man højde for sådan noget? Håber det giver mening.

Tak på forhånd.



Jeg går ud fra det er fordi din kode ikke er trådsikker, det kan opnås på forskellige måder. En af dem er at låse den metoden hvor det går galt, så kun 1 af gangen for tilgang til metoden



Du har en codebehind som er koden der skal eksekveres på server-siden.
Altså to brugere går ind på www.ditdomain.dk.
Serveren opbygger så objektmodellen for alle ting på din side og aspx-elementer, udfører din codebehind (load, prerender etc) og leverer et færdigt resultat ud på brugeren browser.
Medmindre du har noget der er delt for alle brugere (fx static objekter) så vil de to brugere ikke dele noget og "blot" få bygget hver deres side selvstændigt. Når brugeren har fået sin side leveret så dropper serveren hele objektmodellen og den færdiggenererede side - medmindre du gør brug af caching.

Se eventuelt lidt mere på asp.net lifecycle

Lidt mere læsestof

Billedillustatioon

Hvis dit "problem" er at begge brugere læser fra samme fil, så burde du ikke få problemer da en læsning ikke bør låse for andre som en skrivning vil gøre.



Indlæg senest redigeret d. 06.09.2011 09:06 af Bruger #16651
Hej Laurits.

Så det ville sige. At min læsnings metode (den der læser fra filen) den låser ikke brugere.
Men min metode der skriver til filen låser automatisk metoden? Så kun en af gangen kan bruge metoden?
Ryger bruger nr #2 så i en kø eller? Så når bruger #1 er færdig kan bruger #2 skrive til filen eller noget.



Hej Cristian,

Når man har teksten "Mit spørgsmål er følgende" i sin tekst, hvorfor så specifikt vælge at tråden ikke skal være et spørgsmål? :)

Mvh.

Kasper (TSW)



Hej Laurits.

Så det ville sige. At min læsnings metode (den der læser fra filen) den låser ikke brugere.
Men min metode der skriver til filen låser automatisk metoden? Så kun en af gangen kan bruge metoden?
Ryger bruger nr #2 så i en kø eller? Så når bruger #1 er færdig kan bruger #2 skrive til filen eller noget.


Har du eventuelt noget kode at vise?

Men ja når du starter med at skrive i filen bliver den låst, indtil du er færdig og frigiver din resource igen (filen frigives ved fx streamwriter.close() eller lign.).
Så hvis din bruger nr 2 (B2) kommer og forsøger at skrive til filen imens bruger 1 (B1) er ved at skrive til den, vil B2 få en exception der siger han ikke har adgang til data.
Men lød på din forklaring som om at der kun skulle læses?
Har du nogle skrivninger til denne fil imens brugere læser den? For det kan måske løses ved at du gradvist kopierer denne fil til en anden fil som alle så læser fra. Så vil du minimere antallet af skrivninger til denne fil hvis det laves korrekt.



Indlæg senest redigeret d. 06.09.2011 12:29 af Bruger #16651
Hej Kasper.

Jeg valgte diskussion :p på grund af, at dette ikke i øjeblikket er et problem som jeg har. Så jeg er bare ude efter info i øjeblikket. Som jeg mener jeg har fået nogle gode svar på :D
Jeg har ikke problemet i øjeblikket med flere brugere fordi systemet ikke er live og derfor kun har mig som bruger :p

Hej Laurits.
Ok, det giver jo god mening. Ja jeg har på et tidspunkt hvor jeg skriver til en fil. Dette er en metode jeg har lavet som giver nogle brugere mulighed for at rette i informationerne igennem deres browser. Dette er så en temp fil som derefter bliver kopiret over i main filen, og derefter bliver de ny ændringer vist for brugerne.

Jeg takker for de gode svar, og nu har jeg noget at arbejde med når jeg skal løse mit flere brugere "problem".



Hej Cristian,

Okay fair nok, men det er egentlig lidt ligegyldigt om du har problemet nu eller ej. Hvis du stiller et spørgsmål, og det gør du jo tydeligvis, så bør du også oprette det som et sådant. Der kan komme nogle rigtigt gode svar, som du og andre brugere så kan stemme op, og når der så kommer nogen forbi tråden som HAR problemet, ja så vil de hurtigt kunne se hvilke svar der er bedst :)

Mvh.

Kasper (TSW)



det kan du tro jeg gør næste gang ;)



t