Vodič za web usluge SOAP: Što je SOAP protokol? PRIMJER

Sadržaj:

Anonim

Što je SAPUN?

SOAP je protokol zasnovan na XML-u za pristup web uslugama putem HTTP-a. Ima neke specifikacije koje se mogu koristiti u svim aplikacijama.

SOAP je poznat kao protokol jednostavnog pristupa objektima, ali je u kasnijim vremenima upravo skraćen na SOAP v1.2. SOAP je protokol ili drugim riječima definicija je kako web usluge međusobno razgovaraju ili razgovaraju s klijentskim aplikacijama koje ih pozivaju.

SOAP je razvijen kao posredni jezik, tako da su aplikacije izgrađene na raznim programskim jezicima lako mogle razgovarati i izbjeći ekstremne napore u razvoju.

U ovom uputstvu za SOAP web usluge naučit ćete-

  • Sapun Uvod
  • Prednosti SOAP-a
  • SAPUN Građevni blokovi
  • Struktura SOAP poruke
  • Element omotnice SOAP
  • Model komunikacije SOAP-om
  • Praktični primjer SOAP-a

Sapun Uvod

U današnjem svijetu postoji ogroman broj aplikacija koje su izgrađene na različitim programskim jezicima. Na primjer, može postojati web aplikacija dizajnirana na Javi, druga na. Netu i druga na PHP-u.

Razmjena podataka između aplikacija presudna je u današnjem umreženom svijetu. Ali razmjena podataka između ovih heterogenih aplikacija bila bi složena. To će biti i složenost koda za postizanje ove razmjene podataka.

Jedna od metoda koja se koristi za borbu protiv ove složenosti je uporaba XML-a (Extensible Markup Language) kao posrednog jezika za razmjenu podataka između aplikacija.

Svaki programski jezik može razumjeti XML označni jezik. Stoga se XML koristio kao temeljni medij za razmjenu podataka.

Ali ne postoje standardne specifikacije za upotrebu XML-a u svim programskim jezicima za razmjenu podataka. Tu dolazi SOAP softver.

SOAP je dizajniran za rad s XML-om preko HTTP-a i ima neku vrstu specifikacije koja se može koristiti u svim aplikacijama. Daljnje detalje o SOAP protokolu proučit ćemo u sljedećim poglavljima.

Prednosti SOAP-a

SOAP je protokol koji se koristi za razmjenu podataka između aplikacija. Ispod su neki od razloga zašto se koristi SOAP.

  • Kada razvijate web usluge temeljene na SOAP-u, morate imati neki jezik koji se može koristiti za web usluge za razgovor s klijentskim aplikacijama. SOAP je savršen medij koji je razvijen da bi se postigla ova svrha. Ovaj protokol također preporučuje konzorcij W3C koji je upravno tijelo za sve web standarde.
  • SOAP je lagani protokol koji se koristi za razmjenu podataka između aplikacija. Obratite pažnju na ključnu riječ " svjetlo ". Budući da se programiranje SOAP-a temelji na XML jeziku, koji je sam po sebi lak jezik za razmjenu podataka, SOAP kao protokol koji također spada u istu kategoriju.
  • SOAP je osmišljen kako bi bio neovisan o platformi, a također je dizajniran i za operativni sustav. Dakle, SOAP protokol može raditi s bilo kojim programom koji se temelji na programskom jeziku i na Windows i na Linux platformi.
  • Radi na HTTP protokolu -SOAP radi na HTTP protokolu, koji je zadani protokol koji koriste sve web aplikacije. Stoga ne postoji vrsta prilagodbe koja je potrebna za pokretanje web usluga izgrađenih na protokolu SOAP za rad na World Wide Webu.

SOAP Građevinski blokovi

Specifikacija SOAP-a definira nešto što se naziva " SOAP poruka ", a to je ono što se šalje web usluzi i klijentskoj aplikaciji.

Dijagram dolje SOAP arhitekture prikazuje različite gradivne dijelove SOAP poruke.

Građevinski blokovi za SOAP poruke

SOAP poruka nije ništa drugo nego puki XML dokument koji sadrži dolje navedene komponente.

  • Element omotnice koji identificira XML dokument kao SOAP poruku - ovo je dio SOAP poruke koji se koristi i obuhvaća sve detalje u SOAP poruci. Ovo je korijenski element u SOAP poruci.
  • Element zaglavlja koji sadrži informacije o zaglavlju - Element zaglavlja može sadržavati informacije poput vjerodajnica za provjeru autentičnosti koje aplikacija za pozive može koristiti. Može sadržavati i definiciju složenih tipova koji se mogu koristiti u SOAP poruci. Prema zadanim postavkama SOAP poruka može sadržavati parametre koji mogu biti jednostavnih vrsta, poput nizova i brojeva, ali mogu biti i složeni tip objekta.

Primjer jednostavne SOAP usluge složenog tipa prikazan je u nastavku.

Pretpostavimo da smo željeli poslati strukturirani tip podataka koji je imao kombinaciju "Naziv vodiča" i "Opis vodiča", tada bismo definirali složeni tip kao što je prikazano u nastavku.

Kompleksni tip definiran je oznakom elementa . Svi potrebni elementi strukture zajedno s pripadajućim tipovima podataka tada se definiraju u zbirci složenih tipova.

  • Element Body koji sadrži informacije o pozivu i odgovoru - Ovaj element sadrži stvarne podatke koje treba poslati između web usluge i aplikacije koja poziva. Ispod je primjer SOAP web usluge tijela SOAP koje zapravo radi na složenom tipu definiranom u odjeljku zaglavlja. Ovdje je odgovor naziva i opisa vodiča koji se šalje pozivajućoj aplikaciji koja poziva ovu web uslugu.
Web ServicesAll about web services

Struktura SOAP poruke

Jedna stvar koju treba napomenuti jest da web usluga SOAP poruke obično automatski generira kada je pozvana.

Kad god klijentska aplikacija pozove metodu u web usluzi, web usluga će automatski generirati SOAP poruku koja će sadržavati potrebne detalje podataka koji će se s web usluge poslati klijentskoj aplikaciji.

Kao što je raspravljeno u prethodnoj temi ovog SOAP tutorijala, jednostavna SOAP poruka ima sljedeće elemente -

  • Element omotnice
  • Element zaglavlja i
  • Element tijela
  • Element greške (neobavezno)

Pogledajmo donji primjer jednostavne SOAP poruke i vidjet ćemo koji element zapravo radi.

Struktura SOAP poruke
  1. Kao što se vidi iz gornje SOAP poruke, prvi dio SOAP poruke je element omotnice koji se koristi za inkapsulaciju cijele SOAP poruke.
  2. Sljedeći je element SOAP tijelo koje sadrži detalje stvarne poruke.
  3. Naša poruka sadrži web uslugu koja ima naziv "Guru99WebService".
  4. "Guru99Webservice" prihvaća parametar tipa 'int' i ima naziv TutorialID.

Sada će gornja SOAP poruka biti proslijeđena između web usluge i klijentske aplikacije.

Možete vidjeti koliko su gornje informacije korisne za klijentsku aplikaciju. SOAP poruka govori klijentskoj aplikaciji kako se zove web usluga, kao i koje parametre očekuje, a također i vrstu svakog parametra koji uzima web usluga.

Element omotnice SOAP

Prvi bit građevnog bloka je SOAP omotnica.

SOAP omotnica koristi se za inkapsuliranje svih potrebnih detalja SOAP poruka koje se razmjenjuju između web usluge i klijentske aplikacije.

Element SOAP omotnice koristi se za označavanje početka i kraja SOAP poruke. To omogućuje klijentskoj aplikaciji koja poziva web uslugu da zna kada završava SOAP poruka.

Na elementu omotnice SOAP mogu se primijetiti sljedeće točke.

  • Svaka SOAP poruka mora imati korijenski element omotnice. Apsolutno je obavezno da SOAP poruka ima element omotnice.
  • Svaki element omotnice mora imati barem jedan element tijela sapuna.
  • Ako element omotnice sadrži element zaglavlja, ne smije sadržavati više od jednog i mora se pojaviti kao prvo podređeno mjesto omotnice, prije elementa tijela.
  • Omotnica se mijenja kad se promijene verzije SOAP-a.
  • SOAP procesor kompatibilan s v1.1 generira kvar po primanju poruke koja sadrži prostor imena omotnice v1.2.
  • SOAP procesor kompatibilan s v1.2 generira kvar neusaglašenosti verzije ako primi poruku koja ne uključuje prostor imena v omotnici v1.2.

Ispod je primjer SOAP API-ja verzije 1.2 elementa SOAP omotnice.

int

Poruka greške

Kada se uputi zahtjev web-usluzi SOAP, vraćeni odgovor može biti u dva oblika koji su uspješan odgovor ili odgovor na pogrešku. Kada se generira uspjeh, odgovor poslužitelja uvijek će biti SOAP poruka. Ali ako se generiraju SOAP greške, vraćaju se kao pogreške "HTTP 500".

Poruka SOAP kvara sastoji se od sljedećih elemenata.

  1. - Ovo je kôd koji označava kôd pogreške. Kôd greške može biti bilo koja od dolje navedenih vrijednosti
    1. SOAP-ENV: VersionMismatch - Ovo je slučaj kada se naiđe na nevažeći prostor imena za element SOAP Envelope.
    2. SOAP-ENV: MustUnderstand - Ne razumije se neposredni podređeni element elementa Header, s atributom mustUnderstand postavljenim na "1".
    3. SOAP-ENV: Klijent - Poruka je pogrešno oblikovana ili sadrži netočne podatke.
    4. SOAP-ENV: Poslužitelj - Došlo je do problema sa poslužiteljem, pa se poruka nije mogla nastaviti.
  2. - ovo je tekstualna poruka koja daje detaljan opis pogreške.
  3. (Izborno) - ovo je tekstualni niz koji ukazuje na to tko je uzrokovao kvar.
  4. (izborno) - ovo je element za poruke o pogreškama specifične za aplikaciju. Tako bi aplikacija mogla imati određenu poruku o pogrešci za različite scenarije poslovne logike.

Primjer za poruku o pogrešci

Primjer poruke o pogrešci dat je u nastavku. Pogreška se generira ako scenarij u kojem klijent pokušava upotrijebiti metodu koja se naziva TutorialID u klasi GetTutorial.

Donja poruka o pogrešci generira se u slučaju da metoda ne postoji u definiranoj klasi.

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

Izlaz:

Kada izvršite gornji kod, prikazat će se pogreška poput "Nije uspjelo lociranje metode (GetTutorialID) u klasi (GetTutorial)"

Model komunikacije SOAP-om

Sva komunikacija putem SOAP-a vrši se putem HTTP protokola. Prije SOAP-a, puno je web usluga koristilo standardni RPC (Remote Procedure Call) stil komunikacije. Ovo je bila najjednostavnija vrsta komunikacije, ali imala je puno ograničenja.

Sada u ovom vodiču za SOAP API, razmotrimo dijagram u nastavku kako bismo vidjeli kako funkcionira ova komunikacija. U ovom primjeru, pretpostavimo da poslužitelj hostira web uslugu koja pruža 2 metode kao

  • GetEfficiee - Ovo će dobiti sve detalje o zaposlenicima
  • SetE Employee - Ovim bi se postavila vrijednost pojedinosti, poput zaposlenika, plaće itd.

U uobičajenoj komunikaciji u RPC stilu, klijent bi samo pozvao metode u svom zahtjevu i poslao potrebne parametre poslužitelju, a poslužitelj bi zatim poslao željeni odgovor.

Gornji model komunikacije ima donja ozbiljna ograničenja

  1. Neovisno o jeziku - poslužitelj koji hosting metoda bio bi na određenom programskom jeziku i obično bi pozivi poslužitelju bili samo na tom programskom jeziku.
  2. Nije standardni protokol - kada se uputi poziv daljinskom postupku, poziv se ne provodi putem standardnog protokola. To je bio problem jer se uglavnom sva komunikacija putem weba morala odvijati putem HTTP protokola.
  3. Vatrozidi - Budući da RPC pozivi ne idu putem uobičajenog protokola, na poslužitelju moraju biti otvoreni odvojeni portovi kako bi klijent mogao komunicirati s poslužiteljem. Obično bi svi vatrozidi blokirali takvu vrstu prometa, a općenito je bila potrebna velika konfiguracija kako bi se osiguralo da takva vrsta komunikacije između klijenta i poslužitelja radi.

Da bi nadvladao sva gore navedena ograničenja, SOAP bi tada koristio donji komunikacijski model

  1. Klijent će informacije o pozivu procedure i sve argumente oblikovati u SOAP poruku i poslati ih poslužitelju kao dio HTTP zahtjeva. Ovaj postupak kapsuliranja podataka u SOAP poruku bio je poznat pod nazivom Marshalling.
  2. Poslužitelj bi zatim razmotao poruku koju je poslao klijent, vidio što je klijent zatražio, a zatim klijentu poslao odgovarajući odgovor kao SOAP poruku. Praksa razmotavanja zahtjeva koji je poslao klijent poznata je pod nazivom Demarshalling.

Praktični primjer SOAP-a

Sada u ovom vodiču za SoapUI, pogledajmo praktični primjer SOAP-a,

Vjerojatno je jedan od najboljih načina kako vidjeti kako se generiraju SOAP poruke zapravo vidjeti web uslugu u akciji.

Ova će se tema osvrnuti na korištenje okvira Microsoft.Net za izgradnju ASMX web usluge. Ova vrsta web usluga podržava SOAP verzije 1.1 i verzije 1.2.

ASMX web usluge automatski generiraju dokument Web Service Definition Language (WSDL). Ovaj WSDL dokument potreban je pozivajućoj klijentskoj aplikaciji kako bi aplikacija znala što je web usluga sposobna učiniti.

U našem primjeru stvorit ćemo jednostavnu web uslugu koja će se koristiti za vraćanje niza u aplikaciju koja poziva web uslugu.

Ova će web usluga biti hostirana u web aplikaciji Asp.Net. Zatim ćemo pozvati web uslugu i vidjeti rezultat koji je web usluga vratila.

Visual Studio će nam također pokazati koja se SOAP poruka prenosi između web usluge i pozivne aplikacije.

Prvi preduvjet za postavljanje aplikacije za web usluge što se može učiniti slijedeći korake u nastavku.

Molimo provjerite je li na ovom sustavu instaliran Visual Studio 2013 za ovaj primjer.

Korak 1) Prvi korak je stvaranje prazne web-aplikacije ASP.Net. U Visual Studio 2013 kliknite opciju izbornika Datoteka-> Novi projekt.

Jednom kada kliknete opciju Novi projekt, Visual Studio će vam dati još jedan dijaloški okvir za odabir vrste projekta i davanje potrebnih detalja o projektu. To je objašnjeno u sljedećem koraku.

Korak 2) U ovom koraku,

  1. Prvo odaberite C # web predložak ASP.NET web aplikacije. Projekt mora biti ove vrste da bi se stvorio projekt SOAP usluga. Odabirom ove opcije Visual Studio će zatim izvršiti potrebne korake za dodavanje potrebnih datoteka koje zahtijeva bilo koja web-aplikacija.
  2. Dajte naziv svom projektu koji je u našem slučaju dobio naziv webservice.asmx. Zatim osigurajte mjesto na kojem će se pohraniti datoteke projekta.

Nakon završetka vidjet ćete datoteku projekta stvorenu u vašem istraživaču rješenja u Visual Studio 2013.

Korak 3) U ovom koraku,

U naš ćemo projekt dodati datoteku web usluge

  1. Prvo desnom tipkom miša kliknite datoteku projekta kao što je prikazano u nastavku

  1. Nakon što desnom tipkom miša kliknete datoteku projekta, imat ćete priliku odabrati opciju "Dodaj-> Web usluga (ASMX) za dodavanje datoteke web usluge. Samo navedite naziv Tutorial Service za datoteku naziva web usluge.

Korak 4) Dodajte sljedeći kôd u svoju datoteku asmx Tutorial Service.

Objašnjenje koda:

  1. Ovaj redak koda pruža naziv datoteke vaše web usluge. Ovo je važan korak jer klijentskoj aplikaciji daje mogućnost da web uslugu pozove putem naziva web usluge.
  2. Datoteka klase obično se koristi za inkapsuliranje funkcionalnosti web usluge. Tako će datoteka klase imati definiciju svih web metoda koje će pružiti određenu funkcionalnost klijentskoj aplikaciji.
  3. Ovdje je [WebMethod] poznat kao atribut koji opisuje funkciju. Sljedeći korak stvara funkciju koja se naziva "Guru99WebService", ali uključivanjem ovog koraka dodavanja atributa [WebMethod] osigurava da klijentska aplikacija može pozvati ovu metodu. Ako ovaj atribut nije na mjestu, tada klijentska aplikacija nikada ne može pozvati metodu.
  4. Ovdje definiramo funkciju koja se naziva 'Guru99WebService' koja će se koristiti za vraćanje niza u pozivajuću klijentsku aplikaciju. Ova je funkcija web usluga koju može pozvati bilo koja klijentska aplikacija.
  5. Izjavu return koristimo za vraćanje niza "Ovo je Guru99 web usluga" u klijentsku aplikaciju.

Ako se kôd uspješno izvrši, sljedeći će se izlaz prikazati kada pokrenete svoj kôd u pregledniku.

Izlaz:

  • Rezultat jasno pokazuje da je naziv naše web usluge "Guru99 Web Service", što je rezultat davanja naziva našoj web usluzi.
  • Također možemo vidjeti da se možemo pozivati ​​na web uslugu. Ako kliknemo gumb Prizovi, u web pregledniku dobit ćemo odgovor u nastavku.

Gore navedeni izlaz,

  • Jasno pokazuje da se pozivanjem web metode vraća niz "Ovo je Guru99 web usluga".
  • Visual Studio također vam omogućuje pregled zahtjeva i odgovora za SOAP poruku koji se generiraju kada se pozove gore navedena web usluga.

SOAP zahtjev koji se generira kada se pozove web usluga prikazan je u nastavku.

Objašnjenje koda:

  1. Prvi dio poruke SOAP je element omotnice o čemu se raspravljalo u prethodnim poglavljima. Ovo je enkapsulirajući element koji je prisutan u svakoj SOAP poruci.
  2. Tijelo SOAP-a sljedeći je element i sadrži stvarne detalje SOAP poruke.
  3. Treći dio je element koji određuje da želimo nazvati uslugu koja se naziva 'Guru99WebService'.

string

Objašnjenje koda:

  1. Prvi dio poruke SOAP je element omotnice o čemu se raspravljalo u prethodnim poglavljima. Ovo je enkapsulirajući element koji je prisutan u svakoj SOAP poruci.
  2. Tijelo SOAP-a sljedeći je element i sadrži stvarne detalje SOAP poruke.
  3. Zanimljiv dio koji ćete sada vidjeti je atribut 'string'. To govori klijentskoj aplikaciji da se web usluga koja se zove vraća objekt tipa tipa. Ovo je vrlo korisno jer ako klijentska aplikacija koja inače ne bi znala što web usluga vraća.

Sažetak

  • SOAP je protokol koji se koristi za razmjenu podataka između aplikacija koje su izgrađene na različitim programskim jezicima.
  • SOAP se temelji na XML specifikaciji i radi s HTTP protokolom. To ga čini savršenim za upotrebu unutar web aplikacija.
  • Građevinski blokovi SOAP-a sastoje se od SOAP poruke. Svaka se SOAP poruka sastoji od elementa omotnice, zaglavlja i elementa tijela.
  • Element omotnice obvezni je element u SOAP poruci i koristi se za inkapsuliranje svih podataka u SOAP poruci.
  • Element zaglavlja može se koristiti za sadržavanje informacija kao što su podaci za provjeru autentičnosti ili definicija složenih vrsta podataka.
  • Element body glavni je element koji sadrži definiciju mrežnih metoda, zajedno s bilo kojim informacijama o parametrima, ako je potrebno.