SOAP-verkkopalvelujen opetusohjelma: Mikä on SOAP-protokolla? ESIMERKKI

Sisällysluettelo:

Anonim

Mikä on SOAP?

SOAP on XML-pohjainen protokolla verkkopalveluiden käyttämiseen HTTP: n kautta. Siinä on eritelmiä, joita voidaan käyttää kaikissa sovelluksissa.

SOAP tunnetaan nimellä Simple Object Access Protocol, mutta myöhemmin se vain lyhennettiin SOAP v1.2: ksi. SOAP on protokolla tai toisin sanoen määritelmä siitä, miten verkkopalvelut puhuvat keskenään tai puhuvat niitä käyttävien asiakassovellusten kanssa.

SOAP kehitettiin välikieleksi, jotta erilaisille ohjelmointikielille rakennetut sovellukset voisivat puhua helposti keskenään ja välttää äärimmäistä kehitystyötä.

Tässä SOAP-verkkopalvelujen opetusohjelmassa opit

  • SOAP Johdanto
  • SOAP: n edut
  • SOAP Rakennuspalikat
  • SOAP-sanoman rakenne
  • SOAP-kirjekuorielementti
  • SOAP-viestintämalli
  • Käytännön SOAP-esimerkki

SOAP Johdanto

Nykymaailmassa on valtava määrä sovelluksia, jotka on rakennettu eri ohjelmointikielille. Esimerkiksi Java-sovelluksessa voi olla verkkosovellus, toinen .Netissä ja toinen PHP: ssä.

Tietojen vaihtaminen sovellusten välillä on ratkaisevan tärkeää nykypäivän verkotetussa maailmassa. Mutta tietojen vaihtaminen näiden heterogeenisten sovellusten välillä olisi monimutkaista. Joten on koodin monimutkaisuus tämän tiedonvaihdon toteuttamiseksi.

Yksi tämän monimutkaisuuden torjumiseksi käytetyistä menetelmistä on käyttää XML: ää (Extensible Markup Language) välikielenä tietojen vaihdossa sovellusten välillä.

Jokainen ohjelmointikieli ymmärtää XML-merkintäkielen. Siksi XML: ää käytettiin tiedonvaihdon taustavälineenä.

XML: n käytöstä kaikilla ohjelmointikielillä tietojenvaihtoa varten ei kuitenkaan ole vakiomäärityksiä. Siellä tulee SOAP-ohjelmisto.

SOAP on suunniteltu toimimaan XML: n kanssa HTTP: n kautta ja sillä on jonkinlainen määrittely, jota voidaan käyttää kaikissa sovelluksissa. Tarkastelemme tarkempia tietoja SOAP-protokollasta seuraavissa luvuissa.

SOAP: n edut

SOAP on protokolla, jota käytetään tietojen vaihdossa sovellusten välillä. Alla on joitain syitä, miksi SOAPia käytetään.

  • Kun kehität SOAP-pohjaisia ​​verkkopalveluja, sinulla on oltava osa kieltä, jota voidaan käyttää verkkopalveluissa keskustellakseen asiakassovellusten kanssa. SOAP on täydellinen väliaine, joka on kehitetty tämän tavoitteen saavuttamiseksi. Tätä protokollaa suosittelee myös W3C-konsortio, joka on kaikkien verkkostandardien hallintoelin.
  • SOAP on kevyt protokolla, jota käytetään tiedonsiirtoon sovellusten välillä. Huomaa avainsana " kevyt ". Koska SOAP-ohjelmointi perustuu XML-kieleen, joka itsessään on kevyt tiedonsiirtokieli, siis SOAP protokollana, joka myös kuuluu samaan luokkaan.
  • SOAP on suunniteltu alustasta riippumattomaksi ja se on myös suunniteltu käyttöjärjestelmästä riippumattomaksi. Joten SOAP-protokolla voi toimia millä tahansa ohjelmointikielipohjaisella sovelluksella sekä Windows- että Linux-alustalla.
  • Se toimii HTTP-protokollalla -SOAP toimii HTTP-protokollalla, joka on oletusprotokolla, jota kaikki verkkosovellukset käyttävät. Siksi ei ole olemassa minkäänlaista mukautusta, jota tarvitaan SOAP-protokollalle rakennettujen verkkopalvelujen suorittamiseksi toimiakseen Internetissä.

SOAP Rakennuspalikat

SOAP-määrittely määrittelee jotain, joka tunnetaan nimellä " SOAP-viesti ", joka lähetetään verkkopalvelulle ja asiakassovellukselle.

Alla oleva SOAP-arkkitehtuurikaavio näyttää SOAP-sanoman eri rakennuspalikat.

SOAP-sanoman rakennuspalikat

SOAP-viesti ei ole muuta kuin pelkkä XML-asiakirja, jolla on alla olevat komponentit.

  • Kirjekuorielementti, joka identifioi XML-asiakirjan SOAP-sanomana - Tämä on osa SOAP-sanomaa ja sitä käytetään kapseloimaan kaikki yksityiskohdat SOAP-sanomaan. Tämä on SOAP-sanoman juurielementti.
  • Otsikkoelementti, joka sisältää otsikkotiedot - Otsikkoelementti voi sisältää tietoja, kuten todennustiedot, joita kutsusovellus voi käyttää. Se voi myös sisältää monimutkaisten tyyppien määritelmän, joita voidaan käyttää SOAP-sanomassa. Oletuksena SOAP-viesti voi sisältää parametreja, jotka voivat olla yksinkertaisia, kuten merkkijonoja ja numeroita, mutta voi olla myös monimutkainen objektityyppi.

Alla on esitetty yksinkertainen monimutkaisen SOAP-palveluesimerkki.

Oletetaan, että halusimme lähettää jäsennellyn tietotyypin, jossa oli yhdistelmä "opetusohjelman nimi" ja "opetusohjelman kuvaus", sitten määritämme monimutkaisen tyypin alla olevan kuvan mukaisesti.

Kompleksityyppi määritetään elementtitagilla . Kaikki tarvittavat rakenteen elementit ja niiden tietotyypit määritetään sitten kompleksityypin kokoelmassa.

  • Body-elementti, joka sisältää puhelu- ja vastaustietoja - Tämä elementti sisältää todelliset tiedot, jotka on lähetettävä verkkopalvelun ja soittavan sovelluksen välillä. Alla on SOAP-verkkopalveluesimerkki SOAP-rungosta, joka todella toimii otsikkokohdassa määritellyllä kompleksityypillä. Tässä on opetusohjelman nimen ja opetusohjelman kuvauksen vastaus, joka lähetetään soittavalle sovellukselle, joka kutsuu tämän verkkopalvelun.
Web ServicesAll about web services

SOAP-sanoman rakenne

Yksi asia on huomata, että verkkopalvelu luo SOAP-viestit automaattisesti automaattisesti, kun sitä kutsutaan.

Aina kun asiakassovellus kutsuu menetelmää verkkopalvelussa, verkkopalvelu luo automaattisesti SOAP-sanoman, jolla on tarvittavat tiedot tiedoista, jotka lähetetään verkkopalvelusta asiakassovellukseen.

Kuten tämän SOAP-opetusohjelman edellisessä aiheessa keskusteltiin, yksinkertaisessa SOAP-viestissä on seuraavat elementit -

  • Kirjekuori-elementti
  • Otsikkoelementti ja
  • Runko-osa
  • Vikaelementti (valinnainen)

Katsotaan alla olevaa esimerkkiä yksinkertaisesta SOAP-sanomasta ja katsotaan, mitä elementti todella tekee.

SOAP-sanoman rakenne
  1. Kuten yllä olevasta SOAP-sanomasta nähdään, SOAP-sanoman ensimmäinen osa on kirjekuorielementti, jota käytetään kapseloimaan koko SOAP-viesti.
  2. Seuraava elementti on SOAP-runko, joka sisältää varsinaisen viestin yksityiskohdat.
  3. Viestimme sisältää verkkopalvelun, jonka nimi on "Guru99WebService".
  4. "Guru99Webservice" hyväksyy tyypin "int" parametrin ja sillä on TutorialID-nimi.

Nyt yllä oleva SOAP-viesti välitetään verkkopalvelun ja asiakassovelluksen välillä.

Näet kuinka hyödyllisiä yllä olevat tiedot ovat asiakassovellukselle. SOAP-sanoma kertoo asiakassovellukselle, mikä on verkkopalvelun nimi, ja mitä parametreja se odottaa, ja myös minkä tyyppinen on kukin parametri, jonka verkkopalvelu ottaa.

SOAP-kirjekuorielementti

Rakennuspalikan ensimmäinen bitti on SOAP-kirjekuori.

SOAP-kirjekuorta käytetään kapseloimaan kaikki tarvittavat tiedot SOAP-viesteistä, jotka vaihdetaan verkkopalvelun ja asiakasohjelman välillä.

SOAP-kirjekuorielementtiä käytetään osoittamaan SOAP-viestin alku ja loppu. Tämä antaa verkkopalveluun soittavan asiakasohjelman tietää, milloin SOAP-viesti loppuu.

Seuraavat kohdat voidaan havaita SOAP-kirjekuorielementissä.

  • Jokaisessa SOAP-viestissä on oltava juurikirje-elementti. SOAP-sanomassa on ehdottomasti oltava kirjekuorielementti.
  • Jokaisessa kirjekuorielementissä on oltava vähintään yksi saippuan runko-osa.
  • Jos kirjekuori-elementti sisältää otsikkoelementin, siinä ei saa olla enempää kuin yksi, ja sen on oltava kirjekuoren ensimmäisenä lapsena ennen runkoelementtiä.
  • Kirjekuori muuttuu, kun SOAP-versiot muuttuvat.
  • V1.1-yhteensopiva SOAP-prosessori tuottaa vian saatuaan v1.2-kirjekuoren nimitilan sisältävän sanoman.
  • V1.2-yhteensopiva SOAP-prosessori luo Version Mismatch -vian, jos se saa viestin, joka ei sisällä v1.2-kirjekuoren nimiavaruutta.

Alla on SOAP-sovellusliittymäesimerkki SOAP-kirjekuorielementin versiosta 1.2.

int

Vikailmoitus

Kun pyyntö tehdään SOAP-verkkopalvelulle, palautettu vastaus voi olla joko 2 muotoa, jotka ovat onnistunut vastaus tai virhevastaus. Kun menestys syntyy, palvelimen vastaus on aina SOAP-viesti. Mutta jos SOAP-vikoja syntyy, ne palautetaan "HTTP 500" -virheinä.

SOAP-vikailmoitus koostuu seuraavista elementeistä.

  1. - Tämä on koodi, joka määrittää virheen koodin. Vikakoodi voi olla jompikumpi alla olevista arvoista
    1. SOAP-ENV: VersionMismatch - Tällöin SOAP Envelope -elementille tulee virheellinen nimitila.
    2. SOAP-ENV: MustUnderstand - Otsikon elementin välitöntä alielementtiä, jonka mustUnderstand-määritteeksi on määritetty "1", ei ymmärretty.
    3. SOAP-ENV: Asiakas - Viesti oli muotoiltu väärin tai se sisälsi virheellisiä tietoja.
    4. SOAP-ENV: Palvelin - Palvelimessa oli ongelma, joten viestiä ei voitu jatkaa.
  2. - Tämä on tekstiviesti, joka antaa virheen yksityiskohtaisen kuvauksen.
  3. (valinnainen) - Tämä on tekstimerkkijono, joka ilmoittaa vian aiheuttajan.
  4. (Valinnainen) - Tämä on elementti sovelluskohtaisille virhesanomille. Joten sovelluksella voi olla oma virhesanoma erilaisille liiketoimintalogiikan tilanteille.

Esimerkki vikailmoituksesta

Alla on esimerkki vikailmoituksesta. Virhe syntyy, jos skenaario, jossa asiakas yrittää käyttää menetelmää nimeltä TutorialID luokassa GetTutorial.

Alla oleva vikailmoitus syntyy, jos menetelmää ei ole määritellyssä luokassa.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Tuotos:

Kun suoritat yllä olevan koodin, se näyttää virheen, kuten "Menetelmän (GetTutorialID) löytäminen epäonnistui luokassa (GetTutorial)"

SOAP-viestintämalli

Kaikki SOAP-viestintä tapahtuu HTTP-protokollan kautta. Ennen SOAP: ää monet verkkopalvelut käyttivät tavallista RPC (Remote Procedure Call) -tyyliä viestintään. Tämä oli yksinkertaisin viestintätyyppi, mutta sillä oli paljon rajoituksia.

Tarkastellaan nyt tässä SOAP API -opetusohjelmassa alla olevaa kaaviota nähdäksesi, miten tämä viestintä toimii. Oletetaan tässä esimerkissä, että palvelin isännöi verkkopalvelua, joka tarjosi kaksi tapaa

  • GetEmployee - Tämä saisi kaikki työntekijän tiedot
  • SetEmployee - Tämä asettaa tietojen yksityiskohtien, kuten työntekijöiden osaston, palkan jne., Arvon vastaavasti.

Normaalissa RPC-tyylisessä viestinnässä asiakas vain kutsui pyyntönsä menetelmät ja lähetti vaaditut parametrit palvelimelle, ja palvelin lähetti sitten halutun vastauksen.

Yllä olevalla viestintämallilla on seuraavat vakavat rajoitukset

  1. Ei kielestä riippumaton - Menetelmiä isännöivä palvelin olisi tietyllä ohjelmointikielellä ja normaalisti puhelut palvelimelle olisivat vain kyseisellä ohjelmointikielellä.
  2. Ei vakioprotokolla - Kun puhelu soitetaan etäproseduurille, puhelua ei suoriteta vakioprotokollan kautta. Tämä oli ongelma, koska lähinnä kaiken verkon välisen viestinnän piti tapahtua HTTP-protokollan kautta.
  3. Palomuurit - Koska RPC-puhelut eivät mene normaalin protokollan kautta, palvelimessa on oltava erilliset portit, jotta asiakas voi kommunikoida palvelimen kanssa. Normaalisti kaikki palomuurit estävät tällaisen liikenteen, ja yleensä vaadittiin paljon kokoonpanoa, jotta tällainen tiedonsiirto asiakkaan ja palvelimen välillä toimisi.

Kaikkien edellä mainittujen rajoitusten voittamiseksi SOAP käyttää sitten alla olevaa viestintämallia

  1. Asiakas muotoili menettelykutsua ja mahdollisia argumentteja koskevat tiedot SOAP-sanomaksi ja lähettää ne palvelimelle osana HTTP-pyyntöä. Tämä prosessi tietojen kapseloimiseksi SOAP-sanomaan tunnettiin nimellä Marshalling.
  2. Palvelin puraisi sitten asiakkaan lähettämän viestin, katsoi mitä asiakas pyysi ja lähetti sitten vastaavan vastauksen asiakkaalle SOAP-viestinä. Asiakkaan lähettämän pyynnön purkaminen tunnetaan nimellä Demarshalling.

Käytännön SOAP-esimerkki

Katsotaan nyt tässä SoapUI-opetusohjelmassa käytännön SOAP-esimerkki,

Todennäköisesti yksi parhaista tavoista nähdä, kuinka SOAP-viestit luodaan, on nähdä verkkopalvelu todella toiminnassa.

Tässä aiheessa tarkastellaan Microsoft.Net-kehyksen käyttöä ASMX-verkkopalvelun rakentamiseen. Tämän tyyppinen verkkopalvelu tukee sekä SOAP-versiota 1.1 että versiota 1.2.

ASMX-verkkopalvelut luovat automaattisesti Web Service Definition Language (WSDL) -asiakirjan. Tätä WSDL-asiakirjaa vaatii kutsuva asiakassovellus, jotta sovellus tietää, mitä verkkopalvelu pystyy tekemään.

Esimerkissämme aiomme luoda yksinkertaisen verkkopalvelun, jota käytetään palauttamaan merkkijono sovellukselle, joka kutsuu verkkopalvelua.

Tätä verkkopalvelua isännöidään Asp.Net-verkkosovelluksessa. Käynnistämme sitten verkkopalvelun ja näemme tuloksen, jonka verkkopalvelu palauttaa.

Visual Studio näyttää myös, mitä SOAP-viestiä siirretään verkkopalvelun ja soittavan sovelluksen välillä.

Ensimmäinen ennakkoedellytys verkkopalvelusovelluksemme asentamiseksi, joka voidaan tehdä noudattamalla seuraavia vaiheita.

Varmista, että järjestelmässäsi on asennettuna Visual Studio 2013 tätä esimerkkiä varten.

Vaihe 1) Ensimmäinen vaihe on luoda tyhjä ASP.Net-verkkosovellus. Napsauta Visual Studio 2013: ssä valikkovaihtoehtoa Tiedosto-> Uusi projekti.

Kun napsautat Uusi projekti -vaihtoehtoa, Visual Studio antaa sinulle uuden valintaikkunan projektityypin valitsemiseksi ja tarvittavien yksityiskohtien antamiseksi projektista. Tämä selitetään seuraavassa vaiheessa.

Vaihe 2) Tässä vaiheessa

  1. Varmista ensin, että valitset ensin ASP.NET-verkkosovelluksen C # -verkkomallin. Projektin on oltava tämän tyyppinen SOAP-palveluprojektin luomiseksi. Valitsemalla tämän vaihtoehdon Visual Studio suorittaa tarvittavat vaiheet lisätäksesi tarvittavat tiedostot, joita kaikki verkkopohjaiset sovellukset edellyttävät.
  2. Anna projektillesi nimi, joka on tapauksessamme annettu nimellä webservice.asmx. Varmista sitten, että annat sijainnin, johon projektitiedostot tallennetaan.

Kun olet valmis, näet projektitiedoston, joka on luotu Visual Studio 2013: n ratkaisuohjelmaasi.

Vaihe 3) Tässä vaiheessa

Aiomme lisätä verkkopalvelutiedoston projektiimme

  1. Ensin napsauta hiiren kakkospainikkeella projektitiedostoa alla olevan kuvan mukaisesti

  1. Kun napsautat hiiren kakkospainikkeella projektitiedostoa, sinulla on mahdollisuus valita vaihtoehto "Lisää-> verkkopalvelu (ASMX) lisätäksesi verkkopalvelutiedoston. Anna verkkopalvelun nimitiedostolle vain Tutorial Service -nimi.

Vaihe 4) Lisää seuraava koodi Opetuspalvelun asmx-tiedostoon.

Koodin selitys:

  1. Tämä koodirivi antaa verkkopalvelutiedostolle nimen. Tämä on tärkeä vaihe, koska se antaa asiakkaan sovellukselle mahdollisuuden soittaa verkkopalveluun verkkopalvelun nimen kautta.
  2. Normaalisti luokkatiedostoa käytetään kapseloimaan verkkopalvelun toiminnot. Joten luokkatiedostossa on määritelty kaikki verkkomenetelmät, jotka tarjoavat jonkin verran toimintoja asiakassovellukselle.
  3. Tässä [WebMethod] tunnetaan attribuuttina, joka kuvaa toimintoa. Seuraava vaihe luo toiminnon nimeltä "Guru99WebService", mutta sisällyttämällä tämä vaihe lisätä [WebMethod] -attribuutti varmistaa, että asiakassovellus voi käyttää tätä menetelmää. Jos tätä määritettä ei ole paikallaan, asiakassovellus ei voi koskaan kutsua menetelmää.
  4. Tässä määritellään funktio nimeltä Guru99WebService, jota käytetään palauttamaan merkkijono kutsuvaan asiakassovellukseen. Tämä toiminto on verkkopalvelu, johon voidaan kutsua mikä tahansa asiakassovellus.
  5. Palautamme lauseen "Tämä on Guru99-verkkopalvelu" merkkijono asiakkaan sovellukseen.

Jos koodi suoritetaan onnistuneesti, seuraava tulos näkyy, kun suoritat koodin selaimessa.

Tuotos:

  • Tulos osoittaa selvästi, että verkkopalvelumme nimi on "Guru99 Web Service", joka on seurausta nimen antamisesta verkkopalvelumme.
  • Voimme myös nähdä, että voimme vedota verkkopalveluun. Jos napsautamme Kutsu-painiketta, saamme alla olevan vastauksen verkkoselaimessa.

Yllä oleva tuotos,

  • Se osoittaa selvästi, että käyttämällä verkkomenetelmää merkkijono "Tämä on Guru99-verkkopalvelu" palautetaan.
  • Visual Studion avulla voit myös tarkastella SOAP-sanomapyyntöä ja vastausta, joka syntyy, kun yllä olevaa verkkopalvelua kutsutaan.

Verkkopalvelua kutsuttaessa syntyvä SOAP-pyyntö näytetään alla.

Koodin selitys:

  1. SOAP-sanoman ensimmäinen osa on kirjekuorielementti, josta on keskusteltu edellisissä luvuissa. Tämä on kapselointielementti, joka on jokaisessa SOAP-sanomassa.
  2. SOAP-runko on seuraava elementti ja sisältää SOAP-sanoman todelliset yksityiskohdat.
  3. Kolmas osa on elementti, joka määrittää, että haluamme kutsua palvelua nimeltä Guru99WebService.

string

Koodin selitys:

  1. SOAP-sanoman ensimmäinen osa on kirjekuorielementti, josta on keskusteltu edellisissä luvuissa. Tämä on kapselointielementti, joka on jokaisessa SOAP-sanomassa.
  2. SOAP-runko on seuraava elementti ja sisältää SOAP-sanoman todelliset yksityiskohdat.
  3. Mielenkiintoinen osa, jonka näet nyt, on merkkijono-attribuutti. Tämä kertoo asiakassovellukselle, että kutsuva verkkopalvelu palauttaa tyypin merkkijonon objektin. Tämä on erittäin hyödyllistä, koska jos asiakasohjelma, joka muuten ei tiedä, mitä verkkopalvelu palauttaa.

Yhteenveto

  • SOAP on protokolla, jota käytetään tietojen vaihtamiseen eri ohjelmointikielille rakennettujen sovellusten välillä.
  • SOAP perustuu XML-määrittelyyn ja toimii HTTP-protokollan kanssa. Tämä tekee siitä täydellisen käytettäväksi verkkosovelluksissa.
  • SOAP-rakennuspalikat koostuvat SOAP-sanomasta. Jokainen SOAP-viesti koostuu kirjekuorielementistä, otsikosta ja runkoelementistä.
  • Kirjekuorielementti on pakollinen osa SOAP-sanomassa, ja sitä käytetään kapseloimaan kaikki tiedot SOAP-sanomassa.
  • Otsikkoelementtiä voidaan käyttää sisältämään tietoja, kuten todennustiedot tai monimutkaisten tietotyyppien määrittely.
  • Runko-elementti on pääelementti, joka sisältää verkkomenetelmien määritelmän sekä tarvittaessa kaikki parametritiedot.