WSDL-opetusohjelma: Verkkopalvelut Descriptionikieli esimerkin kanssa
Mikä on WSDL?
Web Services Descriptionikieli (WSDL) on XML-pohjainen tiedosto, joka periaatteessa kertoo asiakassovellukselle, mitä verkkopalvelu tekee. WSDL-tiedoston avulla kuvataan pähkinänkuoressa, mitä verkkopalvelu tekee, ja se antaa asiakkaalle kaikki tarvittavat tiedot, jotta hän voi muodostaa yhteyden verkkopalveluun ja käyttää kaikkia verkkopalvelun tarjoamia toimintoja.
Tässä opetusohjelmassa keskitymme viimeiseen kohtaan, joka on verkkopalveluiden tärkein osa, eli WSDL- tai verkkopalvelujen kuvauskieli.
WSDL-tiedoston avulla kuvataan pähkinänkuoressa, mitä verkkopalvelu tekee, ja se antaa asiakkaalle kaikki tarvittavat tiedot, jotta hän voi muodostaa yhteyden verkkopalveluun ja käyttää kaikkia verkkopalvelun tarjoamia toimintoja.
WSDL-dokumentin rakenne
WSDL-dokumenttia käytetään kuvaamaan verkkopalvelua. Tämä kuvaus on pakollinen, jotta asiakassovellukset voivat ymmärtää, mitä verkkopalvelu todella tekee.
- WSDL-tiedosto sisältää verkkopalvelun sijainnin ja
- Verkkopalvelun paljastamat menetelmät.
WSDL-tiedosto itsessään voi näyttää erittäin monimutkaiselta kenelle tahansa käyttäjälle, mutta se sisältää kaikki tarvittavat tiedot, joita mikä tahansa asiakassovellus tarvitsee käyttääkseen asianmukaista verkkopalvelua.
Alla on WSDL-tiedoston yleinen rakenne
- Määritelmä
- Targetnimiavaruus
- Tietotyypit
- viestit
- Porttityyppi
- siteet
- palvelu
Yksi avainasia, joka on huomioitava tässä, on viestien määritelmä, joka on se, mitä välittää SOAP-protokolla on itse asiassa määritelty WSDL-asiakirjassa.
WSDL-dokumentti itse asiassa kertoo asiakassovellukselle, minkä tyyppisiä SOAP-viestejä verkkopalvelu lähettää ja hyväksyy.
Toisin sanoen WSDL on aivan kuin postikortti, jossa on tietyn sijainnin osoite. Osoite sisältää postikortin toimittaneen henkilön tiedot. Näin ollen WSDL-tiedosto on samalla tavalla postikortti, jossa on sen verkkopalvelun osoite, joka voi tarjota kaikki asiakkaan tarvitsemat toiminnot.
<!-- WSDL definition structure -->
<definitions
name="Guru99Service"
targetNamespace=http://example.org/math/
xmlns=http://schemas.xmlsoap.org/wsdl/>
<!-- abstract definitions -->
<types> ...
<message> ...
<portType> ...
<!-- concrete definitions -->
<binding> ...
<service> ...
</definition>
Alla on kaavio WSDL-tiedoston rakenteesta

WSDL-elementit
WSDL-tiedosto sisältää seuraavat pääosat
- -tunnistetta käytetään määrittelemään kaikki monimutkaiset tietotyypit, joita käytetään asiakassovelluksen ja verkkopalvelun välisessä viestissä. Tämä on tärkeä näkökohta asiakassovelluksessa, koska jos verkkopalvelu toimii monimutkaisen tietotyypin kanssa, asiakassovelluksen pitäisi osata käsitellä monimutkaista tietotyyppiä. Tietotyypit, kuten float, numerot ja merkkijonot, ovat kaikki yksinkertaisia tietotyyppejä, mutta verkkopalvelu voi tarjota strukturoituja tietotyyppejä.
Voisi olla esimerkiksi tietotyyppi nimeltä EmployeeDataType, jossa voi olla 2 elementtiä nimeltä "EmployeeName", jonka tyyppi on merkkijono ja "EmployeeID", jonka tyyppi on numero tai kokonaisluku. Yhdessä ne muodostavat tietorakenteen, josta tulee monimutkainen tietotyyppi. - -tunnistetta käytetään määrittelemään viesti, joka vaihdetaan asiakassovelluksen ja verkkopalvelimen välillä. Nämä viestit selittävät syöttö- ja tulostustoiminnot, jotka verkkopalvelu voi suorittaa. Esimerkki viestistä voi olla viesti, joka hyväksyy työntekijän EmployeeID-tunnuksen, ja lähtöviesti voi olla työntekijän nimi annettuun EmpoyeeID:hen perustuen.
- -tunnistetta käytetään kapseloimaan jokainen tulo- ja lähtöviesti yhdeksi loogiseksi operaatioksi. Joten voisi olla "GetEmployee"-niminen toiminto, joka yhdistää syöttöviestin, jossa hyväksytään Työntekijätunnus asiakassovelluksesta ja lähetetään sitten TyöntekijäNimi tulosviestinä.
- -tunnistetta käytetään sitomaan toiminto tiettyyn porttityyppiin. Tämä on niin, että kun asiakassovellus soittaa asiaankuuluvaa porttityyppiä, se voi sitten käyttää toimintoja, jotka on sidottu tähän porttityyppiin. Porttityypit ovat aivan kuin liitännät. Joten jos asiakassovelluksen on käytettävä verkkopalvelua, sen on käytettävä sitovia tietoja varmistaakseen, että he voivat muodostaa yhteyden kyseisen verkkopalvelun tarjoamaan käyttöliittymään.
- tag on itse verkkopalvelulle annettu nimi. Aluksi kun asiakassovellus soittaa verkkopalveluun, se soittaa verkkopalvelun nimeä. Esimerkiksi verkkopalvelu voi sijaita osoitteessa, kuten http://localhost/Guru99/Tutorial.asmx . Palvelutunnisteella on itse asiassa URL-osoite, joka määritellään muodossa http://localhost/Guru99/Tutorial.asmx, joka itse asiassa kertoo asiakassovellukselle, että tässä paikassa on saatavilla verkkopalvelu.
Miksi WSDL
Verkkopalvelu on tärkeä osa nykyajan verkkosovellusten rakentamista. Niiden päätarkoituksena on mahdollistaa useiden eri ohjelmointikielille rakennettujen sovellusten keskusteleminen toistensa kanssa. Meillä voi esimerkiksi olla .Net-verkkosovellus, joka puhuu a Java sovellus verkkopalvelun kautta.
Verkkopalvelussa on seuraavat keskeiset ominaisuudet
- Se on rakennettu XML-ohjelmointikielellä. Lähes kaikki nykyajan tekniikat, kuten .Net ja Java niillä on vastaavat komennot, jotka pystyvät toimimaan XML:n kanssa. Tästä syystä XML pidettiin sopivimpana kielenä verkkopalveluiden rakentamiseen.
- Verkkopalvelut kommunikoivat HTTP:n kautta. HTTP on kaikkien verkkopohjaisten sovellusten käyttämä protokolla. Siksi oli vain järkevää varmistaa, että myös verkkopalveluilla oli kyky toimia HTTP-protokollan yli.
- Verkkopalvelut ovat tietyn kielimäärityksen mukaisia. Tämän määrityksen määrittää W3C, joka on kaikkien verkkostandardien hallintoelin.
- Verkkopalveluilla on WSDL-niminen kuvauskieli, jota käytetään kuvaamaan verkkopalvelua.
WSDL-tiedosto on kirjoitettu tavallisella vanhalla XML-kielellä. Syy siihen, että se on XML-muodossa, on se, että tiedosto voidaan lukea millä tahansa ohjelmointikielellä.
Joten jos asiakassovellus olisi kirjoitettu .Netissä, se ymmärtäisi XML-tiedoston. Vastaavasti, jos asiakassovellus on kirjoitettu Java ohjelmointikieli, niin se voisi myös tulkita WSDL-tiedoston.
WSDL-tiedosto yhdistää kaiken. Yllä olevasta kaaviosta näet, että voit luoda verkkopalvelun .Net-kielellä.
Joten tässä palvelu toteutetaan. Jos sinulla ei ollut WSDL-tiedostoa ja halusit a Java luokan kuluttaaksesi verkkopalvelua, tarvitset paljon koodausponnistusta tämän saavuttamiseksi.
Mutta nyt WSDL-tiedostolla, joka on XML-muodossa ja jonka voi ymmärtää millä tahansa ohjelmointikielellä, voit nyt helposti Java luokka kuluttaa .Net-verkkopalvelua. Näin ollen koodausponnistuksen määrä vähenee huomattavasti.
WSDL-sanoman osa
WSDL koostuu osiosta nimeltä "viestit", joka on merkitty elementti.
Tätä elementtiä käytetään periaatteessa kuvaamaan verkkopalvelun ja asiakassovelluksen välillä vaihdettavia tietoja.
Jokaisessa verkkopalvelussa on aina kahdenlaisia viestejä,
- Toinen on verkkopalvelun syöttöä varten ja toinen verkkopalvelun ulostuloa varten.
- Syötettä käytetään kuvaamaan verkkopalvelun hyväksymiä parametreja. Tämä on tärkeä näkökohta asiakassovelluksessa, jotta se tietää arvot, jotka lähetetään parametreina verkkopalveluun.
- Toinen viestityyppi on lähtöviesti, joka kertoo, mitä tuloksia verkkopalvelu tarjoaa.
Jokaisessa viestissä on puolestaan a elementti, jota käytetään kuvaamaan tulo- ja lähtöviestin käyttämää parametria.
Alla on yksinkertainen esimerkki siitä, miltä verkkopalvelun viesti näyttää. Verkkopalvelun toimintona on antaa "Tutorial" nimi, kun "Tutorial ID" on lähetetty parametrina verkkopalveluun.
- Kuten näemme, verkkopalvelussa on 2 viestiä, yksi tuloa varten ja toinen ulostuloa varten.
- Syöttösanoma tunnetaan nimellä TutorialNameRequest, jossa on yksi parametri nimeltä TutorialID. Tämä parametri on tyyppinumeroa, joka on määritetty xsd:numerotyypillä
- Lähtöviesti tunnetaan nimellä TutorialNameResponse, jossa on yksi parametri nimeltä TutorialName. Tämä parametri on merkkijonotyyppiä, jonka määrittää xsd:string-tyyppi
Porttityypin sidonta
Portteja käytetään WSDL:ssä määrittämään yksi täydellinen verkkopalvelun tarjoama toiminto.
Edellisessä aiheessa näimme, että verkkopalvelumme tarjosi 2 viestiä, yksi syötteelle nimeltä "TutorialNameRequest" ja toinen ulostulolle nimeltä "TutorialNameResponse". Yhdessä syöttö- ja lähtöviestilomake tunnetaan yhtenä kokonaisena toimintona.
WSDL tarjoaa elementin nimeltä jota käytetään verkkopalvelun tarjoamien toimintojen määrittämiseen.
Joten yllä olevassa esimerkissämme voimme huomata seuraavat:
- Portin tyypin nimi, joka kapseloi toiminnon, on "Tutorial_PortType".
- Itse toiminnolle on annettu nimi "Tutorial". Joten toimintamme tarjoaa periaatteessa TutorialName:n, jos TutorialID annetaan syöttöparametrina.
- Seuraavana on 2 viestiämme, toinen tulolle ja toinen ulostulolle, joka muodostaa toimintamme
Lisäksi elementtiä, on myös elementti, jota käytetään määrittämään, kuinka viestit siirretään.
- Yllä oleva esimerkki osoittaa, että sidonta koostuu sidosnimestä, joka meidän tapauksessamme annetaan nimellä "TutorialSoapBinding". Sitominen on yksinkertaisesti sanottuna tietoja, joita asiakassovellus käyttää sitoutuakseen itse verkkopalveluun. Kun se on todella sidottu verkkopalveluun, se pystyy kutsumaan erilaisia verkkopalvelun paljastamia toimintoja.
- Kuljetuskerros annetaan muodossa http://, mikä tarkoittaa, että viestit, jotka siirtyvät HTTP-protokollan kautta.
Luodaan WSDL-tiedostoa
WSDL-tiedosto luodaan aina, kun verkkopalvelu on rakennettu millä tahansa ohjelmointikielellä.
Koska WSDL-tiedosto on melko monimutkainen luoda tyhjästä, kaikki editorit, kuten Visual Studio for .Net ja Eclipse varten Java luo WSDL-tiedoston automaattisesti.
Alla on esimerkki Visual Studiossa luodusta WSDL-tiedostosta.
<?xml version="1.0"?>
<definitions name="Tutorial"
targetNamespace=http://Guru99.com/Tutorial.wsdl
xmlns:tns=http://Guru99.com/Tutorial.wsdl
xmlns:xsd1=http://Guru99.com/Tutorial.xsd
xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace=http://Guru99.com/Tutorial.xsd
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TutorialNameRequest">
<complexType>
<all>
<element name="TutorialName" type="string"/>
</all>
</complexType>
</element>
<element name="TutorialIDRequest">
<complexType>
<all>
<element name="TutorialID" type="number"/>
</all>
</complexType>
</element>
</schema>
</types>
<message name="GetTutorialNameInput">
<part name="body" element="xsd1:TutorialIDRequest"/>
</message>
<message name="GetTutorialNameOutput">
<part name="body" element="xsd1:TutorialNameRequest"/>
</message>
<portType name="TutorialPortType">
<operation name="GetTutorialName">
<input message="tns:GetTutorialNameInput"/>
<output message="tns:GetTutorialNameOutput"/>
</operation>
</portType>
<binding name="TutorialSoapBinding" type="tns:TutorialPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetTutorialName">
<soap:operation soapAction="http://Guru99.com/GetTutorialName"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="TutorialService">
<documentation>TutorialService</documentation>
<port name="TutorialPort" binding="tns:TutorialSoapBinding">
<soap:address location="http://Guru99.com/Tutorial"/>
</port>
</service>
</definitions>
Yllä oleva WSDL-tiedosto näyttää erittäin pelottavalta kaikille käyttäjille. Käsittelemme eri osia yksityiskohtaisesti seuraavissa opetusohjelmissa, mutta nyt katsotaan yhteenveto siitä, mitä kukin WSDL-tiedoston osio todella tekee
Verkkopalveluesimerkin julkaiseminen
Katsotaanpa nyt esimerkkiä, kuinka voimme julkaista verkkopalvelun ja käyttää sitä Visual Studion avulla.
Tässä esimerkissä luomme verkkopalvelun yhdellä WebMethodilla. Tämä menetelmä hyväksyy kokonaislukuparametrin nimeltä "TutorialID". Web-menetelmä palauttaa sitten merkkijonon nimeltä "Web Services".
Luomme sitten konsolipohjaisen sovelluksen, joka kuluttaa tämän verkkopalvelun ja kutsuu verkkomenetelmäämme sen mukaisesti.
Katsotaanpa tämän esimerkin suorittamiseen tarvittavia vaiheita.
Vaihe 1) Ensimmäinen askel on verkkopalvelun luominen. Yksityiskohtaiset vaiheet, miten Asp.Net web-projekti ja verkkopalvelu luodaan on selitetty tässä; Noudata samoja vaiheita luodaksesi projektin ja verkkopalvelun vastaavasti. Tärkeintä on syöttää alla oleva koodi Web Services -tiedostoon.
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;
}
}
}
Koodin selitys:
- Täällä luomme WebMethodin nimeltä "Guru99WebService". Tässä verkkomenetelmässä sisällytämme kokonaislukuparametrin, joka on välitettävä aina, kun tätä verkkomenetelmää kutsutaan.
- Seuraavaksi määrittelemme muuttujan nimeltä "TutorialName", joka sisältää "Web Services" -merkkijonoarvon. Tämä on arvo, joka palautetaan, kun verkkopalvelua kutsutaan.
Vaihe 2) Kun olemme määrittäneet verkkopalvelutiedoston, seuraava vaihe on luoda asiakasprojekti, joka kuluttaa tämän verkkopalvelun.
Luodaan yksinkertainen konsolisovellus, joka kutsuu tätä verkkopalvelua, kutsuu "Guru99WebServicen" ja näyttää sitten web-menetelmän tulosteen konsolin lokinäytössä. Luo konsolisovellus noudattamalla alla olevia ohjeita.
Napsauta hiiren kakkospainikkeella Visual Studio -ratkaisutiedostoa ja valitse vaihtoehto Lisää-> Uusi projekti
Vaihe 3) Tässä vaiheessa
- Muista valita ensin Visual C# Windows vaihtoehto. Valitse sitten konsolisovelluksen luomisvaihtoehto.
- Anna projektillesi nimi, joka meidän tapauksessamme on annettu nimellä "DemoApplication".
Kun olet napsauttanut OK-painiketta yllä olevassa näytössä, voit nähdä projektin Visual Studion Solution Explorerissa.
Vaihe 4) Tässä vaiheessa asetat DemoApplication Console -sovelluksen käynnistysprojektiksi. Tämä tehdään sen varmistamiseksi, että tämä sovellus käynnistyy ensimmäisenä, kun koko Visual Studio -projekti suoritetaan. Tämä konsolisovellus puolestaan soittaa verkkopalveluun, jonka Visual Studio käynnistää automaattisesti.
Viimeistele tämä vaihe napsauttamalla hiiren kakkospainikkeella DemoApplication-projektia ja valitsemalla vaihtoehto "Aseta käynnistysprojektiksi".
Vaihe 5) Seuraava askel on lisätä "Guru99Webservice" -palvelumme viite konsolisovellukseemme. Tämä tehdään, jotta DemoApplication voi viitata verkkopalveluun ja kaikkiin verkkopalvelun verkkomenetelmiin.
Voit tehdä tämän napsauttamalla hiiren kakkospainikkeella DemoApplication-projektitiedostoa ja valitsemalla valikosta Lisää-> Palveluviite.
Vaihe 6) Tässä vaiheessa annamme eri arvot, joita tarvitaan palveluviitteemme lisäämiseen
- Ensinnäkin meidän on valittava tutkimusvaihtoehtomme. Tämä vaihtoehto hakee automaattisesti WSDL-tiedoston TutorialService-verkkopalveluamme varten.
- Seuraavaksi meidän pitäisi antaa nimi palveluviitteellemme. Meidän tapauksessamme annamme sille nimen Guru99Webservice.
- Sitten meidän on laajennettava TutorialService.asmx-vaihtoehtoa, jotta voimme nähdä GetTutorialService-menetelmän oikealla puolella. Tässä TutorialService.asmx on Visual Studion .Net-tiedostomme nimi, joka sisältää verkkopalvelumme koodin.
- Sitten näemme Web-menetelmämme, joka meillä oli verkkopalvelussamme, joka tunnetaan nimellä "GetTutorialService".
Kun napsautamme 'OK'-painiketta, kaikki tämän verkkopalvelun käyttämiseen tarvittava koodi lisätään DemoApplication Console -sovellukseemme alla kuvatulla tavalla.
Kuvakaappaus osoittaa, että "Guru99Webservice" lisättiin onnistuneesti konsolisovellukseemme.
Vaihe 7) Seuraava askel on lisätä koodi konsolisovellukseemme päästäksesi verkkopalvelumme verkkomenetelmään. Avaa Program.cs-kooditiedosto, joka tulee automaattisesti konsolisovelluksen mukana, ja lisää alla oleva koodi
namespace DemoApplication
{
class Program
{
static void Main(string[ ] args)
{
var client = new Guru99Webservice.Guru99WebserviceSoapClient();
Console.WriteLine(client.GetTutorialService(l));
Console.ReadKey();
}
}
}
Koodin selitys: -
- Ensimmäinen osa on valita Program.cs-tiedosto. Tämä on päätiedosto, jonka Visual Studio luo konsolisovellusta luotaessa. Tämä tiedosto suoritetaan, kun konsolisovellus (tapauksessamme demosovellus) suoritetaan.
- Luomme sitten muuttujan nimeltä "client", joka asetetaan aiemmassa vaiheessa luodun Palveluviitteen esiintymään. Meidän tapauksessamme palveluviite on 'Guru99Webservice.Guru99WebserviveSoapClient()'
- Kutsumme sitten Web-metodiamme "GetTutorialService" TutorialService-verkkopalvelussa. Muista, että GetTutorialService-menetelmämme hyväksyy kokonaislukuparametrin, joten välitämme vain kokonaislukuparametrin verkkomenetelmälle.
- Tämä viimeinen rivi on vain sen varmistamiseksi, että konsolin lokiruutu pysyy aktiivisena, jotta voimme tarkastella tulostetta. Tämä komento odottaa vain käyttäjän syötteitä.
ulostulo
Kun kaikki yllä olevat vaiheet on suoritettu ja DemoApplication on suoritettu, alla oleva tulos tulee näkyviin.
Tulosteesta näemme selvästi, että DemoApplication kutsuu verkkopalveluamme ja että verkkopalvelun palauttama merkkijono näkyy konsolilokissamme.
Yhteenveto
- WSDL:n täysi muoto on Web Services Descriptionikieli
- WSDL-dokumentti on dokumentti, jota käytetään kuvaamaan verkkopalvelua. Tämä on keskeistä, jotta jokainen asiakassovellus tietää, missä verkkopalvelu sijaitsee. Sen avulla asiakassovellus voi myös ymmärtää verkkopalvelussa käytettävissä olevia menetelmiä.
- WSDL-tiedoston avulla verkkopalvelu on erittäin helppo toteuttaa yhdellä ohjelmointikielellä ja kutsua eri ohjelmointikielellä.
- WSDL-dokumentti koostuu tavallisesti sanomasta. Jokaiselle verkkomenetelmälle on 2 viestiä, joista toinen on tuloa ja toinen tulostetta varten. Yhdessä ne muodostavat operaation.
- Web Services Description Language (tulee sanoista WSDL) -tiedostot luodaan yleensä editorissa, jota käytetään vastaavalle ohjelmointikielelle.
- Olemme nähneet kuinka voimme käyttää verkkopalvelua Visual Studiossa. Tämä voidaan tehdä luomalla toinen projekti, joka on konsolisovellus. Sitten lisäämällä palveluviitteen pääsemme käyttämään verkkopalvelumme verkkomenetelmiä.














