Výukový program pre webové služby SOAP: Čo je protokol SOAP? PRÍKLAD

Obsah:

Anonim

Čo je to SOAP?

SOAP je protokol založený na XML pre prístup k webovým službám cez HTTP. Má určitú špecifikáciu, ktorú je možné použiť vo všetkých aplikáciách.

SOAP je známy ako Simple Object Access Protocol, ale v neskorších dobách bol len skrátený na SOAP v1.2. SOAP je protokol alebo inými slovami definícia toho, ako webové služby medzi sebou komunikujú alebo komunikujú s klientskými aplikáciami, ktoré ich vyvolávajú.

SOAP bol vyvinutý ako intermediálny jazyk, aby aplikácie postavené na rôznych programovacích jazykoch mohli navzájom ľahko komunikovať a vyhnúť sa extrémnemu vývojovému úsiliu.

V tomto výučbe webových služieb SOAP sa naučíte -

  • Úvod do SOAP
  • Výhody protokolu SOAP
  • SOAP Stavebné bloky
  • Štruktúra správy SOAP
  • Element obálky SOAP
  • Komunikačný model SOAP
  • Praktický príklad SOAP

Úvod do SOAP

V dnešnom svete existuje obrovské množstvo aplikácií, ktoré sú postavené na rôznych programovacích jazykoch. Napríklad by mohla existovať webová aplikácia navrhnutá v prostredí Java, iná v prostredí .Net a iná v jazyku PHP.

Výmena dát medzi aplikáciami je v dnešnom sieťovo prepojenom svete zásadná. Výmena dát medzi týmito heterogénnymi aplikáciami by však bola zložitá. Komplexnosť kódu na uskutočnenie tejto výmeny údajov bude takisto rovnaká.

Jednou z metód používaných na boj proti tejto zložitosti je použitie XML (Extensible Markup Language) ako sprostredkovateľského jazyka na výmenu údajov medzi aplikáciami.

Každý programovací jazyk rozumie značkovaciemu jazyku XML. Preto sa ako podkladové médium na výmenu údajov používalo XML.

Neexistujú však žiadne štandardné špecifikácie používania XML vo všetkých programovacích jazykoch na výmenu údajov. To je miesto, kde prichádza softvér SOAP.

SOAP bol navrhnutý pre prácu s XML cez HTTP a má určitú špecifikáciu, ktorú je možné použiť vo všetkých aplikáciách. V nasledujúcich kapitolách sa pozrieme na ďalšie podrobnosti o protokole SOAP.

Výhody protokolu SOAP

SOAP je protokol používaný na výmenu údajov medzi aplikáciami. Ďalej uvádzame niektoré z dôvodov, prečo sa používa SOAP.

  • Pri vývoji webových služieb založených na SOAP musíte mať určitý jazyk, ktorý je možné použiť pre webové služby na komunikáciu s klientskými aplikáciami. SOAP je perfektné médium, ktoré bolo vyvinuté na dosiahnutie tohto účelu. Tento protokol tiež odporúča konzorcium W3C, ktoré je riadiacim orgánom pre všetky webové štandardy.
  • SOAP je ľahký protokol, ktorý sa používa na výmenu údajov medzi aplikáciami. Všimnite si kľúčové slovo „ light “. Pretože programovanie SOAP je založené na jazyku XML, ktorý je sám o sebe ľahkým jazykom na výmenu údajov, preto SOAP ako protokol spadá tiež do rovnakej kategórie.
  • SOAP je navrhnutý tak, aby bol nezávislý na platforme, a tiež je navrhnutý tak, aby bol nezávislý na operačnom systéme. Protokol SOAP teda môže pracovať s ľubovoľnými aplikáciami založenými na programovacom jazyku na platforme Windows aj Linux.
  • Funguje na protokole HTTP - SOAP pracuje na protokole HTTP, čo je predvolený protokol používaný všetkými webovými aplikáciami. Preto na spustenie webových služieb založených na protokole SOAP na prácu v sieti WWW nie je potrebné nijaké prispôsobenie.

Stavebné bloky SOAP

Špecifikácia SOAP definuje niečo známe ako „ správa SOAP “, čo sa odosiela webovej službe a klientskej aplikácii.

Nižšie uvedený diagram architektúry SOAP zobrazuje rôzne stavebné bloky správy SOAP.

Stavebné bloky správ SOAP

Správa SOAP nie je nič iné ako obyčajný dokument XML, ktorý má nižšie uvedené komponenty.

  • Element Envelope, ktorý identifikuje dokument XML ako správu SOAP - Toto je obsahujúca časť správy SOAP a používa sa na zapuzdrenie všetkých podrobností do správy SOAP. Toto je koreňový prvok v správe SOAP.
  • Prvok hlavičky, ktorý obsahuje informácie o hlavičke - Element hlavičky môže obsahovať informácie, ako sú napríklad autentifikačné údaje, ktoré môže volajúca aplikácia použiť. Môže tiež obsahovať definíciu komplexných typov, ktoré by sa mohli použiť v správe SOAP. Predvolene môže správa SOAP obsahovať parametre, ktoré môžu byť jednoduchého typu, ako sú reťazce a čísla, ale môžu to byť aj zložité typy objektov.

Nižšie je uvedený jednoduchý príklad služby SOAP zložitého typu.

Predpokladajme, že sme chceli poslať štruktúrovaný dátový typ, ktorý mal kombináciu „Názov výučby“ a „Popis výučby“, potom by sme definovali komplexný typ, ako je uvedené nižšie.

Typ komplexu je definovaný značkou prvku . Všetky požadované prvky štruktúry spolu s ich príslušnými dátovými typmi sú potom definované v kolekcii komplexných typov.

  • Prvok Body, ktorý obsahuje informácie o volaní a odpovediach - Tento prvok obsahuje skutočné údaje, ktoré je potrebné odoslať medzi webovou službou a volajúcou aplikáciou. Ďalej je uvedený príklad SOAP webovej služby tela SOAP, ktorý skutočne pracuje na komplexnom type definovanom v sekcii hlavičky. Tu je odpoveď Názov výučby a Popis výučby, ktoré sa odošlú do volajúcej aplikácie, ktorá volá túto webovú službu.
Web ServicesAll about web services

Štruktúra správy SOAP

Je potrebné si uvedomiť, že správy SOAP sú zvyčajne automaticky generované webovou službou, keď je volaná.

Kedykoľvek klientská aplikácia zavolá metódu vo webovej službe, webová služba automaticky vygeneruje správu SOAP, ktorá bude obsahovať potrebné podrobnosti o údajoch, ktoré sa odošlú z webovej služby do klientskej aplikácie.

Ako už bolo spomenuté v predchádzajúcej téme tohto tutoriálu SOAP, jednoduchá správa SOAP obsahuje nasledujúce prvky -

  • Element Obálka
  • Prvok hlavičky a
  • Prvok tela
  • Poruchový prvok (voliteľný)

Pozrime sa na príklad nižšie jednoduchej správy SOAP a pozrime sa, aký prvok vlastne robí.

Štruktúra správy SOAP
  1. Ako je zrejmé z vyššie uvedenej správy SOAP, prvou časťou správy SOAP je obalový prvok, ktorý sa používa na zapuzdrenie celej správy SOAP.
  2. Ďalším prvkom je telo SOAP, ktoré obsahuje podrobnosti o skutočnej správe.
  3. Naša správa obsahuje webovú službu s názvom „Guru99WebService“.
  4. „Guru99Webservice“ prijíma parameter typu „int“ a má názov TutorialID.

Teraz bude vyššie uvedená správa SOAP odovzdaná medzi webovou službou a klientskou aplikáciou.

Môžete vidieť, aké užitočné sú vyššie uvedené informácie pre klientsku aplikáciu. Správa SOAP informuje klientsku aplikáciu o tom, aký je názov webovej služby, a tiež o tom, aké parametre očakáva a tiež aký je typ každého parametra, ktorý webová služba prijíma.

Element obálky SOAP

Prvým bitom stavebného bloku je obálka SOAP.

Obálka SOAP sa používa na zapuzdrenie všetkých potrebných podrobností správ SOAP, ktoré sa vymieňajú medzi webovou službou a klientskou aplikáciou.

Element obálky SOAP sa používa na označenie začiatku a konca správy SOAP. Toto umožňuje klientskej aplikácii, ktorá volá webovú službu, vedieť, kedy sa správa SOAP končí.

Na element obálky SOAP je možné poznamenať nasledujúce body.

  • Každá správa SOAP musí mať koreňový prvok Envelope. Pre správu SOAP je absolútne nevyhnutné, aby obsahovala prvok obálky.
  • Každý prvok Obálky musí mať aspoň jeden prvok tela mydla.
  • Ak prvok Envelope obsahuje prvok hlavičky, nesmie obsahovať viac ako jeden prvok a musí sa javiť ako prvé dieťa v obálke pred prvkom body.
  • Keď sa verzie SOAP zmenia, obálka sa zmení.
  • Procesor SOAP kompatibilný s v1.1 generuje chybu po prijatí správy obsahujúcej menný priestor obálky v1.2.
  • Procesor SOAP kompatibilný s v1.2 generuje chybu Nezhoda verzií, ak prijme správu, ktorá nezahŕňa menný priestor obálky v1.2.

Ďalej je uvedený príklad rozhrania SOAP API verzie 1.2 prvku obálky SOAP.

int

Chybová správa

Keď sa požaduje požiadavka na webovú službu SOAP, vrátená odpoveď môže mať buď 2 formy, ktoré sú úspešnou odpoveďou alebo chybovou odpoveďou. Keď sa vygeneruje úspech, odpoveďou zo servera bude vždy správa SOAP. Ak sa ale generujú chyby SOAP, vrátia sa ako chyby „HTTP 500“.

Správa SOAP Fault pozostáva z nasledujúcich prvkov.

  1. - Toto je kód, ktorý označuje kód chyby. Chybový kód môže byť ktorákoľvek z nižšie uvedených hodnôt
    1. SOAP-ENV: VersionMismatch - Toto je prípad, keď sa vyskytne neplatný priestor názvov pre prvok SOAP Envelope.
    2. SOAP-ENV: MustUnderstand - Okamžitý podradený prvok prvku Header s atribútom mustUnderstand nastaveným na „1“ nebol pochopený.
    3. SOAP-ENV: Klient - správa bola nesprávne vytvorená alebo obsahovala nesprávne informácie.
    4. SOAP-ENV: Server - Vyskytol sa problém so serverom, takže správa nemohla pokračovať.
  2. - Toto je textová správa, ktorá poskytuje podrobný popis chyby.
  3. (voliteľné) - Toto je textový reťazec, ktorý označuje, kto spôsobil chybu.
  4. (voliteľné) - toto je prvok pre chybové hlásenia špecifické pre aplikáciu. Aplikácia teda môže mať špecifické chybové hlásenie pre rôzne scenáre obchodnej logiky.

Príklad chybovej správy

Nižšie je uvedený príklad chybového hlásenia. Chyba sa vygeneruje, ak dôjde k scenáru, v ktorom sa klient pokúsi použiť metódu nazvanú TutorialID v triede GetTutorial.

Nasledujúca chybová správa sa vygeneruje v prípade, že metóda neexistuje v definovanej triede.

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

Výkon:

Po vykonaní vyššie uvedeného kódu sa zobrazí chyba ako „Nepodarilo sa nájsť metódu (GetTutorialID) v triede (GetTutorial)“

Komunikačný model SOAP

Celá komunikácia pomocou protokolu SOAP sa vykonáva prostredníctvom protokolu HTTP. Pred protokolom SOAP používala veľa webových služieb na komunikáciu štandardný štýl RPC (Remote Procedure Call). Toto bol najjednoduchší typ komunikácie, mal však veľa obmedzení.

Teraz v tomto výučbe rozhrania SOAP API zvážime nasledujúci diagram, aby sme videli, ako táto komunikácia funguje. V tomto príklade predpokladajme, že server je hostiteľom webovej služby, ktorá poskytovala dve metódy ako

  • GetEmployee - Toto by získalo všetky podrobnosti o zamestnancovi
  • SetEmployee - Týmto by sa zodpovedajúcim spôsobom nastavila hodnota podrobností, ako je odd. Zamestnancov, plat atď.

Pri normálnej komunikácii v štýle RPC by klient iba zavolal metódy vo svojej žiadosti a poslal požadované parametre na server a server by potom poslal požadovanú odpoveď.

Vyššie uvedený komunikačný model má nižšie vážne obmedzenia

  1. Nie je nezávislý na jazyku - Server, ktorý hostuje metódy, by bol v konkrétnom programovacom jazyku a volania na server by boli obyčajne iba v tomto programovacom jazyku.
  2. Nie je to štandardný protokol - Keď sa volá postup na diaľku, hovor sa neuskutoční prostredníctvom štandardného protokolu. To bol problém, pretože väčšinou sa všetka komunikácia cez web musela uskutočňovať prostredníctvom protokolu HTTP.
  3. Brány firewall - pretože volania RPC nejdú cez normálny protokol, na serveri je potrebné otvoriť samostatné porty, aby klient mohol so serverom komunikovať. Za normálnych okolností všetky brány firewall blokujú tento druh prenosu a na zabezpečenie fungovania tohto druhu komunikácie medzi klientom a serverom sa všeobecne vyžaduje veľa konfigurácie.

Na prekonanie všetkých vyššie uvedených obmedzení by SOAP potom použil komunikačný model uvedený nižšie

  1. Klient by naformátoval informácie týkajúce sa volania procedúry a akýchkoľvek argumentov do správy SOAP a poslal ich na server ako súčasť požiadavky HTTP. Tento proces zapuzdrenia údajov do správy SOAP bol známy ako Marshalling.
  2. Server by potom rozbalil správu odoslanú klientom, zistil, o čo klient požiadal, a potom by poslal príslušnú odpoveď späť klientovi ako správu SOAP. Prax rozbalenia žiadosti odoslanej klientom je známa ako Demarshalling.

Praktický príklad SOAP

Teraz v tomto výučbe SoapUI sa pozrime na praktický príklad SOAP,

Pravdepodobne jedným z najlepších spôsobov, ako zistiť, ako sa generujú správy SOAP, je skutočne vidieť webovú službu v akcii.

Táto téma sa zameria na použitie rámca Microsoft.Net na vytvorenie webovej služby ASMX. Tento typ webovej služby podporuje SOAP verzie 1.1 aj verzie 1.2.

Webové služby ASMX automaticky generujú dokument WSDL (Web Service Definition Language). Tento dokument WSDL vyžaduje volajúca klientská aplikácia, aby aplikácia vedela, čo je webová služba schopná urobiť.

V našom príklade vytvoríme jednoduchú webovú službu, ktorá sa použije na vrátenie reťazca do aplikácie, ktorá webovú službu volá.

Táto webová služba bude hostená vo webovej aplikácii Asp.Net. Potom zavoláme webovú službu a uvidíme výsledok, ktorý vráti webová služba.

Visual Studio nám tiež ukáže, čo sa správa SOAP odovzdáva medzi webovou službou a volajúcou aplikáciou.

Prvý predpoklad nastavenia našej aplikácie webových služieb, ktorý je možné vykonať podľa nasledujúcich krokov.

Uistite sa, že pre tento príklad máte vo svojom systéme nainštalovanú aplikáciu Visual Studio 2013.

Krok 1) Prvým krokom je vytvorenie prázdnej webovej aplikácie ASP.Net. Vo Visual Studio 2013 kliknite na možnosť ponuky Súbor-> Nový projekt.

Po kliknutí na možnosť Nový projekt vám Visual Studio poskytne ďalšie dialógové okno pre výber typu projektu a pre poskytnutie potrebných podrobností o projekte. To je vysvetlené v ďalšom kroku.

Krok 2) V tomto kroku

  1. Najskôr si vyberte webovú šablónu C # webovej aplikácie ASP.NET. Projekt musí byť tohto typu, aby vznikol projekt SOAP služieb. Po výbere tejto možnosti Visual Studio potom vykoná potrebné kroky na pridanie požadovaných súborov, ktoré sú vyžadované ľubovoľnou webovou aplikáciou.
  2. Pomenujte svoj projekt, ktorý bol v našom prípade pomenovaný ako webservice.asmx. Potom nezabudnite uviesť umiestnenie, kde budú uložené súbory projektu.

Po dokončení sa zobrazí súbor projektu vytvorený v prehľadávači riešení v Visual Studio 2013.

Krok 3) V tomto kroku

Do nášho projektu pridáme súbor webových služieb

  1. Prvý Kliknite pravým tlačidlom myši na súbor projektu, ako je uvedené nižšie

  1. Po kliknutí pravým tlačidlom myši na súbor projektu máte možnosť zvoliť možnosť „Pridať-> Webová služba (ASMX) a pridať súbor webovej služby. Stačí uviesť názov výučbovej služby pre súbor názvu webovej služby.

Krok 4) Pridajte nasledujúci kód do svojho súboru asmx Tutorial Service.

Vysvetlenie kódu:

  1. Tento riadok kódu poskytuje názov pre váš súbor webových služieb. Toto je dôležitý krok, pretože umožňuje klientskej aplikácii volať webovú službu prostredníctvom názvu webovej služby.
  2. Na zapuzdrenie funkčnosti webovej služby sa zvyčajne používa súbor triedy. Takže súbor triedy bude mať definíciu všetkých webových metód, ktoré klientskej aplikácii poskytnú určité funkcie.
  3. Tu je [WebMethod] známy ako atribút, ktorý popisuje funkciu. Nasledujúci krok vytvorí funkciu nazvanú „Guru99WebService“, ale zahrnutím tohto kroku pridaním atribútu [WebMethod] sa zabezpečí, že táto metóda môže byť vyvolaná klientskou aplikáciou. Ak tento atribút nie je zavedený, potom metóda nemôže byť nikdy volaná klientskou aplikáciou.
  4. Tu definujeme funkciu nazvanú „Guru99WebService“, ktorá sa použije na vrátenie reťazca volajúcej klientskej aplikácii. Táto funkcia je webová služba, ktorú je možné zavolať z ľubovoľnej klientskej aplikácie.
  5. Pomocou príkazu return vrátime do klientskej aplikácie reťazec „Toto je webová služba Guru99“.

Ak sa kód úspešne vykoná, pri spustení kódu v prehliadači sa zobrazí nasledujúci výstup.

Výkon:

  • Výstup jasne ukazuje, že názov našej webovej služby je „Guru99 Web Service“, čo je výsledkom pomenovania našej webovej služby.
  • Vidíme tiež, že môžeme vyvolať webovú službu. Ak klikneme na tlačidlo Vyvolať, vo webovom prehliadači dostaneme odpoveď nižšie.

Vyššie uvedený výstup,

  • Jasne ukazuje, že vyvolaním webovej metódy sa vráti reťazec „Toto je webová služba Guru99“.
  • Visual Studio vám tiež umožňuje zobraziť žiadosť a odpoveď na správu SOAP, ktoré sa generujú pri volaní vyššie uvedenej webovej služby.

Nižšie je uvedená požiadavka na SOAP, ktorá sa generuje pri volaní webovej služby.

Vysvetlenie kódu:

  1. Prvá časť správy SOAP je obalový prvok, o ktorom sme hovorili v predchádzajúcich kapitolách. Toto je zapuzdrujúci prvok, ktorý je prítomný v každej správe SOAP.
  2. Body SOAP sú ďalším prvkom a obsahujú skutočné podrobnosti správy SOAP.
  3. Tretia časť je prvok, ktorý určuje, že chceme volať službu s názvom „Guru99WebService“.

string

Vysvetlenie kódu:

  1. Prvá časť správy SOAP je obalový prvok, o ktorom sme hovorili v predchádzajúcich kapitolách. Toto je zapuzdrujúci prvok, ktorý je prítomný v každej správe SOAP.
  2. Body SOAP sú ďalším prvkom a obsahujú skutočné podrobnosti správy SOAP.
  3. Zaujímavou časťou, ktorú teraz uvidíte, je atribút 'string'. Toto povie klientskej aplikácii, že volaná webová služba vracia objekt typového reťazca. To je veľmi užitočné, pretože ak by klientská aplikácia, ktorá by inak nevedela, čo vráti webová služba.

Zhrnutie

  • SOAP je protokol, ktorý sa používa na výmenu údajov medzi aplikáciami postavenými na rôznych programovacích jazykoch.
  • SOAP je založený na špecifikácii XML a pracuje s protokolom HTTP. Vďaka tomu je ideálne na použitie vo webových aplikáciách.
  • Stavebné bloky SOAP pozostávajú zo správy SOAP. Každá správa SOAP pozostáva z prvku obálky, hlavičky a prvku tela.
  • Prvok obálky je povinným prvkom v správe SOAP a slúži na zapuzdrenie všetkých údajov v správe SOAP.
  • Element záhlavia možno použiť na to, aby obsahoval informácie, ako sú autentifikačné informácie alebo definícia komplexných dátových typov.
  • Prvok tela je hlavným prvkom, ktorý obsahuje definíciu webových metód spolu s informáciami o parametroch, ak sú potrebné.