14. november 2003 - 13:04Der er
6 kommentarer og 1 løsning
static metoder/variable i webservices
Hej folks,
jeg har følgende spørgsmål;
Jeg har udviklet et analysebibliotek i c# hvor der bl.a. indgår en Usage klasse. Denne klasse eksponerer nogle static variable/metoder (f.eks. antal kald mv, ms/kald, mv.), som så kan bruges til at få forskellige stats.
Nu har jeg så udviklet en webservice der anvender dette klassebibliotek. De statiske variable bliver bibeholdt fra kald til kald, også imellem forskellige klienter...
Nu er mit spørgsmål; Kan jeg på forhånd vide hvornår mine statiske variable bliver nulstillet? -Jeg har ikke kunne finde noget dokumentation på det og umiddelbart kan jeg "kun" nulstille dem ved enten at genstarte serveren eller kopiere nye assemblies ind...
Kan flere threads (jeg går ud fra at webservicen kaldes asynkront) samtidigt tilgå/ændre mine variable eller synkroniseres dette automatiskt på en eller anden snedig og forholdsvis udokumenteret måde?
Det er ikke noget der hedder statiske variable... Det modsiger jo ligesom sig selv.. Hvis du snakker om variable der bliver gemt fra kald til kald der kan tilgåes af alle klienter så må de jo være gemt i applicationsession eller hvad?
De bliver kun nulstillet hvis klassen ryger ud og genloades. Det gør den nok kun i de tilfælde du selv nævner.
Jeg er 99.99% sikker på at du selv skal lave lock for at undgå samtidigheds problemer. Hvis serveren skulle gøre det ville performance gå totalt i dørken, fordi den ville ikke kunne gøre det på en intelligent måde. Men jeg kan ikke provide en referance.
Der er ingen der evt. har set noget doku på det? -Jeg har været hele msdn igennem + diverse bøger fra ms press mv, men ingen nævner specifikt hvorledes static variable bliver håndteret i dette scenario.
Fik da konstateret at det ikke var mig der havde overset noget.
/Jennemaan
Synes godt om
Ny brugerNybegynder
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.