Avatar billede tgv Nybegynder
28. februar 2008 - 12:07 Der er 5 kommentarer

Webservice konstruktor

Hej

Jeg er ret ny mht. webservices og har et spørgsmål vedrørende initialiseren af denne.

Lad os sige at funktionaliteten for min webservice er at forbinde sig til en service et andet sted og sende information derhen altså:
W->A (initialisering)
W->A (send)

for at finde A's IP/port skal jeg dog først forbinde mig til en anden server B - A er statisk så dette skal kun gøres en gang. Det samlede forløb er derfor

1. W->B (hent ip/port)
2. W->A (initialisering)
3. W->A (send data)

Nu ønsker jeg blot at udføre de 2 første led én gang når webservicen starter og har derfor placeret det i kontruktoren. Jeg er dog nu kommet i tvivl om hvorvidt kontruktoren bliver kaldt EN gang når webservicen starter eller den bliver kaldt hver gang en ny klient kalder webservicen.

Hvis det sidste er tilfældet, hvordan går jeg så sådan at initialiseringen kun foregår én gang?

Mvh.
TGV
Avatar billede erikjacobsen Ekspert
28. februar 2008 - 12:09 #1
Hver gang. Din webservice er "stateless". Er det et problem for dig?
Avatar billede tgv Nybegynder
28. februar 2008 - 12:25 #2
Dvs. hvis en klient kalder en [Webmethod] så kaldes først konstruktoren for servicen og derefter webmethod?

Det er i mine øjne ikke særligt effektivt at jeg for hver kald skal finde en adresse på en server der aldrig ændrer sig (der er lavet sådan pga. den server strukturen servicen skal ingå i). Er det ikke muligt at gemme IP/Port returneret fra B, første gang denne findes og så referere til den næste gang servicen kaldes?
Avatar billede erikjacobsen Ekspert
28. februar 2008 - 12:29 #3
Jo, men så skal du finde et sted at gemme den. Der er flere muligheder:
1) Du kunne lade være med at slå den op, og bare skrive adressen i web.config
2) Du kunne gemme det i ASP.NETs cache, hvor du også kan skrive et udløbstidspunkt (se fx. http://aspnet.4guysfromrolla.com/articles/022802-1.2.aspx
3) Skrive det i en fil ...

Det er ikke webservices, der er ineffektive, det er din problemstilling, der skal takles rigtigt.
Avatar billede tgv Nybegynder
28. februar 2008 - 13:41 #4
ok metode 2 var det jeg ledte efter, selvom jeg regner med det skal være HttpContext.Current.Cache i stedet for blot Cache som i eksemplet.

Hvis du ønsker point så læg et svar :)

Et andet spørgsmål er hvilken fremgangmåde der er bedst til at foretage logging via en webservice nu den som sagt er stateless. Altså hvorvidt jeg skal åbne og lukke en tekstfil en masse gang eller om der findes andre, mere effektive metoder
Avatar billede erikjacobsen Ekspert
28. februar 2008 - 13:58 #5
Logning sker vel bedst i en database - så skal du ikke tænke på samtidighed.

Jeg samler slet ikke på point, tak.
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