12. september 2004 - 16:30Der er
12 kommentarer og 1 løsning
Mine egne objekter og web services
Hej,
Jeg sidder og tonser mig igennem flere bøger omhandlende web services, dog synes jeg ikke jeg kan finde svar på nogle af mine spørgsmål. For det første gennemgår mine bøger en farlig masse omkring wsdl, men jeg har ikke helt forstået hvad det gør endnu. Det kan være at mit næste spørgsmål hænger lidt sammen med dete:-) Jeg har en applikation der gerne skulle tilgå en webservice. I min applikation har jeg et objekt "Dimension" dette objekt skal jeg så hente fra en web service. Men hvordan kan jeg gøre dette, hvis jeg laver en "Dimension" klasse på web services der er magen til den i min applikation, bliver det så ikke noget møg at vedligeholde? Det ser heller ikke ud til at jeg kan få lov til at gøre dette, da den klager over noget med en default constructor der mangler. Er der noget helt fundamentalt jeg har overset?
det med en default constructor kan du klare ved at oprette den.... den bliver leveret som default, hvis du ikke selv definerer constructere der kræver argumenter.
du skal have genereret en proxy, hvis du vil lavet det du skriver... hvis du bruger visual studio kræver det ikke noget arbejde, men ellers skal du gøre det selv med nogle værktøjer.
hvis du lige skriver om du bruger vs - skriver jeg "en opskrift" tilbage :o)
Tak for det hurtige svar, og ja, jeg bruger VS. Min klasse jeg forsøger at formidle gennem min web service ser således ud: [Serializable] public class Person { private string firstname; private string lastname;
D.v.s. at du laver web servicen og en WSDL fil (ja du laver den næppe manuelt - den generereres automatisk for dig).
Dem der skal bruge din web servive kan nu læse alt om hvordan de skal kalde den udfra din WSDL fil.
Du har en server side Dimension klasse.
Dem der skal bruge din web service kan læse i WSDL filen at de skal bruge en Dimension klasse og hvordan den skal se ud (de laver den næppe manuelt men får den også genereret automatisk udfra WSDL filen af et værktøj).
Og de kan ikke nødvendigvis bruge din Dimension klasse. Du ved jo ike om de bruger .NET måske koder de i Java eller C++. Husk at web services er teknologi neutrale.
(og mere praktisk: hvis client Dimension klassen genereres så er der heller ikke meget vedligehold).
Aaaah.... nu giver det hele lidt mere mening (den der fejl med default constructor.....det virker naturligvis først efter man har rebuildet :-))
Det ser ud til at det hele virker som det skal. Er der nogen måde hvor man kan gøre det mere dynamisk, altså med den web reference. Lad os antage at jeg laver en Web Service der kører på en maskine hvor den tilgør en database med data specielle for denne virksomhed. Jeg vil nu gerne selv kunne bestemme hvilken web service jeg vil benytte mig af (givet at dennøjagtigt samme webservice eksisterer på forskellige maskiner, med en forskellig database server på hver maskine), er der nogen måde hvorpå jeg kan først koble på een maskine... derefter koble på en anden maskine.... derefter..... dvs give en bruger mulighed for at angive en server hvorpå den skal forsøge at finde web servicen
nu er det ikke sikkert at jeg er helt med på hvad du mener, men jeg synes umiddelbart at jeg kunne forestille mig en single-point-of-entry... Altså en service du populerer.
hvis brugeren så skal have mulighed for at trække oplysninger forskellige steder fra, kunne det være en parameter til den centrale service (som du så leverer) - og du kan så der sørge for at gøre det der skal gøres for at få fat i de rigtige data.
men der er ikke noget i vejen for at du opretter referencer til diverse services i en given applikation, og og sørger for at der er kode der kan "tabbe" imellem dem.
Det jeg ønsker er følgende: Jeg har en klient med en drop down eller en tekstbox hvor man kan skrive et servernavn.
Jeg vil gerne at brugeren kan skrive et navn på en server og så bruger forespørger jeg serveren om den har den type service jeg behøver!
Problemet er vel i min klient, hvordan skifter jeg til en anden WebReference? (i VS tilføjer jeg en WebReference og så bliver der lavet en proxy, men hvordan kan jeg selv bestemme hvilken WebReference jeg vil bruge? (hvilken server / IP), og vil den eksisterende Proxy virke til enhver WebService? (naturligvis af samme type, men på en anden server)
Takker, har set mig lidt rundt på nettet og fandt ud af det i dag da jeg sad på arbejde. Det jeg mener er at man ændrer url'en på den service man har fat i.
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.