Výukový program webových služeb SOAP: Co je protokol SOAP? PŘÍKLAD

Obsah:

Anonim

Co je to SOAP?

SOAP je protokol založený na XML pro přístup k webovým službám přes HTTP. Má určitou specifikaci, kterou lze použít ve všech aplikacích.

SOAP je známý jako Simple Object Access Protocol, ale v pozdějších dobách byl právě zkrácen na SOAP v1.2. SOAP je protokol nebo jinými slovy definice toho, jak webové služby mezi sebou komunikují nebo komunikují s klientskými aplikacemi, které je vyvolávají.

SOAP byl vyvinut jako prostřední jazyk, takže aplikace založené na různých programovacích jazycích mohly mezi sebou snadno mluvit a vyhnout se extrémnímu vývojovému úsilí.

V tomto výukovém programu webových služeb SOAP se naučíte-

  • SOAP Úvod
  • Výhody protokolu SOAP
  • SOAP Stavební bloky
  • Struktura zprávy SOAP
  • Prvek obálky SOAP
  • Komunikační model SOAP
  • Praktický příklad SOAP

SOAP Úvod

V dnešním světě existuje obrovské množství aplikací, které jsou postaveny na různých programovacích jazycích. Například by mohla existovat webová aplikace navržená v Javě, další v .Net a další v PHP.

V dnešním síťovém světě je výměna dat mezi aplikacemi zásadní. Výměna dat mezi těmito heterogenními aplikacemi by však byla složitá. Taková bude složitost kódu k dosažení této výměny dat.

Jednou z metod používaných k boji proti této složitosti je použití XML (Extensible Markup Language) jako prostředního jazyka pro výměnu dat mezi aplikacemi.

Každý programovací jazyk rozumí značkovacímu jazyku XML. Proto byl XML použit jako podkladové médium pro výměnu dat.

Neexistují však žádné standardní specifikace pro použití XML ve všech programovacích jazycích pro výměnu dat. To je místo, kde přichází software SOAP.

SOAP byl navržen pro práci s XML přes HTTP a má nějakou specifikaci, kterou lze použít ve všech aplikacích. V následujících kapitolách se podrobněji zabýváme protokolem SOAP.

Výhody protokolu SOAP

SOAP je protokol používaný pro výměnu dat mezi aplikacemi. Níže jsou uvedeny některé důvody, proč se používá SOAP.

  • Při vývoji webových služeb založených na protokolu SOAP musíte mít nějaký jazyk, který lze použít pro webové služby pro komunikaci s klientskými aplikacemi. SOAP je perfektní médium, které bylo vyvinuto za účelem dosažení tohoto cíle. Tento protokol také doporučuje konsorcium W3C, které je řídícím orgánem pro všechny webové standardy.
  • SOAP je lehký protokol, který se používá pro výměnu dat mezi aplikacemi. Všimněte si klíčového slova „ light “. Protože programování SOAP je založeno na jazyce XML, který je sám o sobě lehkým jazykem pro výměnu dat, proto SOAP jako protokol spadá také do stejné kategorie.
  • SOAP je navržen tak, aby byl nezávislý na platformě, a je také navržen tak, aby byl nezávislý na operačním systému. Protokol SOAP tedy může pracovat s libovolnými aplikacemi založenými na programovacím jazyce na platformě Windows i Linux.
  • Funguje na protokolu HTTP - SOAP pracuje na protokolu HTTP, což je výchozí protokol používaný všemi webovými aplikacemi. Proto pro provoz webových služeb postavených na protokolu SOAP pro práci v síti WWW není vyžadován žádný druh přizpůsobení.

SOAP stavební bloky

Specifikace SOAP definuje něco známého jako „ zpráva SOAP “, což je to, co se odesílá webové službě a klientské aplikaci.

Níže uvedený diagram architektury SOAP zobrazuje různé stavební bloky zprávy SOAP.

Stavební bloky zpráv SOAP

Zpráva SOAP není nic jiného než pouhý dokument XML, který má níže uvedené komponenty.

  • Prvek Envelope, který identifikuje dokument XML jako zprávu SOAP - Toto je obsahující část zprávy SOAP a slouží k zapouzdření všech podrobností ve zprávě SOAP. Toto je kořenový prvek ve zprávě SOAP.
  • Prvek záhlaví, který obsahuje informace záhlaví - Element záhlaví může obsahovat informace, jako jsou ověřovací pověření, která lze použít volající aplikací. Může také obsahovat definici komplexních typů, které lze použít ve zprávě SOAP. Ve výchozím nastavení může zpráva SOAP obsahovat parametry, které mohou být jednoduchých typů, jako jsou řetězce a čísla, ale mohou to být také komplexní objekty.

Níže je uveden jednoduchý příklad služby SOAP komplexního typu.

Předpokládejme, že jsme chtěli poslat strukturovaný datový typ, který měl kombinaci „Název kurzu“ a „Popis kurzu“, pak bychom definovali komplexní typ, jak je znázorněno níže.

Složitý typ je definován značkou prvku . Všechny požadované prvky struktury spolu s jejich příslušnými datovými typy jsou pak definovány v kolekci komplexních typů.

  • Body prvek, který obsahuje informace o volání a odpovědi - Tento prvek obsahuje skutečná data, která je třeba odeslat mezi webovou službou a volající aplikací. Níže je příklad webové služby SOAP těla SOAP, který ve skutečnosti funguje na komplexním typu definovaném v sekci záhlaví. Tady je odpověď názvu kurzu a popisu kurzu, která je odeslána volající aplikaci, která volá tuto webovou službu.
Web ServicesAll about web services

Struktura zprávy SOAP

Je třeba si uvědomit, že zprávy SOAP jsou obvykle automaticky generovány webovou službou, když je volána.

Kdykoli klientská aplikace zavolá metodu ve webové službě, webová služba automaticky vygeneruje zprávu SOAP, která bude obsahovat potřebné podrobnosti o datech, která budou odeslána z webové služby do klientské aplikace.

Jak je popsáno v předchozím tématu tohoto kurzu SOAP, jednoduchá zpráva SOAP má následující prvky -

  • Prvek Obálka
  • Prvek záhlaví a
  • Prvek těla
  • Poruchový prvek (volitelný)

Podívejme se na níže uvedený příklad jednoduché zprávy SOAP a uvidíme, jaký prvek ve skutečnosti dělá.

Struktura zprávy SOAP
  1. Jak je patrné z výše uvedené zprávy SOAP, první částí zprávy SOAP je prvek obálky, který se používá k zapouzdření celé zprávy SOAP.
  2. Dalším prvkem je tělo SOAP, které obsahuje podrobnosti skutečné zprávy.
  3. Naše zpráva obsahuje webovou službu s názvem „Guru99WebService“.
  4. "Guru99Webservice" přijímá parametr typu 'int' a má název TutorialID.

Nyní bude výše uvedená zpráva SOAP předána mezi webovou službou a klientskou aplikací.

Můžete vidět, jak užitečné jsou výše uvedené informace pro klientskou aplikaci. Zpráva SOAP řekne klientské aplikaci, jaký je název webové služby a také jaké parametry očekává a také jaký je typ každého parametru, který webová služba přijímá.

Prvek obálky SOAP

Prvním bitem stavebního bloku je obálka SOAP.

Obálka SOAP se používá k zapouzdření všech nezbytných podrobností zpráv SOAP, které jsou vyměňovány mezi webovou službou a klientskou aplikací.

Prvek obálky SOAP se používá k označení začátku a konce zprávy SOAP. To umožňuje klientské aplikaci, která volá webovou službu, vědět, kdy skončí zpráva SOAP.

Na prvku obálky SOAP lze poznamenat následující body.

  • Každá zpráva SOAP musí mít kořenový prvek obálky. Pro zprávu SOAP je naprosto povinné mít prvek obálky.
  • Každý prvek Envelope musí mít alespoň jeden prvek těla mýdla.
  • Pokud prvek Envelope obsahuje prvek záhlaví, nesmí obsahovat více než jeden prvek a musí se objevit jako první podřízený prvek Envelope před prvkem body.
  • Obálka se změní, když se změní verze SOAP.
  • Procesor SOAP kompatibilní s v1.1 generuje chybu po obdržení zprávy obsahující jmenný prostor obálky v1.2.
  • Procesor SOAP kompatibilní s v1.2 generuje chybu Neshoda verzí, pokud obdrží zprávu, která neobsahuje jmenný prostor obálky v1.2.

Níže je příklad rozhraní SOAP API verze 1.2 prvku obálky SOAP.

int

Chybová zpráva

Když je podán požadavek na webovou službu SOAP, vrácená odpověď může mít buď 2 formy, které jsou úspěšnou odpovědí nebo chybovou odpovědí. Když je vygenerován úspěch, odpověď ze serveru bude vždy zpráva SOAP. Pokud jsou ale generovány chyby SOAP, jsou vráceny jako chyby „HTTP 500“.

Zpráva SOAP Fault se skládá z následujících prvků.

  1. - Toto je kód, který označuje kód chyby. Chybovým kódem může být jakákoli z níže uvedených hodnot
    1. SOAP-ENV: VersionMismatch - v tomto případě dojde k neplatnému oboru názvů prvku SOAP Envelope.
    2. SOAP-ENV: MustUnderstand - Okamžitý podřízený prvek prvku Header s atributem mustUnderstand nastaveným na „1“ nebyl pochopen.
    3. SOAP-ENV: Klient - zpráva byla nesprávně vytvořena nebo obsahovala nesprávné informace.
    4. SOAP-ENV: Server - Došlo k problému se serverem, takže zpráva nemohla pokračovat.
  2. - Toto je textová zpráva, která poskytuje podrobný popis chyby.
  3. (volitelný) - Toto je textový řetězec, který označuje, kdo způsobil chybu.
  4. (Volitelné) - Toto je prvek pro chybové zprávy specifické pro aplikaci. Takže aplikace může mít konkrétní chybovou zprávu pro různé scénáře obchodní logiky.

Příklad chybové zprávy

Níže je uveden příklad chybové zprávy. Chyba se vygeneruje, pokud se scénář, ve kterém se klient pokusí použít metodu nazvanou TutorialID ve třídě GetTutorial.

Níže uvedená chybová zpráva se vygeneruje v případě, že metoda neexistuje v definované třídě.

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

Výstup:

Když spustíte výše uvedený kód, zobrazí se chyba jako „Nepodařilo se najít metodu (GetTutorialID) ve třídě (GetTutorial)“

Komunikační model SOAP

Veškerá komunikace prostřednictvím protokolu SOAP probíhá prostřednictvím protokolu HTTP. Před SOAP používalo mnoho webových služeb ke komunikaci standardní styl RPC (Remote Procedure Call). Toto byl nejjednodušší typ komunikace, ale měl spoustu omezení.

Nyní v tomto kurzu SOAP API se podívejme na níže uvedený diagram, abychom zjistili, jak tato komunikace funguje. V tomto příkladu předpokládejme, že server je hostitelem webové služby, která poskytovala 2 metody jako

  • GetEmployee - Získáte všechny podrobnosti o zaměstnancích
  • SetEmployee - Tím by se odpovídajícím způsobem nastavila hodnota podrobností, jako je oddělení zaměstnanců, plat atd.

V běžné komunikaci stylem RPC by klient jen zavolal metody ve svém požadavku a odeslal požadované parametry na server a server by pak odeslal požadovanou odpověď.

Výše uvedený komunikační model má níže uvedená vážná omezení

  1. Není nezávislý na jazyce - Server hostující metody by byl v konkrétním programovacím jazyce a volání na server by normálně probíhala pouze v tomto programovacím jazyce.
  2. Není to standardní protokol - Při volání na vzdálenou proceduru se volání neprovádí prostřednictvím standardního protokolu. To byl problém, protože převážně veškerá komunikace přes web musela probíhat prostřednictvím protokolu HTTP.
  3. Brány firewall - Jelikož volání RPC nepřecházejí normálním protokolem, je třeba na serveru otevřít samostatné porty, aby klient mohl se serverem komunikovat. Za normálních okolností by všechny brány firewall blokovaly tento druh provozu a obecně bylo zapotřebí hodně konfigurace, aby bylo zajištěno, že tento druh komunikace mezi klientem a serverem bude fungovat.

K překonání všech výše uvedených omezení by SOAP poté použil níže uvedený komunikační model

  1. Klient naformátuje informace týkající se volání procedury a všech argumentů do zprávy SOAP a odešle je na server jako součást požadavku HTTP. Tento proces zapouzdření dat do zprávy SOAP byl znám jako Marshalling.
  2. Server by pak rozbalil zprávu odeslanou klientem, zjistil, o co klient žádal, a poté by odeslal příslušnou odpověď zpět klientovi jako zprávu SOAP. Praxe rozbalení požadavku zaslaného klientem je známá jako Demarshalling.

Praktický příklad SOAP

Nyní v tomto tutoriálu SoapUI se podívejme na praktický příklad SOAP,

Pravděpodobně jedním z nejlepších způsobů, jak zjistit, jak se generují zprávy SOAP, je skutečně vidět webovou službu v akci.

V tomto tématu se podíváme na použití rozhraní Microsoft.Net k vytvoření webové služby ASMX. Tento typ webové služby podporuje SOAP verze 1.1 i verze 1.2.

Webové služby ASMX automaticky generují dokument WSDL (Web Service Definition Language). Tento dokument WSDL vyžaduje volající klientská aplikace, aby aplikace věděla, co je webová služba schopná dělat.

V našem příkladu vytvoříme jednoduchou webovou službu, která se použije k vrácení řetězce do aplikace, která volá webovou službu.

Tato webová služba bude hostována ve webové aplikaci Asp.Net. Poté vyvoláme webovou službu a uvidíme výsledek, který webová služba vrátí.

Visual Studio nám také ukáže, co je SOAP zpráva předávaná mezi webovou službou a volající aplikací.

První předpoklad pro nastavení naší aplikace webových služeb, kterou lze provést podle následujících kroků.

Ujistěte se, že máte pro tento příklad ve svém systému nainstalovanou Visual Studio 2013.

Krok 1) Prvním krokem je vytvoření prázdné webové aplikace ASP.Net. V aplikaci Visual Studio 2013 klikněte na možnost nabídky Soubor-> Nový projekt.

Jakmile kliknete na možnost Nový projekt, Visual Studio vám poté poskytne další dialogové okno pro výběr typu projektu a poskytnutí nezbytných podrobností o projektu. To je vysvětleno v dalším kroku.

Krok 2) V tomto kroku

  1. Nejprve si vyberte webovou šablonu C # webové aplikace ASP.NET. Projekt musí být tohoto typu, aby bylo možné vytvořit projekt služeb SOAP. Výběrem této možnosti Visual Studio poté provede nezbytné kroky k přidání požadovaných souborů, které jsou vyžadovány jakoukoli webovou aplikací.
  2. Pojmenujte svůj projekt, který byl v našem případě uveden jako webservice.asmx. Poté zajistěte umístění, kde budou soubory projektu uloženy.

Po dokončení uvidíte soubor projektu vytvořený v Průzkumníku řešení v sadě Visual Studio 2013.

Krok 3) V tomto kroku

Do našeho projektu přidáme soubor webové služby

  1. Nejprve klepněte pravým tlačítkem myši na soubor projektu, jak je znázorněno níže

  1. Jakmile kliknete pravým tlačítkem na soubor projektu, máte možnost zvolit možnost „Přidat-> Webová služba (ASMX) a přidat soubor webové služby. Stačí zadat název výukové služby pro soubor názvu webové služby.

Krok 4) Přidejte následující kód do souboru asmx Tutorial Service.

Vysvětlení kódu:

  1. Tento řádek kódu obsahuje název souboru webové služby. Toto je důležitý krok, protože umožňuje klientské aplikaci volat webovou službu prostřednictvím názvu webové služby.
  2. Normálně se k zapouzdření funkčnosti webové služby používá soubor třídy. Soubor třídy bude mít definici všech webových metod, které klientské aplikaci poskytnou určité funkce.
  3. Zde je [WebMethod] známý jako atribut, který popisuje funkci. Následující krok vytvoří funkci nazvanou „Guru99WebService“, ale se zahrnutím tohoto kroku přidání atributu [WebMethod] zajistí, že tato metoda může být vyvolána klientskou aplikací. Pokud tento atribut není na místě, pak metodu nelze nikdy zavolat klientskou aplikací.
  4. Zde definujeme funkci nazvanou 'Guru99WebService', která bude použita k vrácení řetězce volající klientské aplikaci. Tato funkce je webová služba, kterou lze volat libovolnou klientskou aplikací.
  5. Pomocí příkazu return vrátíme do klientské aplikace řetězec „This is a Guru99 Web service“.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

  • Výstup jasně ukazuje, že název naší webové služby je „Guru99 Web Service“, což je výsledkem pojmenování naší webové služby.
  • Vidíme také, že můžeme vyvolat webovou službu. Pokud klikneme na tlačítko Vyvolat, dostaneme níže uvedenou odpověď ve webovém prohlížeči.

Výše uvedený výstup,

  • Jasně ukazuje, že vyvoláním webové metody je vrácen řetězec „This is a Guru99 Web service“.
  • Visual Studio také umožňuje zobrazit požadavek a odpověď na zprávu SOAP, která se generuje při volání výše uvedené webové služby.

Níže je uveden požadavek SOAP, který je generován při volání webové služby.

Vysvětlení kódu:

  1. První část zprávy SOAP je obálkový prvek, o kterém jsme hovořili v předchozích kapitolách. Toto je zapouzdřovací prvek, který je přítomen v každé zprávě SOAP.
  2. Tělo SOAP je dalším prvkem a obsahuje skutečné podrobnosti zprávy SOAP.
  3. Třetí část je prvek, který určuje, že chceme volat službu nazvanou „Guru99WebService.“

string

Vysvětlení kódu:

  1. První část zprávy SOAP je obálkový prvek, o kterém jsme hovořili v předchozích kapitolách. Toto je zapouzdřovací prvek, který je přítomen v každé zprávě SOAP.
  2. Tělo SOAP je dalším prvkem a obsahuje skutečné podrobnosti zprávy SOAP.
  3. Zajímavou částí, kterou nyní uvidíte, je atribut 'string'. To řekne klientské aplikaci, že volaná webová služba vrací objekt typového řetězce. To je velmi užitečné, protože pokud klientská aplikace, která by jinak nevěděla, co webová služba vrací.

souhrn

  • SOAP je protokol, který se používá k výměně dat mezi aplikacemi, které jsou postaveny na různých programovacích jazycích.
  • SOAP je založen na specifikaci XML a pracuje s protokolem HTTP. Díky tomu je ideální pro použití ve webových aplikacích.
  • Stavební bloky SOAP se skládají ze zprávy SOAP. Každá zpráva SOAP se skládá z prvku obálky, záhlaví a prvku těla.
  • Prvek obálky je povinným prvkem ve zprávě SOAP a slouží k zapouzdření všech dat ve zprávě SOAP.
  • Prvek záhlaví lze použít k uložení informací, jako jsou ověřovací informace nebo definice komplexních datových typů.
  • Tělo element je hlavní prvek, který obsahuje definici webových metod spolu s veškerými informacemi o parametrech, pokud je to požadováno.