Hva er WSDL?
Web Services Description Language (WSDL) er en XML-basert fil som i utgangspunktet forteller klientapplikasjonen hva nettjenesten gjør. WSDL-filen brukes i et nøtteskall til å beskrive hva nettjenesten gjør og gir klienten all den informasjonen som kreves for å koble til webtjenesten og bruke all funksjonaliteten som tilbys av nettjenesten.
I denne opplæringen skal vi fokusere på det siste punktet som er den viktigste delen av webtjenester, og det er WSDL eller beskrivelsesspråket for webtjenester.
WSDL-filen brukes i et nøtteskall til å beskrive hva nettjenesten gjør og gir klienten all den informasjonen som kreves for å koble til webtjenesten og bruke all funksjonaliteten som tilbys av nettjenesten.
I denne veiledningen vil du lære-
- Struktur av et WSDL-dokument
- WSDL Elements
- Hvorfor WSDL
- WSDL-meldingsdel
- Porttype bindende
- Opprette WSDL-fil
- Publisering av nettjenesteeksemplet
Struktur av et WSDL-dokument
Et WSDL-dokument brukes til å beskrive en nettjeneste. Denne beskrivelsen er påkrevd, slik at klientapplikasjoner kan forstå hva nettjenesten faktisk gjør.
- WSDL-filen inneholder plasseringen til nettjenesten og
- Metodene som eksponeres av nettjenesten.
WSDL-filen i seg selv kan se veldig kompleks ut for enhver bruker, men den inneholder all nødvendig informasjon som et klientprogram trenger for å bruke den aktuelle nettjenesten.
Nedenfor er den generelle strukturen til en WSDL-fil
- Definisjon
- TargetNamespace
- Datatyper
- Meldinger
- Porttype
- Bindinger
- service
En viktig ting å merke seg her er at definisjonen av meldinger, som er det som sendes av SOAP-protokollen, faktisk er definert i WSDL-dokumentet.
WSDL-dokumentet forteller faktisk et klientapplikasjon hva slags SOAP-meldinger som sendes og godtas av webtjenesten.
Med andre ord er WSDL akkurat som et postkort som har adressen til et bestemt sted. Adressen gir informasjon om personen som leverte postkortet. Derfor, på samme måte, er WSDL-filen postkortet, som har adressen til webtjenesten som kan levere all funksjonaliteten som klienten ønsker.
… … … … …
Nedenfor er et diagram over strukturen til en WSDL-fil

WSDL Elements
WSDL-filen inneholder følgende hoveddeler
-
Den
koden brukes for å definere alle de komplekse datatyper, som vil bli brukt i meldingen som utveksles mellom klientapplikasjonen og den webtjeneste. Dette er et viktig aspekt av klientapplikasjonen, fordi hvis webtjenesten fungerer med en kompleks datatype, bør klientapplikasjonen vite hvordan man behandler den komplekse datatypen. Datatyper som float, tall og strenger er alle enkle datatyper, men det kan være strukturerte datatyper som kan leveres av webtjenesten. For eksempel kan det være en datatype kalt EmployeeDataType som kan ha to elementer kalt "EmployeeName" av typen streng og "EmployeeID" av typenummer eller heltall. Sammen danner de en datastruktur som deretter blir en kompleks datatype.
-
Den
signal blir brukt til å definere hvilken melding som skal utveksles mellom klientapplikasjonen og webserveren. Disse meldingene vil forklare inngangs- og utgangsoperasjonene som kan utføres av nettjenesten. Et eksempel på en melding kan være en melding som godtar EmployeeID for en ansatt, og output-meldingen kan være navnet på den ansatte basert på EmpoyeeID som er gitt. -
Den
taggen brukes til å innkapsle hver inngang og utgang meldingen inn i en logisk operasjon. Så det kan være en operasjon kalt "GetEmployee" som kombinerer inndatameldingen om å godta EmployeeID fra et klientprogram og deretter sende EmployeeName som utdatameldingen. -
Den
taggen brukes til å binde operasjonen til den spesielle porttypen. Dette er slik at når klientapplikasjonen kaller den aktuelle porttypen, vil den da kunne få tilgang til operasjonene som er bundet til denne porttypen. Porttyper er akkurat som grensesnitt. Så hvis en klientapplikasjon trenger å bruke en nettjeneste, må de bruke den bindende informasjonen for å sikre at de kan koble til grensesnittet som tilbys av den nettjenesten. -
Den
tag er et navn gitt til webtjenesten selv. Først når et klientprogram ringer til nettjenesten, vil det gjøre ved å ringe navnet på webtjenesten. For eksempel kan en webtjeneste være lokalisert på en adresse som http: //localhost/Guru99/Tutorial.asmx . Tjenestemerket vil faktisk ha URL-adressen definert som http: //localhost/Guru99/Tutorial.asmx , som faktisk vil fortelle klientapplikasjonen at det er en webtjeneste tilgjengelig på dette stedet.
Hvorfor WSDL
En webtjeneste er en viktig komponent i å bygge moderne webapplikasjoner. Hovedformålet deres er å la flere applikasjoner bygget på forskjellige programmeringsspråk snakke med hverandre. For eksempel kan vi ha en .Net-webapplikasjon som snakker med en Java-applikasjon via en webtjeneste.
En nettjeneste har følgende viktige funksjoner
- Den er bygget ved hjelp av XML-programmeringsspråket. Nesten alle moderne teknologier som .Net og Java har tilsvarende kommandoer som har muligheten til å jobbe med XML. Derfor ble XML tatt som det mest passende språket for å bygge webtjenester.
- Webtjenester kommuniserer via HTTP. HTTP er en protokoll som brukes av alle nettbaserte applikasjoner. Derfor var det bare fornuftig å sikre at webtjenester også hadde muligheten til å jobbe over HTTP-protokollen.
- Webtjenester samsvarer med en bestemt språkspesifikasjon. Denne spesifikasjonen er satt av W3C, som er styrende organ for alle nettstandarder.
- Webtjenester har et beskrivelsesspråk kjent som WSDL, som brukes til å beskrive webtjenesten.
WSDL-filen er skrevet i vanlig gammel XML. Årsaken til at det er i XML er slik at filen kan leses av hvilket som helst programmeringsspråk.
Så hvis klientsøknaden ble skrevet i .Net, ville den forstå XML-filen. På samme måte, hvis klientapplikasjonen ble skrevet på Java-programmeringsspråket, ville den også kunne tolke WSDL-filen.
WSDL-filen er det som binder alt sammen. Fra diagrammet ovenfor kan du se at du kan opprette en webtjeneste på .Net-språket.
Så dette er hvor tjenesten blir implementert. Hvis du ikke hadde WSDL-filen og ønsket at en Java-klasse skulle konsumere nettjenesten, trenger du mye koding for å oppnå dette.
Men nå med WSDL-filen som er i XML, som kan forstås av ethvert programmeringsspråk, kan du nå enkelt få en Java-klasse til å konsumere .Net-webtjenesten. Derfor reduseres mengden kodingsinnsats sterkt.
WSDL-meldingsdel
WSDL består av en seksjon kalt "meldinger" som er betegnet med
Dette elementet brukes i utgangspunktet for å beskrive dataene som blir utvekslet mellom webtjenesten og klientapplikasjonen.
Hver webtjeneste vil alltid ha to typer meldinger,
- Den ene er for inngangen til webtjenesten, og den andre er for produksjonen av nettjenesten.
- Inngangen brukes til å beskrive parametrene som godtas av nettjenesten. Dette er et viktig aspekt av klientapplikasjonen, slik at den kjenner verdiene som skal sendes som parametere til webtjenesten.
- Den andre typen melding er utgangsmeldingen som forteller hvilke resultater levert av nettjenesten.
Hver melding vil i sin tur ha et
Nedenfor er et enkelt eksempel på hvordan en melding til en nettjeneste ser ut. Funksjonaliteten til nettjenesten er å oppgi navnet på en "Opplæring" når en "Opplærings-ID" er sendt inn som en parameter til nettjenesten.
- Som vi kan se har nettjenesten to meldinger, en for inngangen og den andre for utdata.
- Inndatameldingen er kjent som TutorialNameRequest, som har en parameter som heter TutorialID. Denne parameteren er av typenummeret som er spesifisert av xsd: number type
- Utgangsmeldingen er kjent som TutorialNameResponse, som har en parameter som heter TutorialName. Denne parameteren er av typen streng som er spesifisert av xsd: streng type
Porttype bindende
Porter brukes i WSDL for å definere en komplett operasjon som tilbys av nettjenesten.
I forrige emne så vi at vår nettjeneste leverte to meldinger, en for inngangen kalt "TutorialNameRequest" og den andre for utdata som heter "TutorialNameResponse." Sammen er meldingsskjemaet for inngang og utgang kjent som en komplett operasjon.
WSDL gir et element kalt
Så i eksemplet vårt ovenfor kan vi merke oss følgende:
- Navnet på porttypen som innkapsler operasjonen, blir gitt som "Tutorial_PortType."
- Selve operasjonen får navnet "Tutorial". Så vår operasjon gir i utgangspunktet et opplæringsnavn hvis opplærings-ID er gitt som inndataparameter.
- Neste er våre to meldinger, en for inngangen og den andre for utdata som danner vår operasjon
I tillegg til
- Ovenstående eksempel viser at bindingen består av et bindende navn som i vårt tilfelle er gitt som "TutorialSoapBinding". Bindende i enkle termer er informasjonen som klientapplikasjonen bruker for å faktisk binde seg til webtjenesten. Når den faktisk er bundet til webtjenesten, har den muligheten til å ringe de forskjellige operasjonene som blir eksponert av nettjenesten.
- Transportlaget er gitt som http: //, noe som betyr at meldingene som overføres via HTTP-protokollen.
Opprette WSDL-fil
WSDL-filen blir opprettet når en webtjeneste bygges i et hvilket som helst programmeringsspråk.
Siden WSDL-filen er ganske komplisert å bli generert fra vanlig bunnen av, oppretter alle redaktører som Visual Studio for .Net og Eclipse for Java automatisk WSDL-filen.
Nedenfor er et eksempel på en WSDL-fil opprettet i Visual Studio.
TutorialService
Ovennevnte WSDL-fil ser veldig skremmende ut for enhver bruker, vi vil dekke de forskjellige delene i detalj i de påfølgende opplæringene, men foreløpig, la oss få en oppsummering av hva hver del av WSDL-filen faktisk gjør
Publisering av nettjenesteeksemplet
La oss nå se på et eksempel på hvordan vi kan publisere en nettjeneste og konsumere den ved hjelp av Visual Studio.
I dette eksemplet vil vi opprette en webtjeneste med en WebMethod. Denne metoden godtar en heltallsparameter kalt "TutorialID". Web-metoden vil da returnere en streng kalt "Web Services".
Vi oppretter deretter et konsollbasert program som bruker denne nettjenesten og kaller vår webmetode deretter.
La oss se på trinnene som kreves for å gjennomføre dette eksemplet.
Trinn 1) Det første trinnet er å opprette nettjenesten din. De detaljerte trinnene for hvordan Asp.Net-webprosjektet og en webtjeneste blir opprettet er forklart her; Følg de samme trinnene for å opprette prosjektet og nettjenesten deretter. Nøkkeldelen er å angi koden nedenfor i webtjenestefilen.
namespace webservic asmx{[WebService(Name = "Guru99 Web service")]public class TutorialService : System.Web.Services.WebService{[WebMethod]public string GetTutorialService(int TutoriallD){string TutorialName = "Web Services";return TutorialName;}}}
Kode Forklaring:
- Her lager vi en WebMethod kalt "Guru99WebService." I denne nettmetoden inkluderer vi et heltallsparameter som må sendes når denne nettmetoden kalles.
- Deretter definerer vi en variabel kalt "TutorialName" som vil inneholde strengverdien til "Web Services." Dette er verdien som blir returnert når nettjenesten blir ringt.
Trinn 2) Når vi har definert webtjenestefilen, er neste trinn å lage et klientprosjekt som vil konsumere denne nettjenesten.
La oss lage en enkel konsollapplikasjon som vil kalle denne webtjenesten, påkalle "Guru99WebService" og deretter vise utdataene fra nettmetoden i konsollloggskjermen. Følg trinnene nedenfor for å opprette et konsollprogram.
Høyreklikk Visual Studio-løsningsfilen og velg alternativet Legg til-> Nytt prosjekt
Trinn 3) I dette trinnet
- Sørg for å først velge alternativet Visual C # Windows. Velg deretter alternativet for å opprette et konsollprogram.
- Gi et navn på prosjektet ditt som i vårt tilfelle er gitt som "DemoApplication."
Etter at du har klikket på OK-knappen i skjermbildet ovenfor, vil du kunne se prosjektet i Solution Explorer i Visual Studio.
Trinn 4) I dette trinnet setter du DemoApplication Console-applikasjonen som oppstartsprosjekt. Dette gjøres for å sikre at denne applikasjonen starter først når hele Visual Studio-prosjektet kjøres. Denne konsollapplikasjonen vil i sin tur ringe til nettjenesten som automatisk startes av Visual Studio.
For å fullføre dette trinnet, høyreklikk på DemoApplication-prosjektet og velg alternativet "Angi som StartUp-prosjekt."
Trinn 5) Det neste trinnet er å legge til tjenestereferansen til "Guru99Webservice" i konsollapplikasjonen. Dette gjøres slik at DemoApplication kan referere til nettjenesten og alle nettmetodene i nettjenesten.
For å gjøre dette høyreklikker du på DemoApplication-prosjektfilen og velger menyalternativet Add-> Service Reference.
Trinn 6) I dette trinnet vil vi gi de forskjellige verdiene som er nødvendige for å legge til vår tjenestereferanse
- For det første må vi velge vårt oppdagelsesalternativ. Dette alternativet henter automatisk WSDL-filen for vår TutorialService-nettjeneste.
- Deretter bør vi gi et navn for vår tjenestereferanse. I vårt tilfelle gir vi det navnet Guru99Webservice.
- Deretter må vi utvide TutorialService.asmx-alternativet slik at vi kan ha muligheten til å se 'GetTutorialService' -metoden på høyre side. Her er TutorialService.asmx navnet på Visual Studio .Net-filen som inneholder koden for nettjenesten vår.
- Vi vil da se vår webmetode som vi hadde i vår webtjeneste kjent som "GetTutorialService"
Når vi klikker på 'OK' -knappen, vil all den nødvendige koden for å få tilgang til denne nettjenesten legges til i DemoApplication Console-applikasjonen som vist nedenfor.
Skjermbildet viser at "Guru99Webservice" ble lagt til i konsollapplikasjonen.
Trinn 7) Det neste trinnet er å legge til koden i konsollapplikasjonen vår for å få tilgang til webmetoden i vår nettjeneste. Åpne Program.cs-kodefilen som følger automatisk med konsollapplikasjonen, og legg til koden nedenfor
namespace DemoApplication{class Program{static void Main(string[ ] args){var client = new Guru99Webservice.Guru99WebserviceSoapClient();Console.WriteLine(client.GetTutorialService(l));Console.ReadKey();}}}
Kode Forklaring: -
- Den første delen er å velge Program.cs-filen. Dette er hovedfilen som opprettes av Visual Studio når et konsollprogram opprettes. Denne filen er det som blir kjørt når konsollapplikasjonen (i vårt tilfelle demo-applikasjon) kjøres.
- Vi oppretter deretter en variabel kalt "klient" som vil bli satt til en forekomst av vår tjenestereferanse som ble opprettet i et tidligere trinn. I vårt tilfelle er tjenestereferansen 'Guru99Webservice.Guru99WebserviveSoapClient ()'
- Vi kaller deretter vår webmetode 'GetTutorialService' i TutorialService-nettjenesten Husk at vår GetTutorialService-metode godtar et heltallsparameter, så vi overfører bare et heltallsparameter til nettmetoden.
- Denne endelige linjen er bare for å sikre at konsollloggskjermen forblir aktiv slik at vi kan se utdataene. Denne kommandoen vil bare vente på noen innspill fra brukeren.
Produksjon
Når alle trinnene ovenfor følges, og DemoApplication kjøres, vises utdataene nedenfor.
Fra utgangen kan vi tydelig se at DemoApplication kaller vår webtjeneste og at strengen som returneres av webtjenesten vises i konsolloggen.
Sammendrag
- Full form for WSDL er beskrivelsesspråk for webtjenester
- Et WSDL-dokument er et dokument som brukes til å beskrive en nettjeneste. Dette er nøkkelen for ethvert klientprogram å vite hvor nettjenesten er lokalisert. Det lar også klientapplikasjonen forstå metodene som er tilgjengelige i webtjenesten.
- WSDL-filen gjør det veldig enkelt for webtjenesten å implementeres på ett programmeringsspråk og ringes fra et annet programmeringsspråk.
- WSDL-dokumentet består normalt av en melding. For hver webmetode er det to meldinger, den ene er for inngangen, og den andre for utgangen. Sammen danner de en operasjon.
- Web Services Description Language (står for WSDL) -filer blir vanligvis opprettet i editoren som brukes til det tilsvarende programmeringsspråket.
- Vi har sett hvordan vi kan konsumere en nettjeneste i Visual Studio. Dette kan gjøres ved å opprette et annet prosjekt som er et konsollprogram. Så ved å legge til en tjenestereferanse, har vi da tilgang til nettmetodene i vår nettjeneste.