Avatar billede stigc Nybegynder
16. september 2004 - 14:41 Der er 23 kommentarer og
1 løsning

Statiske variabler i en web service

Kan jeg risikere at statiske varibler i en klasse bliver delt i mellem forskellige requests?
Avatar billede arne_v Ekspert
16. september 2004 - 15:23 #1
Hvad mener du med "delt" ?
Avatar billede arne_v Ekspert
16. september 2004 - 15:28 #2
static members af klasser deles mellem instanser og vil bevare værdi mellem
requests

non static members af klasser vil bevare deres værdi mellem requests fra
samme client og ikke bevare deres værdi mellem requests fra forskellig client
med CAO, aldrig bevare deres værdi med SAO singlecall, næsten altid bevare
deres værdi med SAO singleton (objektet kan GC'es)
Avatar billede stigc Nybegynder
16. september 2004 - 19:27 #3
Klient 1 bruger en klasse, sætter en variable.
Klient 2 bruger samme klasse, er varable stadigvæk sat?
Avatar billede stigc Nybegynder
16. september 2004 - 19:32 #4
Der er ingen session state.
Avatar billede arne_v Ekspert
16. september 2004 - 19:38 #5
statisk : ja
ikke statisk : afhænger af CAO / SAO sínglecall / SAO singleton
Avatar billede stigc Nybegynder
16. september 2004 - 19:58 #6
Hvor opsætter jeg det henne?
Avatar billede arne_v Ekspert
16. september 2004 - 20:06 #7
*rød hoved*

Jeg har lige læst din overskrift !

Du snakker web service.

Jeg sidder og snakker om remoting.

Glem alt om det jeg har sagt.
Avatar billede stigc Nybegynder
16. september 2004 - 20:09 #8
Godt. Jeg var heller ikke helt med. Men kan du så svare på hvordan en statisk variable deles? :)
Avatar billede arne_v Ekspert
16. september 2004 - 20:12 #9
En ikke static variabel findes i en kopi for hver instans af klassen.

En static variabel findes kun i en enkelt kopi uasnset hvor mange instanser
af klassen der eksisterer.

Det er basal OOP.

For web services måde det betyde at:
  - en static variabel bliver bevaret mellem requestene
  - en ikke static variabel bliver bevaret eller ikke bevaret alt efter
    om der laves en ny instans af web service klassen (hvilket jeg ikke
    ved om der gør)
Avatar billede stigc Nybegynder
16. september 2004 - 20:43 #10
Jeg kender godt basal OOP med hensyn til variabler. Men det er vel ikke lige til med web services, som vel kan (altid?) køre i nye instanser/processer eller hvad?
Avatar billede stigc Nybegynder
16. september 2004 - 20:45 #11
Det jeg mener, hvis hvert klientkald resulterer i en ny process med web servicen, så deler de jo ikke statiske varaibler.
Avatar billede arne_v Ekspert
16. september 2004 - 20:46 #12
Det er ligetil for static - det er kun non static hvor man skal vide hvad ASP.NET gør.
Avatar billede arne_v Ekspert
16. september 2004 - 20:46 #13
Du kan være sikker på at de ikke starter en ny process. Det ville dræbe performance.
Avatar billede arne_v Ekspert
16. september 2004 - 20:54 #15
Den siger jo også 1 process bare med mange tråde (og tråde klasser og dermed
static variable)
Avatar billede stigc Nybegynder
16. september 2004 - 20:55 #16
Det skal du ikke være sikker på, men du kan være sikker på ASP.NET leverer klienten et nyoprettet web service objekt.
Avatar billede stigc Nybegynder
16. september 2004 - 20:57 #17
"Det skal du ikke være sikker på.." var til 20:46:10
Avatar billede arne_v Ekspert
16. september 2004 - 20:58 #18
Det er jeg nu stadig.
Avatar billede stigc Nybegynder
16. september 2004 - 20:58 #19
Der er en der skrive:

"Theoretically, yes, but, again, I don't know any way to tell IIS to run
my web service under single process (and, hence, address space)."
Avatar billede arne_v Ekspert
16. september 2004 - 21:06 #20
Jeg tror at han er galt på den.
Avatar billede stigc Nybegynder
16. september 2004 - 21:11 #21
OK
Avatar billede arne_v Ekspert
16. september 2004 - 22:27 #22
Jeg har lige testet lidt.

Med helt standard opsætning, så laver den:
  - en process
  - bevarer værdien af static mellem kald
  - laver en ny instans per kald

Det har ikke meget bevis kraft med en enkelt test, men det har heller ikke
modbevist min hypotese.
Avatar billede stigc Nybegynder
16. september 2004 - 22:31 #23
Tak for hjælpen. læg et svar.
Avatar billede arne_v Ekspert
16. september 2004 - 22:43 #24
ok
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
Kurser inden for grundlæggende programmering

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

Seneste spørgsmål Seneste aktivitet
43 min siden Problemer med C5 Af dot-tullberg@outlook.dk i Økonomiprogrammer
I dag 12:28 Talkolonne Af hkv i Excel
I går 21:15 Sortering i Stifinder Af 1Dorte i Windows
I går 16:33 Hjælp til tricky VBA-kode Af flras i Excel
18/1114:00 Ny outlook Af Butterfly i Excel