Avatar billede brian0905 Nybegynder
12. september 2004 - 16:30 Der 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?
Avatar billede snepnet Nybegynder
12. september 2004 - 16:35 #1
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)

mvh
Avatar billede brian0905 Nybegynder
12. september 2004 - 16:39 #2
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;

        public Person(string newfirstname, string newlastname)
        {
            firstname = newfirstname;
            lastname = newlastname;
        }

        public Person()
        {
        }

        public string Firstname
        {
            get { return firstname; }
            set { firstname = value; }
        }

        public string Lastname
        {
            get { return lastname; }
            set { lastname = value; }
        }
    }

Jeg skulle da mene den har en default constructor. Jeg ser frem til at modtage en "opskrift"
Avatar billede arne_v Ekspert
12. september 2004 - 16:46 #3
WSDL er en beskrivelse af web servicen.

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).
Avatar billede snepnet Nybegynder
12. september 2004 - 16:48 #4
Du kan lige starte med at kigge her :
http://www.eksperten.dk/spm/538261
Der er en lille vejledning ved 16:03:37
Avatar billede arne_v Ekspert
12. september 2004 - 16:48 #5
Din klasse har en default constructor.

Kan vi få den præcise fejl besked ?

PS: Jeg synes at du skulle sætte username og password til "" i den default constructor !
Avatar billede snepnet Nybegynder
12. september 2004 - 16:48 #6
hov - kryds - godt at se dig arne :o)
Avatar billede brian0905 Nybegynder
12. september 2004 - 17:06 #7
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
Avatar billede snepnet Nybegynder
12. september 2004 - 17:21 #8
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.

er jeg helt på vildspor ?

mvh
Avatar billede arne_v Ekspert
12. september 2004 - 17:28 #9
Jeg forstår ikke helt hvad du vil.

Din web service kan sagtens fungere som client til andre web services.

Så det er nemt hvis du hardcoder hvilke den skal kalde.

Men det er noget vanskeligere hvis den dynamisk skal detecte hvilke
den skal kalde.
Avatar billede brian0905 Nybegynder
12. september 2004 - 18:44 #10
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)
Avatar billede arne_v Ekspert
12. september 2004 - 18:53 #11
Det er vist ikke helt nemt.

Men se hvad finger fandt her:
  http://www.eksperten.dk/spm/516225
Avatar billede brian0905 Nybegynder
13. september 2004 - 18:30 #12
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.

dvs.: myService.URL = "http://minserver/minservice/minservice.asmx";

så skifter man bare servernavnet ud:

myService.URL = "http://"+servervariabel+"/minservice/minservice.asmx";

og vupti !!!
Avatar billede brian0905 Nybegynder
09. november 2004 - 15:44 #13
svar.....
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