Vadnica za spletne storitve SOAP: Kaj je protokol SOAP? PRIMER

Kazalo:

Anonim

Kaj je milo

SOAP je protokol, ki temelji na XML, za dostop do spletnih storitev prek HTTP. Ima nekaj specifikacij, ki bi jih lahko uporabili v vseh aplikacijah.

SOAP je znan kot protokol enostavnega dostopa do objektov, vendar je bil kasneje le skrajšan na SOAP v1.2. SOAP je protokol ali z drugimi besedami je definicija, kako se spletne storitve med seboj pogovarjajo ali pogovarjajo z odjemalskimi aplikacijami, ki jih prikličejo.

SOAP je bil razvit kot vmesni jezik, tako da so se lahko aplikacije, ki temeljijo na različnih programskih jezikih, zlahka pogovarjale in se izognile izjemnim razvojnim naporom.

V tej vadnici spletnih storitev SOAP boste izvedeli-

  • MILO Uvod
  • Prednosti SOAP-a
  • MILO Gradniki
  • Struktura sporočil SOAP
  • Element ovojnice SOAP
  • Model komunikacije SOAP
  • Praktični primer SOAP

MILO Uvod

V današnjem svetu je ogromno aplikacij, ki so zgrajene na različnih programskih jezikih. Na primer, lahko obstaja spletna aplikacija, zasnovana v Javi, druga v .Netu in druga v PHP.

Izmenjava podatkov med aplikacijami je v današnjem omrežnem svetu ključnega pomena. Toda izmenjava podatkov med temi heterogenimi aplikacijami bi bila zapletena. Tako bo zapletenost kode za izvedbo te izmenjave podatkov.

Ena od metod, ki se uporablja za boj proti tej zapletenosti, je uporaba XML (Extensible Markup Language) kot vmesnega jezika za izmenjavo podatkov med aplikacijami.

Vsak programski jezik lahko razume označevalni jezik XML. Zato je bil XML uporabljen kot osnovni medij za izmenjavo podatkov.

Vendar v vseh programskih jezikih za izmenjavo podatkov ni standardnih specifikacij za uporabo XML. Tu pride programska oprema SOAP.

SOAP je bil zasnovan za delo z XML prek HTTP in ima nekakšne specifikacije, ki jih je mogoče uporabiti v vseh aplikacijah. Nadaljnje podrobnosti o protokolu SOAP bomo preučili v naslednjih poglavjih.

Prednosti SOAP-a

SOAP je protokol, ki se uporablja za izmenjavo podatkov med aplikacijami. Spodaj je nekaj razlogov, zakaj se uporablja SOAP.

  • Pri razvoju spletnih storitev, ki temeljijo na SOAP, morate imeti nekaj jezika, ki ga lahko spletne storitve uporabljajo za pogovore z odjemalskimi aplikacijami. SOAP je popoln medij, ki je bil razvit za dosego tega namena. Ta protokol priporoča tudi konzorcij W3C, ki je organ upravljanja za vse spletne standarde.
  • SOAP je lahek protokol, ki se uporablja za izmenjavo podatkov med aplikacijami. Upoštevajte ključno besedo " light ". Ker programiranje SOAP temelji na jeziku XML, ki je sam po sebi jezik za izmenjavo podatkov, zato SOAP kot protokol spada tudi v isto kategorijo.
  • SOAP je zasnovan tako, da je neodvisen od platforme in je zasnovan tudi kot neodvisen od operacijskega sistema. Torej lahko protokol SOAP deluje v vseh aplikacijah, ki temeljijo na programskem jeziku, tako na platformah Windows kot Linux.
  • Deluje na protokolu HTTP -SOAP deluje na protokolu HTTP, ki je privzeti protokol, ki ga uporabljajo vse spletne aplikacije. Zato ni nobene prilagoditve, ki bi bila potrebna za zagon spletnih storitev, zgrajenih po protokolu SOAP, za delo na svetovnem spletu.

SOAP gradniki

Specifikacija SOAP opredeljuje nekaj, kar se imenuje " sporočilo SOAP ", kar je tisto, kar se pošlje spletni storitvi in ​​odjemalski aplikaciji.

Spodnji diagram arhitekture SOAP prikazuje različne gradnike sporočila SOAP.

Gradniki sporočil SOAP

Sporočilo SOAP ni nič drugega kot zgolj dokument XML, ki vsebuje spodnje komponente.

  • Element ovojnice, ki dokument XML identificira kot sporočilo SOAP - To je del sporočila SOAP, ki se uporablja za vključitev vseh podrobnosti sporočila SOAP. To je korenski element v sporočilu SOAP.
  • Element glave, ki vsebuje informacije o glavi - element glave lahko vsebuje informacije, kot so poverilnice za preverjanje pristnosti, ki jih lahko uporablja klicna aplikacija. Vsebuje lahko tudi opredelitev zapletenih vrst, ki bi jih lahko uporabili v sporočilu SOAP. Sporočilo SOAP lahko privzeto vsebuje parametre, ki so lahko preprostih vrst, kot so nizi in številke, lahko pa je tudi zapleten tip objekta.

Primer preproste storitve SOAP zapletene vrste je prikazan spodaj.

Recimo, da smo želeli poslati strukturiran podatkovni tip, ki je imel kombinacijo "Ime vadnice" in "Opis vadnice", potem bi zapleteni tip opredelili, kot je prikazano spodaj.

Kompleksni tip je definiran z oznako elementa . Vsi zahtevani elementi strukture skupaj z njihovimi tipi podatkov so nato definirani v zbirki kompleksnih tipov.

  • Element Body, ki vsebuje informacije o klicih in odzivih - ta element vsebuje dejanske podatke, ki jih je treba poslati med spletno storitvijo in klicno aplikacijo. Spodaj je primer spletne storitve SOAP telesa SOAP, ki dejansko deluje na kompleksni tip, opredeljen v odseku glave. Tu je odgovor imena vadnice in opisa vadnice, ki se pošlje klicni aplikaciji, ki pokliče to spletno storitev.
Web ServicesAll about web services

Struktura sporočil SOAP

Upoštevati je treba, da sporočila SOAP običajno samodejno ustvarijo spletne storitve, ko jih pokličete.

Kadar koli odjemalska aplikacija pokliče metodo v spletni storitvi, spletna storitev samodejno ustvari sporočilo SOAP, ki vsebuje potrebne podrobnosti o podatkih, ki bodo poslani iz spletne storitve odjemalski aplikaciji.

Kot smo razpravljali v prejšnji temi te vadnice SOAP, ima preprosto sporočilo SOAP naslednje elemente -

  • Element ovojnice
  • Element glave in
  • Element telesa
  • Element napake (neobvezno)

Oglejmo si spodnji primer preprostega sporočila SOAP in si oglejmo, kaj element dejansko počne.

Struktura sporočil SOAP
  1. Kot je razvidno iz zgornjega sporočila SOAP, je prvi del sporočila SOAP element ovojnice, ki se uporablja za enkapsulacijo celotnega sporočila SOAP.
  2. Naslednji element je telo SOAP, ki vsebuje podrobnosti o dejanskem sporočilu.
  3. Naše sporočilo vsebuje spletno storitev z imenom "Guru99WebService".
  4. "Guru99Webservice" sprejme parameter tipa 'int' in ima ime TutorialID.

Zdaj bo zgornje sporočilo SOAP posredovano med spletno storitvijo in odjemalsko aplikacijo.

Vidite lahko, kako koristne so zgornje informacije za odjemalsko aplikacijo. Sporočilo SOAP sporoči odjemalski aplikaciji, kako se imenuje spletna storitev, in tudi, katere parametre pričakuje, ter tudi vrsto vsakega parametra, ki ga sprejme spletna storitev.

Element ovojnice SOAP

Prvi bit gradnika je ovojnica SOAP.

Ovojnica SOAP se uporablja za vključitev vseh potrebnih podrobnosti sporočil SOAP, ki jih izmenjata spletna storitev in odjemalska aplikacija.

Element ovojnice SOAP se uporablja za označevanje začetka in konca sporočila SOAP. To odjemalski aplikaciji, ki pokliče spletno storitev, ve, kdaj se sporočilo SOAP konča.

Na elementu ovojnice SOAP so zabeležene naslednje točke.

  • Vsako sporočilo SOAP mora imeti korenski element ovojnice. Za sporočilo SOAP je obvezno, da ima element ovojnice.
  • Vsak element ovojnice mora imeti vsaj en element telesa mila.
  • Če element ovojnice vsebuje element glave, ne sme vsebovati več kot enega in mora biti prikazan kot prvi podrejeni element ovojnice pred elementom telesa.
  • Ovojnica se spremeni, ko se spremenijo različice SOAP.
  • Procesor SOAP, združljiv z v1.1, ustvari napako, ko prejme sporočilo, ki vsebuje imenski prostor ovojnice v1.2.
  • Procesor SOAP, skladen z različico 1.2, ustvari napako različice neujemanja, če prejme sporočilo, ki ne vključuje imenskega prostora ovojnice v1.2.

Spodaj je primer SOAP API različice 1.2 elementa ovojnice SOAP.

int

Sporočilo o napaki

Ko je vložena zahteva za spletno storitev SOAP, je lahko vrnjeni odgovor bodisi v dveh obrazcih, ki sta uspešen odgovor ali odziv na napako. Ko je uspeh ustvarjen, bo odgovor strežnika vedno sporočilo SOAP. Če pa se generirajo napake SOAP, se vrnejo kot napake "HTTP 500".

Sporočilo o napaki SOAP je sestavljeno iz naslednjih elementov.

  1. - to je koda, ki označuje kodo napake. Koda napake je lahko katera koli od spodnjih vrednosti
    1. SOAP-ENV: VersionMismatch - Takrat pride do neveljavnega imenskega prostora za element ovojnice SOAP.
    2. SOAP-ENV: MustUnderstand - Neposredni podrejeni element Header z atributom mustUnderstand, nastavljenim na "1", ni bil razumljen.
    3. SOAP-ENV: odjemalec - sporočilo je bilo nepravilno oblikovano ali vsebuje napačne podatke.
    4. SOAP-ENV: Strežnik - Prišlo je do težave s strežnikom, zato sporočilo ni moglo nadaljevati.
  2. - To je besedilno sporočilo, ki vsebuje podroben opis napake.
  3. (Izbirno) - to je besedilni niz, ki označuje, kdo je povzročil napako.
  4. (neobvezno) - to je element za sporočila o napakah, specifična za program. Tako bi lahko imela aplikacija posebno sporočilo o napaki za različne scenarije poslovne logike.

Primer sporočila o napaki

Primer sporočila o napaki je spodaj. Napaka se ustvari, če scenarij, v katerem odjemalec poskuša uporabiti metodo, imenovano TutorialID, v razredu GetTutorial.

Spodnje sporočilo o napaki se generira, če metoda ne obstaja v definiranem razredu.

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

Izhod:

Ko zaženete zgornjo kodo, bo prikazana napaka, kot je »Ni uspelo najti metode (GetTutorialID) v razredu (GetTutorial)«

Model komunikacije SOAP

Vsa komunikacija prek SOAP poteka prek protokola HTTP. Pred SOAP-om je veliko spletnih storitev za komunikacijo uporabljalo standardni slog RPC (Remote Procedure Call). To je bila najpreprostejša vrsta komunikacije, vendar je imela veliko omejitev.

Zdaj v tej vadnici SOAP API si oglejmo spodnji diagram, da vidimo, kako deluje ta komunikacija. V tem primeru predpostavimo, da strežnik gosti spletno storitev, ki ponuja dve metodi kot

  • GetEfficiee - S tem bi dobili vse podrobnosti o zaposlenih
  • SetE Employee - s tem bi ustrezno nastavili vrednost podrobnosti, kot so zaposleni, plača itd.

V običajnem komunikacijskem slogu RPC odjemalec samo pokliče metode v svoji zahtevi in ​​strežniku pošlje zahtevane parametre, strežnik pa nato pošlje želeni odgovor.

Zgornji komunikacijski model ima spodaj resne omejitve

  1. Ni neodvisno od jezika - strežnik, ki gosti metode, bi bil v določenem programskem jeziku in običajno bi bili klici strežnika samo v tem programskem jeziku.
  2. Ni standardni protokol - Ko pokličete oddaljeni postopek, se klic ne izvede prek standardnega protokola. To je bilo vprašanje, saj je bilo večinoma vso spletno komunikacijo treba izvajati prek protokola HTTP.
  3. Požarni zidovi - Ker klici RPC ne gredo prek običajnega protokola, morajo biti na strežniku odprta ločena vrata, da lahko odjemalec komunicira s strežnikom. Običajno bi vsi požarni zidovi blokirali tovrstni promet in na splošno je bilo treba veliko konfiguracije, da se zagotovi, da bo tovrstna komunikacija med odjemalcem in strežnikom delovala.

Da bi premagal vse zgoraj navedene omejitve, bi nato SOAP uporabil spodnji komunikacijski model

  1. Naročnik bi informacije o klicu postopka in morebitne argumente oblikoval v sporočilo SOAP in jih poslal strežniku kot del zahteve HTTP. Ta postopek kapsuliranja podatkov v sporočilo SOAP je bil znan kot Marshalling.
  2. Nato bi strežnik razpakiral sporočilo, ki ga je poslal odjemalec, videl, za kaj je stranka zahtevala, in nato odjemalcu poslal ustrezen odgovor kot sporočilo SOAP. Praksa razpakiranja zahteve, ki jo pošlje stranka, je znana kot Demarshalling.

Praktični primer SOAP

Zdaj v tej vadnici SoapUI si poglejmo praktičen primer SOAP,

Verjetno je eden najboljših načinov, kako ugotoviti, kako se ustvarjajo sporočila SOAP, dejansko videti spletno storitev v akciji.

Ta tema bo obravnavala uporabo ogrodja Microsoft.Net za izdelavo spletne storitve ASMX. Ta vrsta spletnih storitev podpira SOAP različice 1.1 in različice 1.2.

Spletne storitve ASMX samodejno ustvarijo dokument WSDL (Web Service Definition Language). Ta dokument WSDL zahteva klicna odjemalska aplikacija, tako da aplikacija ve, kaj je zmožna spletna storitev.

V našem primeru bomo ustvarili preprosto spletno storitev, ki bo uporabljena za vrnitev niza v aplikacijo, ki pokliče spletno storitev.

Ta spletna storitev bo gostovala v spletni aplikaciji Asp.Net. Nato bomo poklicali spletno storitev in videli rezultat, ki ga vrne spletna storitev.

Visual Studio nam bo tudi pokazal, kaj se sporočilo SOAP posreduje med spletno storitvijo in klicno aplikacijo.

Prvi predpogoj za nastavitev aplikacije za spletno storitev, ki jo lahko naredite po naslednjih korakih.

Za ta primer zagotovite, da je v vašem sistemu nameščen Visual Studio 2013.

Korak 1) Prvi korak je ustvariti prazno spletno aplikacijo ASP.Net. V Visual Studio 2013 kliknite menijsko možnost Datoteka-> Nov projekt.

Ko kliknete možnost Nov projekt, vam bo Visual Studio odprl še eno pogovorno okno za izbiro vrste projekta in potrebne podrobnosti o projektu. To je razloženo v naslednjem koraku.

Korak 2) V tem koraku

  1. Najprej izberite spletno predlogo C # spletne aplikacije ASP.NET. Projekt mora biti te vrste, da lahko ustvarite projekt storitev SOAP. Z izbiro te možnosti bo Visual Studio nato izvedel potrebne korake za dodajanje potrebnih datotek, ki jih zahteva katera koli spletna aplikacija.
  2. Navedite ime za svoj projekt, ki je bil v našem primeru podan kot webservice.asmx. Nato zagotovite lokacijo, kjer bodo shranjene projektne datoteke.

Ko končate, boste videli projektno datoteko, ustvarjeno v raziskovalcu rešitev v Visual Studio 2013.

Korak 3) V tem koraku

V naš projekt bomo dodali datoteko spletne storitve

  1. Najprej z desno miškino tipko kliknite projektno datoteko, kot je prikazano spodaj

  1. Ko z desno miškino tipko kliknete datoteko projekta, lahko izberete možnost "Dodaj-> Spletna storitev (ASMX), da dodate datoteko s spletno storitvijo. Za datoteko z imeni spletne storitve samo navedite ime Tutorial Service.

Korak 4) V datoteko asmx Tutorial Service dodajte naslednjo kodo.

Razlaga kode:

  1. V tej vrstici kode je ime datoteke vaše spletne storitve. To je pomemben korak, saj odjemalski aplikaciji omogoči, da pokliče spletno storitev prek imena spletne storitve.
  2. Datoteka razreda se običajno uporablja za vključitev funkcionalnosti spletne storitve. Tako bo datoteka predavanja imela definicijo vseh spletnih metod, ki bodo odjemalski aplikaciji nudile nekaj funkcionalnosti.
  3. Tu je [WebMethod] znan kot atribut, ki opisuje funkcijo. Naslednji korak ustvari funkcijo, imenovano "Guru99WebService", vendar z vključitvijo tega koraka dodajanja atributa [WebMethod] zagotavlja, da lahko odjemalska aplikacija prikliče to metodo. Če tega atributa ni na mestu, potem odjemalska aplikacija metode nikoli ne more poklicati.
  4. Tu definiramo funkcijo, imenovano 'Guru99WebService', ki bo uporabljena za vrnitev niza klicni odjemalski aplikaciji. Ta funkcija je spletna storitev, ki jo lahko pokliče katera koli odjemalska aplikacija.
  5. Izkaz return uporabimo za vrnitev niza "To je spletna storitev Guru99" v odjemalsko aplikacijo.

Če se koda uspešno izvede, se pri zagonu kode v brskalniku prikaže naslednji izhod.

Izhod:

  • Rezultat jasno kaže, da je ime naše spletne storitve "Spletna storitev Guru99", kar je rezultat dajanja imena naši spletni storitvi.
  • Prav tako lahko vidimo, da lahko pokličemo spletno storitev. Če kliknemo gumb Prikliči, bomo v spletnem brskalniku dobili spodnji odgovor.

Zgornji izhod,

  • Jasno kaže, da se s sklicem na spletno metodo vrne niz "To je spletna storitev Guru99".
  • Visual Studio omogoča tudi ogled zahteve in odgovora na sporočilo SOAP, ki se ustvari, ko pokličete zgornjo spletno storitev.

Zahteva SOAP, ki se ustvari ob klicu spletne storitve, je prikazana spodaj.

Razlaga kode:

  1. Prvi del sporočila SOAP je element ovojnice, o čemer smo razpravljali v prejšnjih poglavjih. To je enkapsulacijski element, ki je prisoten v vsakem sporočilu SOAP.
  2. Telo SOAP je naslednji element in vsebuje dejanske podrobnosti sporočila SOAP.
  3. Tretji del je element, ki določa, da želimo poklicati storitev, ki se imenuje „Guru99WebService“.

string

Razlaga kode:

  1. Prvi del sporočila SOAP je element ovojnice, o čemer smo razpravljali v prejšnjih poglavjih. To je enkapsulacijski element, ki je prisoten v vsakem sporočilu SOAP.
  2. Telo SOAP je naslednji element in vsebuje dejanske podrobnosti sporočila SOAP.
  3. Zanimiv del, ki ga boste videli zdaj, je atribut 'string'. To odjemalski aplikaciji sporoči, da poklicana spletna storitev vrne objekt vrste tipa. To je zelo koristno, ker če odjemalska aplikacija, ki sicer ne bi vedela, kaj spletna storitev vrne.

Povzetek

  • SOAP je protokol, ki se uporablja za izmenjavo podatkov med aplikacijami, ki temeljijo na različnih programskih jezikih.
  • SOAP temelji na specifikaciji XML in deluje s protokolom HTTP. Zaradi tega je idealen za uporabo v spletnih aplikacijah.
  • Gradbeni elementi SOAP so sestavljeni iz sporočila SOAP. Vsako sporočilo SOAP je sestavljeno iz elementa ovojnice, glave in elementa telesa.
  • Element ovojnice je obvezen element sporočila SOAP in se uporablja za vključitev vseh podatkov sporočila SOAP.
  • Element glave se lahko uporablja za vsebovanje informacij, kot so informacije za preverjanje pristnosti ali definicija zapletenih podatkovnih vrst.
  • Element body je glavni element, ki vsebuje definicijo spletnih metod, skupaj z vsemi informacijami o parametrih, če je potrebno.