Avatar billede dna Nybegynder
14. juli 2004 - 12:44 Der er 10 kommentarer og
1 løsning

Statefull server i .NET (Remoting)

Hej Alle...

Jeg har siddet og læst lidt på remoting, og er nu kastet mig ud i det. Arne_v har skrevet en god artikel om emnet, som gav mig en god start, men jeg faldt over en sætning i hans artiklel:

"SAO Singleton betyder at der instantieres et enkelt remote objekt
ad gangen (bemærk at det ikke er et ægte singleton objekt - det kan
blive garbage collectet og et nyt objekt instantieret - der er bare
aldrig mere end et ad gangen)."

Er dette ikke måden at lave en statefull server på?

dna
Avatar billede arne_v Ekspert
14. juli 2004 - 13:09 #1
Nu ved jeg ikke helt hvad du mener med "statefull server", men med det jeg
ligger i ordet er det CAO der giver den funktionalitet.
Avatar billede dna Nybegynder
14. juli 2004 - 13:12 #2
Jeg vil gerne lave et serverObjekt, som gør det muligt for mine klienter at snakke sammen via det. De skal altså alle have det samme serverObjekt.

De informationer som bliver gemt på attributterne på serverObjektet må ikke forsvinde selvom der ikke er nogen klienter forbundet over en periode.

Giver det mening?

dna
Avatar billede arne_v Ekspert
14. juli 2004 - 13:14 #3
Ja - så kan jeg godt forstå at du kigger på SAO Singleton.

Det burde bare virke.
Avatar billede dna Nybegynder
14. juli 2004 - 16:09 #4
Hvad betyder så det med at objektet bliver garbage-collectet, og et nyt objekt laves. Hvornår er det så aktuelt?

dna
Avatar billede arne_v Ekspert
14. juli 2004 - 16:14 #5
Hvis objektet ikke er i brug så forbeholder .NET sig retten til at GC'e det
og genoprette det når det igen skal bruges.

Jeg tvivler på at det vil ske i praksis.

Jeg ved heller ikke om det er et problem i praksis at din server
efter en pause uden klienter starter "blank".

Men ellers har du en af de sjældne lejligeheder hvor du har mulighed for
at bruge en destructor i C# (til at save state med).
Avatar billede clausc Nybegynder
16. juli 2004 - 10:11 #6
Jeg tillader mig lige at paste et lille afsnit fra dokumentationen:

Singletons
In COM, "singleton" meant that as long as clients had references to your object, the object would not be deleted from memory. In .NET remoting, however, a Singleton object is subject to the lifetime lease that was specified for it, so it can be recycled even if clients currently hold references to it. You can create the former type of Singleton object by overriding the InitializeLifetimeService method of MarshalByRefObject to return a null reference (Nothing in Visual Basic). This effectively keeps the object in memory as long as the host application domain is running. For details, see Lifetime Leases. You can create the latter type of Singleton object by configuring the initial lease time in the remoting configuration file.

Så vidt jeg kan se, er det præcis det dna ønsker

/Claus
Avatar billede burningice Nybegynder
16. juli 2004 - 16:13 #7
hm.. jeg troede singleton var et pattern der gjorde at der kun blev oprettet et, og KUN et object af en type, og det var det ENE object man altid fik fat i og arbejde på.
Avatar billede arne_v Ekspert
16. juli 2004 - 16:22 #8
Det er det også normalt. Men remotings definition af singleton er lidt mere
nuanceret end GoF.
Avatar billede dna Nybegynder
15. august 2004 - 13:04 #9
Jeg har bestemt fået noget ud af dette spørgsmål, så hvis arne_v og clausc ligger et svar, så kan vi få det lukket.

dna
Avatar billede arne_v Ekspert
15. august 2004 - 13:29 #10
ok
Avatar billede dna Nybegynder
02. september 2004 - 13:40 #11
well - vi har vist ventet længe nok!
Har fået lavet det! - så tak for de gode inputs!

dna
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