Co je to webová služba? Webové služby XML. Přehled technologií

Webová služba je program, ke kterému mohou přistupovat jiné programy přes internet (http). Řekněme například, že máte funkci, která poskytuje text ve formátu HTML. Účelem aplikace je, aby webový prohlížeč zobrazoval výsledky a člověk si tento text na stránce snadno přečetl.

Na druhé straně, cílová skupina Webové služby jsou jiné programy nebo jiné webové služby, které spotřebovávají data obsluhovaná webovou službou. Obvykle se výběr provádí na standardní jazyk, které mohou být srozumitelné i jiným programům. Vezměte si výše uvedený příklad, pokud webová služba vydává text XML formát, pak mohou tento výstup používat další webové služby, které umí číst nebo rozumět XML.

Hlavní výhodou webové služby je, že aplikace mohou být napsány v jakémkoli jazyce, ale mohou spolu komunikovat a vyměňovat si data prostřednictvím webové služby. Softwarové aplikace zapsáno v různé jazyky programování a běh na různých platformách, může využívat webové služby ke komunikaci přes internet (HTTP). Jedná se o interakci (například mezi Javou a Pythonem, popř Windows aplikace a Linux) je spojena s používáním otevřených standardů (XML, SOAP, HTTP).

  • SOAP (Simple Object Access Protocol)
  • UDDI (Universal Description, Discovery and Integration)
  • WSDL (jazyk popisu webových služeb)

Kolik různých typů webových služeb existuje?

Primárně existují dva typy webových služeb, Simple Object Access Protocol (SOAP) a Representational State Transfer (REST).

  • Webová služba SOAP přijímá požadavek ve formátu XML a generuje výstup ve formátu XML.
  • Webová služba REST je všestrannější a může přijmout XML i JSON jako požadavek a generuje výstup v XML i JSON nebo dokonce HTML

Tuto problematiku lze podrobněji studovat na našem.

Zavolejme servis zdroj, který implementuje obchodní funkci a má následující vlastnosti:

    je opakovaně použitelný;

    definované jedním nebo více explicitními rozhraními nezávislými na technologii;

    je volně spojen s jinými podobnými zdroji a lze jej vyvolat prostřednictvím komunikačních protokolů, které umožňují zdrojům vzájemnou interakci.

webová služba nazývá se softwarový systém identifikovaný řetězcem URI, jehož rozhraní a vazby definuje a popisuje XML. Popis tohoto softwarového systému lze nalézt u jiných softwarových systémů, které s ním mohou interagovat podle tohoto popisu prostřednictvím zpráv na bázi XML přenášených pomocí internetových protokolů.

1.1 Základy webových služeb

webové služby je nová slibná architektura, která poskytuje novou úroveň distribuce. Namísto vývoje nebo nákupu komponent a jejich zabudování do IS se navrhuje koupit jejich provozní dobu a vytvořit softwarový systém, který volá metodu z komponent vlastněných a podporovaných nezávislými poskytovateli. Díky webové služby funkce libovolného programu v síti lze zpřístupnit prostřednictvím internetu. Nejjednodušší příklad webová služba- Systém Cestovní pas na Hotmail, který vám umožňuje vytvořit ověření uživatele na vašem vlastním webu.

Webové služby jsou založeny na následujících univerzálních technologiích:

    TCP/IP– univerzální protokol, kterému rozumí každý síťová zařízení, od sálových počítačů po mobilní telefony a PDA;

    HTML– univerzální značkovací jazyk používaný k zobrazování informací na uživatelských zařízeních;

    XML(Extensible Markup Language) – univerzální jazyk pro práci s jakýmkoli typem dat.

Všestrannost těchto technologií je základem pro pochopení webových služeb. Jsou založeny pouze na obecně uznávaných, otevřených a formálně na dodavatele neutrálních technologiích. Jen tak lze dosáhnout hlavní výhody webových služeb jako konceptu pro budování distribuovaných IS - jejich univerzálnosti, tedy možnosti použití pro libovolné operační systémy, programovací jazyky, aplikační servery atd.

Webové služby tak řeší původní problém – problém integrace aplikací různého charakteru a budování distribuovaného IS. To je hlavní zásadní rozdíl mezi webovými službami a jejich předchůdci.

webové služby - Tento XML aplikace, propojení dat s programy, objekty, databázemi nebo celými obchodními transakcemi. Mezi webovou službou a programem se vyměňují dokumenty XML formátované jako zprávy. Standardy webových služeb definují formát takových zpráv, rozhraní, na které je zpráva odeslána, pravidla pro vazbu obsahu zprávy na aplikaci implementující službu a naopak, stejně jako mechanismy pro publikování a vyhledávání rozhraní.

XML(AngličtinaEX napínatelný M arkup L jazyk- rozšiřitelný značkovací jazyk; vyslovováno [ x-em-el]). Doporučeno World Wide Web konsorcium(W3C). Specifikace XML popisuje dokumenty XML a částečně popisuje chování procesorů XML (programů, které čtou dokumenty XML a poskytují přístup k jejich obsahu). XML byl navržen jako jazyk s jednoduchým formálem syntax, vhodné pro stvoření a programy pro zpracování dokumentů a zároveň pohodlné pro lidi ke čtení a vytváření dokumentů, s důrazem na zaměření na použití na internetu. Jazyk se nazývá rozšiřitelný, protože neopravuje označení používané v dokumentech: vývojář může volně vytvářet označení podle potřeb konkrétní oblasti, pouze omezeně. syntaktická pravidla Jazyk. Kombinace jednoduché formální syntaxe, vstřícnosti vůči lidem, rozšiřitelnosti a kódování Unicode pro reprezentaci obsahu dokumentů vedlo k širokému použití jak samotného XML, tak mnoha odvozených specializovaných jazyků založených na XML v široké škále softwarových nástrojů.

Standardní XML aplikace

XML lze použít pro více než jen popis jednoho dokumentu. Jednotlivec, společnost nebo výbor pro standardy může definovat požadovanou sadu prvků XML a strukturu dokumentu, které se mají použít pro konkrétní třídu dokumentů. Obdobná sada prvků a popis struktury dokumentu se nazývá XML aplikace nebo XML slovník. Organizace může například definovat aplikaci XML pro vytváření dokumentů popisujících molekulární struktury, multimediální prezentace nebo obsahující vektorovou grafiku.

webové služby lze použít v mnoha aplikacích. Bez ohledu na to, zda webové služby běží ze stolních počítačů nebo notebooků zákazníků, lze je použít pro přístup k internetovým aplikacím, jako je předobjednávka nebo sledování objednávek.

webové služby vhodné pro B2B integrace (business-to-business), uzavírání aplikací prováděných různými organizacemi do jednoho výrobního procesu. webové služby může také řešit širší problém integrace podnikových aplikací (Integrace podnikových aplikací, EAI), propojení více aplikací z jednoho podniku s více dalšími aplikacemi. Ve všech těchto případech jsou technologie webových služeb „lepidlem“, které spojuje různé části softwaru.

Jak je vidět z Obr. 1, Webové služby jsou obal, který poskytuje standardní způsob interakce s prostředími aplikačního softwaru, jako je např systémy pro správu databází (DBMS), .NET, J2EE (Java2 Platform, Enterprise Edition), CORBA (Common Object Request Broker Architecture), prodejci balíčků plánování podnikových zdrojů ( plánování podnikových zdrojů, ERP), integrační makléři atd.

Obr. 1. Webové služby interagují s aplikačními systémy

Rozhraní webových služeb jsou získávána ze síťového prostředí standardní XML zprávy, přeměnit XML data do formátu, kterému „rozumí“ konkrétní aplikace softwarový systém a odešlete zprávu s odpovědí (druhá možnost je volitelná). Softwarová implementace webových služeb (základní software, nižší úroveň) může být vytvořena v libovolném programovacím jazyce pomocí libovolného operačního systému a jakéhokoli middlewaru ( middleware).

Jednoduchý příklad: vyhledávání informací

V současné době se většina služeb volá přes internet zadáním dat HTML formuláře a odeslání těchto dat do služby jejich přidáním do řetězce Uniform Resource Locator ( Uniform Resource Locator, URL):

http://www.google.com/search?q=Skate+boots&btnG=Google+Search

Tento příklad ilustruje jednoduchost webových interakcí (jako je vyhledávání, nákup akcií nebo vyžádání trasy jízdy), kde jsou parametry a klíčová slova vloženy přímo do adresy URL. V v tomto případě jednoduchý vyhledávací požadavek na skate boty (boty s bruslemi) se zobrazí v řetězci dotazu do vyhledávače Google. Klíčové slovo search představuje službu, ke které se bude přistupovat, a parametr Skate+boots je vyhledávací řetězec, který byl zadán do formuláře HTML na webové stránce Google. Servis Google vyhledávání předá tento požadavek různým vyhledávačům, které vrátí seznam URL stránek, které odpovídají vyhledávacímu parametru Skate+boots. Tato neúčinná metoda vyhledávání na internetu je zcela založena na porovnávání zadaného textového řetězce s indexovaným HTML stránky.

XML - Nejlepší způsob odesílání dat. XML poskytuje významné výhody při přenosu dat přes internet. Nyní může být předchozí dotaz reprezentován jako XML dokument:

xmlns:s="www.xmlbus.com/SearchService">

Skejt

boty

velikost 7,5

Odeslání poptávky ve formuláři XML dokument má tyto výhody: možnost definovat datové typy a struktury, větší flexibilitu a rozšiřitelnost. XML může představovat strukturovaná data nebo data určitého typu (například je přijatelné zadat hodnotu pole velikosti jako řetězec čísel nebo jako číslo s plovoucí desetinnou čárkou) a obsahovat více informací, než umožňuje adresa URL.

Tento příklad je prezentován ve formě zprávy SOAP (Simple Object Access Protocol), což je standardní forma výměny zpráv XML, která je jednou z technologií tvořících webové služby. Ve zprávě SOAP jsou název požadované služby a vstupní parametry reprezentovány jako samostatné prvky XML. Tento příklad také ilustruje použití jmenných prostorů XML (xmlns:), dalšího důležitého prvku webových služeb. Protože dokumenty XML podporují více typů dat, složité struktury a agregaci schémat, moderní technologie webových služeb poskytují oproti stávajícím možnostem pro přístup k softwarovým aplikacím prostřednictvím HTML a URL významné výhody.

Praktické použití webových služeb v IBM Lotus Domino 7

Co jsou webové služby a proč jsou důležité?

Obsahová řada:

Tento obsah je součástí # série # článků: Praktické použití webových služeb v IBM Lotus Domino 7

https://www..jsp?series_title_by=Practical+use+of+web-services+in+ibm+lotus+domino+7

Zůstaňte naladěni na nové články v této sérii.

Možná jste narazili na odkazy na webové služby v technických článcích, popisech softwarových produktů nebo dokonce v dialogu s kolegy. Je vidět, že pro některé lidi jsou webové služby potřebné a důležité, když se však setkali s definicemi jako „XML gramatika pro definování sad koncové body pro zasílání zpráv,“ rozhodli jste se, že tak složité věci nestojí za to sahat.

Naštěstí lze webové služby vysvětlit způsobem, kterému porozumí každý, aniž bychom zacházeli do podrobností o tom, jak to všechno funguje. Měli byste se pokusit pochopit, co jsou webové služby, protože rozsah jejich aplikací (a související architektury orientované na služby, SOA) ve světě IT se neustále rozšiřuje.

Webové služby lze vnímat jako auto: nepotřebujete na technické úrovni vědět, jak fungují písty, vačkové hřídele a vstřikovače paliva – můžete si koupit auto, řídit ho a mluvit o autech s přáteli (samozřejmě pokud jsou mechanici). Je to stejné jako s webovými službami; jako IT specialista stačí pochopit, co jsou a jak fungují, abyste pochopili, proč je potřebujete.

Je mnohem snazší pracovat s webovými službami, aniž byste se dotkli skrytých nízkoúrovňových technologií, protože dodavatelé softwaru a komunita lidí, kteří píší programy open source, udělali za posledních několik let hodně pro oddělení rozhraní webových služeb od nízkoúrovňových úloh. To vám umožní pracovat jednoduchým propojením komponent, aniž byste se museli ponořit do zdlouhavé dokumentace o formátování zpráv XML.

Tato série článků pomůže vývojářům Domino pochopit a používat webové služby v IBM Lotus Domino V7.0. Tento úvodní článek toho obsahuje dost užitečné informace, a budou užitečné pro každého, kdo chce porozumět tomu, co jsou webové služby. Technologie v Lotus Domino V7.0 usnadňují vývojářům vytvářet a používat webové služby a podrobněji se tomu budeme věnovat později.

Nejprve si ujasněme, co je to webová služba.

Co je to webová služba?

Jednoduše řečeno, webová služba umožňuje počítačové programy komunikovat mezi sebou standardizovaným způsobem.

Komunikace mezi třemi nebo více stroji

Přestože v příkladech uvažujeme transakce v rámci jednoho nebo dvou strojů, pro komunikaci mezi nimi lze použít i webové služby velké množství počítače. Například předávání nebo ukládání transakcí může být prováděno zprostředkujícím zařízením nebo volání webové služby na jednom serveru může vést k volání služby na jiném serveru.

Na konci tohoto článku, když se podíváme na skutečnou SOA, budeme hovořit o webových službách komunikujících napříč více počítači, protože to SOA vždy dělá.

Webová služba je abstraktní komponenta, stejně jako koncept dialogu mezi lidmi je abstraktní. Dialog zahrnuje dva nebo více lidí mluvících jazykem, který znají. Jejich jazyk definuje slova, která používají a jak se tato slova používají k vytváření vět. Dialog má obvykle strukturu otázka-odpověď, kdy někdo položí otázku nebo učiní prohlášení a účastník na ni odpoví. Lidé mohou být poblíž, komunikovat po telefonu, posílat si zprávy e-mailem nebo chatem.

Dialog má každopádně složitou strukturu a může probíhat různými způsoby, v závislosti na počtu komunikujících lidí, jazyku komunikace, technologiích používaných ke komunikaci, samozřejmě pokud se nějaké používají.

Struktura komunikace pomocí webových služeb zahrnuje mnoho prvků, kterých se v tomto článku dotkneme. Myšlenka však zůstává stejná jako u běžného dialogu – programy komunikují pomocí jazyka, který znají, někdy přes síť. Programy mohou být umístěny na jednom počítači nebo umístěny na různých počítačích v různých částech světa, propojené přes internet pomocí směrovačů a serverů. Dobrá věc je, že programy a počítače nemusí být stejné. Díky webovým službám mohou komunikovat dva lidé programy společnosti Microsoft.NET na jednom notebooku a program Java na kanadském serveru iSeries s programem C++ na počítači Linux z Číny.

Při komunikaci prostřednictvím webových služeb se používají následující standardní technologie:

  • XML. Jazyk (formát dat) používaný komponentami webové služby.
  • protokol SOAP. XML zprávy vyměňované mezi programy
  • Knihovna popisu webových služeb (WSDL). XML soubor, který definuje formát zpráv SOAP a způsob jejich odesílání

Ke komunikaci mezi webovými službami lze také použít standardní technologii známou jako Universal Description, Discovery a Integration (UDDI). Podíváme se na to později v článku, ale protože použití UDDI není vyžadováno, mnoho webových služeb jej nepoužívá.

Nějaká terminologie: publikování a používání webových služeb

Než se pustíme do vysvětlování našich pojmů, podívejme se na některé terminologie spojené s webovými službami.

Když mluvíme o publikování webové služby, mluvíme o programu, který publikuje soubor WSDL a umožňuje ostatním programům používat odpovídající službu. Programy, které publikují webové služby, se nazývají poskytovatelé.

Když mluvíme o používání webové služby, máme na mysli program, který volá webovou službu na jiném počítači. Uživatelé webových služeb se nazývají klienti.

XML: rodný jazyk

XML se používá ke komunikaci mezi komponentami webové služby. Zprávy zasílané mezi aplikacemi, stejně jako soubory definující webovou službu, jsou ve formátu XML. Obrázek 1 ukazuje strukturu jednoduchý soubor XML.

Obrázek 1. Základní struktura XML

Jak vidíte, některé informace v souboru (např. jméno, příjmení) jsou obklopeny značkami uzavřenými v trojúhelníkových závorkách. Jméno John je zobrazeno jako John. Existují také prvky, ve kterých jsou vnořeny další prvky, například v prvku Vnořené prvky , A .

Psaní webových služeb v XML má mnoho výhod, včetně:

  • Struktura a gramatika XML je podobná jako u jiných programovacích jazyků, takže programy, které komunikují s webovými službami, nemusí provádět strukturální analýzu souborů XML přímo.
  • Soubory XML jsou textové a čitelné pro člověka (jinými slovy, pokud znáte XML, můžete otevřít soubor XML v textový editor a porozumět jeho obsahu). To může pomoci s laděním.
  • XML umožňuje ve zprávách používat libovolné standardní kódování, takže zprávy můžete psát v angličtině, ruštině nebo japonštině.
  • XML vám umožňuje využít to, co se nazývá jmenný prostor, ve kterém můžete předdefinovat požadovanou strukturu prvku souboru s konkrétním názvem. Můžete například definovat prvek Price, který musí být vždy plovoucí, nebo prvek PersonName, který obsahuje dva dílčí prvky řetězce, FirstName a LastName.

    V případě potřeby také jmenné prostory umožňují, aby více prvků se stejným názvem mělo různé definice. Například prvek StockPrice v jednom jmenném prostoru může obsahovat symbol a cenu, zatímco v jiném jmenném prostoru se může skládat ze symbolu burzy, ceny, denního minima a maxima a 12měsíčního maxima.

Jediné nevýhody XML, pokud to skutečně jsou nevýhody, jsou:

  • XML je rigidní jazyk, takže jakékoli nesprávné formátování zprávy XML způsobí selhání analýzy celé zprávy (i když je problém snadno interpretovat nebo přehlédnout). Pokud však ke generování souborů XML používáte standardní knihovnu (což děláte při vytváření webových služeb), knihovna sama kontroluje správné formátování.
  • XML zpráva je uložena v běžném textový soubor, a proto zabírá více místa než jeho ekvivalent v jiném formátu (jako je rozdělený, binární nebo „domácí“ formát).

Tyto problémy jsou však ve srovnání s výhodami formátu XML zanedbatelné.

SOAP: odeslané zprávy

Víte, že webové služby komunikují ve formátu XML, ale to řeší jen polovinu problému. Aplikace mohou zprávu analyzovat, ale jak vědí, co dělat s výsledkem získaným po analýze?

Instrukce, která popisuje pravidla pro formátování zpráv XML pro webové služby, je známá jako SOAP. Definuje strukturu zpráv, takže programy vědí, jak odesílat a interpretovat data. Základní struktura zprávy SOAP je znázorněna na obrázku 2.

Obrázek 2. Základní struktura zprávy SOAP

V XML by to vypadalo nějak takto:

FOO

V základním případě máte paket SOAP, který obsahuje tělo SOAP a tělo, které obsahuje data, která mají být přenesena. Někdy je také volitelná hlavička SOAP (uvnitř paketu před tělem) obsahující další informace.

instrukce SOAP

Ačkoli je formát SOAP standardní a má stejné pokyny, je třeba mít na paměti, že různí výrobci mohou tyto pokyny implementovat mírně odlišně. Například struktura jmenných prostorů a XML ve zprávě SOAP generované Apache Axis se může velmi lišit od struktury generované Microsoft .NET. Řádně napsaný klient nebo server však může zpracovat jakoukoli zprávu, která je správně napsána podle instrukcí SOAP.

Kromě toho existují některé důležité rozdíly mezi příkazy WSDL 1.1 a WSDL 2.0. Přestože je instrukce 2.0 v době psaní tohoto článku stále ve své finální fázi, brzy začne nahrazovat verzi 1.1.

Pokud jste se nikdy předtím nesetkali se souborem WSDL a pokusíte se jej otevřít a přečíst, budete mít problém z něj dostat všechny informace, protože struktura takového souboru může být poměrně složitá. Všechny informace o metodě (název, parametry, protokol atd.) jsou rozptýleny v různých částech souboru a aby bylo možné sestavit zprávu SOAP, musí je shromáždit klientská aplikace. Tento článek nebude popisovat části souboru WSDL a způsob jejich vzájemné spolupráce.

Zde nám opět přichází na pomoc technologie. Jako vývojář nemusíte číst, analyzovat nebo rozumět obsahu souboru WSDL. Nástroje tyto informace získají za vás, takže stačí vymyslet, co službě poslat a kam umístit výsledky. Vy nejste jen můžeš používat knihovny a nástroje, ale také určitě budeš. Ve všech komponentách webových služeb existuje několik výjimek, zvláštností a složitostí, na které byste se měli podívat. použitím Webová služba, spíše než její rozebrání následované podrobnou studií každé komponenty.

Protokoly: způsob odesílání zpráv

Ještě jsme se nedotkli otázky, jak jsou všechny tyto zprávy přenášeny přes SOAP?

A obvykle se přenášejí přes síť (a/nebo internet) pomocí protokolu HTTP, téměř stejným způsobem, jako se stránky přenášejí ze serveru do vašeho prohlížeče. HTTP se nepoužívá vždy (jeho hlavním konkurentem je SMTP, ale ten je hodně pozadu). Protokol používaný webovou službou je definován v souboru WSDL.

Soubor WSDL obvykle definuje protokol používaný k přenosu zprávy SOAP jako HTTP. SOAP klient odesílá zprávy podle zadaného protokolu.

Další termíny webových služeb, se kterými se můžete setkat

Základní pojmy jsme již probrali, ale když mluvíme o webových službách, možná uslyšíte několik dalších.

Slabé vazby

Programy, které používají webové služby, mají obvykle slabé spojení se službami, to znamená, že služby nezbytné pro fungování programu s nimi nejsou přímo svázány, stejně jako program není svázán se službami. Program může snadno používat jakékoli služby, které potřebuje, a čekají na volání z programu - z jakéhokoli programu, který potřebuje jejich odpověď.

Skutečným příkladem slabých vazeb je oběd s přáteli. Několik přátel se mezi sebou nějak dohodne (osobně, telefonicky, prostřednictvím e-mailem atd.). Do restaurace se dostane každý sám a po obědě si každý platí jídlo sám. Bez ohledu na to, jak oběd probíhal, konečný výsledek je stejný – byl to přátelský oběd.

Ale řízení auta je akce s tužšími vazbami. Máte pevně stanovenou sadu nástrojů, pomocí kterých musíte dosáhnout předem definovaných cílů. Při výjezdu z garáže zařadíte zpátečku a šlápnete na plyn. Když odbočíte doleva, otočíte volantem doleva. Nemáte možnost dělat totéž různými způsoby, protože celý systém je velmi přesný a koherentní a každý z jeho prvků je propojen s ostatními.

UDDI

UDDI je standard pro vytváření katalogu webových služeb poskytovaných libovolným počtem programů. Je to něco jako telefonní seznam pro poskytovatele webových služeb. Klienti mohou vyhledat informace, které potřebují, v registru UDDI a registr jim vrátí data potřebná pro připojení ke službě.

Ačkoli je UDDI poměrně důležitým standardem pro definování webových služeb, jeho význam značně snižuje skutečnost, že jde o volitelný prvek webových služeb, a když je na výběr, zda jej používat či nikoli, mnozí se jej rozhodnou nepoužívat.

Většina organizovaných podnikových prostředí s velkým počtem interních webových služeb má registry UDDI. Je skvělé mít firemní webovou stránku UDDI, která obsahuje informace o webových službách dostupných ve vaší společnosti. Spojením všech služeb dohromady vám UDDI umožňuje plynule a plynule měnit poskytovatele služeb. Pokud klienti vyhledávají služby prostřednictvím UDDI, pak jsou volání SOAP automaticky odesílána novému poskytovateli.

Tato komponenta však není vyžadována v architektuře webových služeb.

Zabezpečení webových služeb

Když čtete o SOAP a WSDL, můžete si všimnout, že téma bezpečnosti není pokryto. Jak se provádí autentizace pro servisní volání, pokud poskytovatel pracuje s citlivými informacemi? Je jasné, že ne všechny webové služby jsou dostupné široké veřejnosti, že?

To je důležitá otázka, na kterou není snadné definitivně odpovědět. V závislosti na situaci můžete použít různá schémata, například:

  • Mohou zprávy SOAP dorazit jako text nebo musí být zašifrovány?
  • Stačí vám jednoduché ověření pomocí přihlášení a hesla, nebo by mělo být silné a založené na tokenech?
  • Pokud jsou použity tokeny, musí být podepsány a jaký je správný způsob, jak je zahrnout do zprávy SOAP?
  • Co když klient posílá zprávy SOAP ne přímo, ale prostřednictvím nějaké mezilehlé struktury, jako je fronta zpráv nebo nějaká jiná webová služba?

Navíc zasílání zpráv nemusí vždy používat HTTP, takže nebudete moci jednoduše používat bezpečnostní systémy webových služeb navíc ke stávajícím bezpečnostním systémům HTTP.

Existuje několik pokynů, které pokrývají tyto a další aspekty zabezpečení webových služeb: WS-Security, WS-Policy, WS-Trust a WS-Privacy. Někteří dodavatelé softwaru a komise na těchto otázkách pracují již několik let. Ačkoli ne všechny implementace webových služeb podporují všechny bezpečnostní pokyny, dostupné bezpečnostní standardy obvykle implementují alespoň několik základních cest zabezpečení.

Middleware a Enterprise Service Bus

Existuje další poměrně velká sada standardů pro webové služby, shromážděné do jednoho poměrně velkého shluku, které se obvykle nazývají instrukce WS-*. Společně řeší mnoho aspektů návrhu, které vyvstanou, když spojíte mnoho webových služeb do jednoho prostředí. Standardy WS-* řeší problémy jako:

  • Bezpečnost
  • Spolehlivost
  • Výměna zpráv
  • Transakce
  • Kvalita služeb

Tento počet standardů je nezbytný, protože výměna zpráv mezi klientem webové služby a serverem v průmyslovém prostředí může být mnohem složitější než jednoduchý požadavek/odpověď. Jak například zajistíte, aby se zpráva dostala k poskytovateli a vrátila se zpět k zákazníkovi? Co když má požadavek SOAP více částí? Jak řídíte procesy, které zahrnují přístup webových služeb k jiným webovým službám? Co když program odešle sekvenci požadavků s požadavky na dobu odezvy?

Pro velké softwarové společnosti představuje práce s těmito standardy výzvy i příležitosti. Někteří prodejci prodávají celé balíčky middlewaru webových služeb, často nazývané Enterprise Service Buses nebo ESB, které zvládnou všechny nebo alespoň některé z výše uvedených úkolů. Tyto ESB jsou také cenné, protože mohou propojit více webových služeb v rámci stejné organizace a poskytovat svou funkčnost, zaznamenávat své akce a ukládat zprávy do front.

Architektura orientovaná na služby

A konečně architektura orientovaná na služby. Ve většině případů jde jednoduše o kombinaci všech výše uvedených: volně propojené webové služby od různých dodavatelů, interagující v souladu s přijatými standardy (případně za účasti ESB) a shromážděné společně různými programy, které přebírají data ze služeb. a používat ji různými způsoby.

Vzhledem k tomu, že SOA je softwarová architektura, je s její výstavbou spojeno obrovské množství koordinační a plánovací práce. Není to jen shluk služeb pohromadě; je to organizace toho, jak jsou služby sestavovány a publikovány, jaké nástroje pro správu a middleware se používají a jak jsou služby a celý systém monitorovány a spravovány.

Pokud se podíváte více globálně, SOA je také typ myšlení. Nutí vás to nemyslet na nezávislé pracovníky velké programy, ale vše vnímat jako možné komponenty publikované a používané ve výrobě. Místo aplikací s bohatými funkcemi přemýšlíte o konkrétních a dobře definovaných službách – což jsou webové služby.

Proč je to důležité?

Nyní již víte něco o tom, jak webové služby fungují – klient si přečte WSDL soubor poskytovatele, naformátuje a odešle podle něj zprávu SOAP a jako odpověď obdrží další zprávu SOAP. Proč je to tak důležité? Co se děje?

Součástí důležitosti služeb je to, že poskytují standardní způsob komunikace programů bez ohledu na jazyky, ve kterých jsou napsány, nebo platformy, na kterých běží. Dříve jsme museli pracovat s datovými formáty, které byly jedinečné pro různé programy, nebo s funkcemi na úrovni API, se kterými programy v jiných jazycích nemohly pracovat. Použití XML ve všech standardech webových služeb znamená, že všechny služby jsou přístupné a jasně definované.

Ve skutečnosti to umožňuje zcela odlišným programům snadno mezi sebou komunikovat v jazyce, kterému všichni rozumějí. Jedním z hlavních problémů při práci s různé technologie z různých výrobců tohle všechno bylo vždy potřeba vynutit různé programy komunikovat mezi sebou a vyměňovat si data. Nyní, když všechny vaše aplikace mohou poskytovat a/nebo využívat webové služby, je interoperabilita mezi nimi neuvěřitelně jednoduchá.

Další výhodou webových služeb je, že klienti a dodavatelé mohou být na různých strojích, používat různý hardware a software, a to neruší komunikaci. Programy mohou být používány jinými programy v rámci stejného stroje nebo z jiných strojů, ale používajících specifický formát přenosu dat. Webové služby potřebují pouze síťové připojení a procesor XML.

Pokud se všechny tyto faktory vezmou v úvahu společně, je výsledek významný. Jakmile budeme mít standardní opravný prostředek Pro komunikaci mezi aplikacemi po síti můžeme naše programy sestavit jinak. Namísto psaní monolitických programů, které pokaždé znovu objeví kolo, můžeme psát programy, které se skládají z modulů.

Například místo velkého programu, který shromažďuje informace o několika procesech, převádí je do grafů a zobrazuje je uživatelům, můžeme vytvořit řídicí panel, který zobrazuje data přijatá z několika webových služeb. Kompilovaná data jsou přijímána z jedné nebo více služeb a výsledné grafy jsou vytvářeny jinou webovou službou, která data přijímá a vytváří graf.

Dashboard se transformuje z velkého programu na jednoduché rozhraní. Pokud chceme přidat nové komponenty, jednoduše se obrátíme na Doplňkové služby. Pokud potřebujeme jiný graf, obrátíme se na jinou grafovou službu. Pokud potřebujeme interaktivnější řídicí panel s možností školení nebo třídění, může řídicí panel přenášet zprávy od uživatele příslušné službě. Můžeme dokonce zcela změnit volané služby tak, aby si toho uživatelé nevšimli (pokud se nezmění soubor WSDL), a panel zůstane stejný.

Jako IT profesionál můžete vyvíjet jak rozhraní, tak služby, nebo obojí. Při práci na takovém projektu je důležité pochopit, jak to všechno dohromady funguje (nebo alespoň vědět, co to je).

Je také dobré, že existuje mnoho nástrojů, které vám pomohou poskytovat a používat webové služby a mohou za vás udělat hodně těžké práce. V následujících částech článku pochopíme, jak pomocí IBM Lotus Domino V7.0 můžete snadno poskytovat webové služby klientům nebo systémům.

kde začneme? A přímo od kontaktu zákazník-operátor: v internetovém studiu zazvoní telefon. Account manager zvedne telefon a pozdraví vás. Z té strany to zní asi takto:

- Dobré odpoledne. Potřebuji web, jednoduchý. Jaká je cena? (stejný příběh s webovými aplikacemi).


To je opravdu bolest hlavy pro každý účet. Ale není nervózní a vysvětluje, že stránky se liší ve složitosti, funkčnosti atd. Vyjasňuje, co klient potřebuje a co v jeho chápání znamená „jednoduché“. Obdrží například následující odpověď:

- No, vidíte, mám firmu na prodej oken. Bylo by hezké vytvořit web, abyste si mohli vytvořit „virtuální“ okno. Vyberte si barvu, materiály, velikosti. Uveďte množství. Podívejte se, jak to bude vypadat. Pak by naši specialisté vyrazili na místo. Souhlasíte?


To už je zajímavé. Ale to není vše:

- A ano, mám další přání. Divizi máme v Moskvě, Petrohradu a Novosibirsku. Personál je velký, je tam papírování, no, rozumíte. Můžete udělat něco jako... malou sociální síť uvnitř webu, nebo co? Bude pro nás pohodlnější komunikovat tímto způsobem, bez jakýchkoliv „asů“. A ukládat dokumenty do jednoho „cloudu“ - slyšel jsem, že to dělají.


Account manager si vše zapíše, udělá hrubý odhad a pojmenuje náklady. Potenciální klient protočí oči (to můžete slyšet i po telefonu), řekne „vaše ceny jsou jen z jiného světa“ a zdvořile zavěsí.

To je samozřejmě megapřehnaná situace, ale to se děje neustále jak při programování internetových aplikací, tak při tvorbě webových stránek. Naším cílem je zjistit, proč se to děje.

Co je to webová služba?

Vývoj webové služby je z velké části stejný vývoj webových stránek. Je tu však jedno velké „ALE“: na rozdíl od propagačních stránek a firemních akcí, které již všichni znají, má online služba jedinečnou funkčnost. Může to být produktový designér (jako v příkladu výše), hostování fotografií, uzavřená sociální síť pro firemní použití, otevřená sociální síť (danedaiboh), nástěnka...

Pro vytvoření webové služby se rozhodnou většinou ti, kteří spoléhají na inovace, pohodlí a moderní webové technologie. Unikátní funkcionalita v tomto případě funguje jako „trumf“ podnikání, s jeho pomocí má dusit konkurenty a zvyšovat zákaznickou základnu.

A to vše znamená, že:

  • Zjištění všech možností budoucího projektu bude nějakou dobu trvat. Obvykle hodně času.
  • Bude vyžadována podrobná studie technický úkol. Nebo ještě lépe prototyp.
  • Budete muset vyvinout samotnou webovou službu (nečekaně, že?). Udělejte to od začátku nebo pomocí stávajícího vývoje. Ale v každém případě to nebude možné „sestavit“ na kolenou, z krabice, podle šablony a „rychle“.
  • Před vydáním bude nutné produkt důkladně otestovat.

V důsledku toho se bude cena vytvoření webové služby (spolu s jejím naprogramováním) pohybovat. Vždy však bude vyšší než u webu s „typickou“ sadou funkcí.

Pro náš příklad: když klient zmínil interní sociální síť, cloudové úložiště pro data a návrháře oken – to vše dohromady bylo možné nazvat webovou službou. Proto byly náklady pro zákazníka nazývány „neočekávané“.

„Vesmírné“ ceny při rozvoji internetových služeb jsou oprávněným opatřením. To je objektivně náročná a zdlouhavá práce.

Zda podnik takovou službu potřebuje, je úkolem vašich obchodníků.


Speciálním a oblíbeným tématem pro všechny jsou sociální sítě.

Tady se dějí docela vtipné věci. Navíc se tyto komedie hrají s vážnou tváří. Například určité aktivní procento školáků, „pokročilých“ uživatelů VKontakte, neustále chce svou vlastní hru. K závratnému úspěchu. A aby se neobtěžoval.

V důsledku toho dostáváme do naší e-mailové schránky a do komunity spoustu dopisů s textem „prodejte/vyvíjejte pro nás obchodní aplikaci/hru/něco jiného“. Něco takového:

Ano, 5 000 rublů za několik týdnů práce - ok. Nyní mluvíme pouze o vhodných kopiích, nikoli o těch, které získávají publikum 200 uživatelů a chřadnou.

Pokud vás přesto přepadne mánie vytvořit úspěšný klon, pak se alespoň zamyslete nad tím, kolik stálo autory originálu propagace a propagace webové aplikace či služby (většinou jde o rozpočet na vývoj vynásobený deseti).

Nedělejte chyby. Spočítejte si svou sílu. Spusťte úspěšné internetové projekty. Amen.

Myšlenka webových služeb byla vyvinuta giganty počítačového průmyslu, jako jsou Sun, Oracle, HP, Microsoft a IBM. Tato myšlenka není nic nového, ale je to velký krok kupředu ke snadnějšímu přístupu k programům přes web. Na základě standardních komunikačních formátů by webové služby mohly zcela změnit způsob, jakým přemýšlíme o tom, jak bychom měli vytvářet webové stránky.

Co je to webová služba?

Díky webovým službám lze přes internet zpřístupnit funkce libovolného programu. Programy jako PHP, ASP, JSP skripty, JavaBeans, COM objekty a všechny naše další oblíbené programovací nástroje tak nyní mohou přistupovat k některému programu běžícímu na jiném serveru (tj. webové službě) a využít odezvu, kterou od ní obdrží na jejích webových stránkách, popř. aplikace.

Řekněme, že pokud potřebuji provést nějaký programátorský úkol a jsem příliš zaneprázdněn (nebo nemám náladu na to, abych znovu vynalezl kolo), mohu využít služeb webové služby, ke které bude moje stránka přistupovat přes internet. Předáním požadavku s parametry webové službě očekávám, že obdržím odpověď obsahující výsledek provedení mého požadavku.

Každý, kdo někdy v poslední době pracoval s Hotmailem, už se s webovými službami trochu setkal: systém ověřování uživatelů Passport je jednou ze služeb zahrnutých do iniciativy Microsoft .NET. V současnosti je k dispozici zdarma, takže tvůrci webových stránek mohou snadno implementovat ověřování uživatelů na svých stránkách.

Základy

Principy webových služeb jsou překvapivě jednoduché. A nepřidávají do světa distribuovaných počítačů a internetu nic nového:

  • osoba odpovědná za webovou službu určuje formát požadavků na svou webovou službu a její odpovědi
  • jakýkoli počítač v síti odešle požadavek na webovou službu
  • webová služba zpracuje požadavek, provede nějakou akci a poté odešle odpověď

Touto akcí může být například zobrazení nabídky akcií, zobrazení ceny konkrétního produktu, uložení záznamu do kalendáře schůzek, překlad textu z jednoho jazyka do druhého nebo kontrola čísla kreditní karty.

Normy v jádru

Důvod, proč nás všechny najednou zajímají webové služby, je ten, že jsou založeny na standardech, otevřených protokolech pro výměnu a přenos dat.

Předtím mnoho společností vyvinulo své vlastní proprietární standardy a formáty. A nyní nám k práci stačí znát jednoduchý XML (eXtensible Markup Language), který se přenáší přes starý známý protokol HTTP. To znamená, že informace o tom, jak webové služby fungují, jsou dostupné všem a weboví vývojáři, kteří jsou s těmito technologiemi obeznámeni z povolání, si mohou začít hrát s webovými službami již dnes.

Rozdíl mezi webovými službami a jinými technologiemi, se kterými se vývojáři setkali (například DCOM, pojmenované kanály, RMI), je ten, že webové služby jsou založeny na otevřených standardech, lze je snadno naučit a tyto standardy jsou široce podporovány po celém světě. Unix a platformy Windows.

Simple Object Access Protocol (SOAP) je standardní protokol vyvinutý organizací W3C. Definuje formát požadavků na webové služby.

Zprávy mezi webovou službou a jejím uživatelem jsou zabaleny do obálek SOAP. Zprávy obsahují buď požadavek na provedení nějaké akce, nebo odpověď – výsledek provedení této akce. Obálka a její obsah jsou zakódovány v XML a jsou poměrně snadno srozumitelné. Takto vypadá jednoduchý požadavek SOAP při odeslání přes HTPP do webové služby:

Xmlns:env="http://www.w3.org/2001/06/soap-envelope">


xmlns:m="http://www.somesite.com/Postcode">
WC1A8GH
Spojené království

Klíčové prvky obálky SOAP lze rozpoznat poměrně snadno: jedná se o dva parametry (("PSČ") a ("země"), které jsou obsaženy uvnitř prvku pod názvem. Tento prvek je název webové služby, na kterou odesíláme požadavek. Další data v obálce, jako je kódování textu a verze SOAP, pomáhají webové službě správně zpracovat požadavek.

A odpověď bude vypadat takto:

Xmlns:env="http://www.w3.org/2001/06/soap-envelope" >

Env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://www.somesite.com/Postcode">
Ano

Tuto zprávu je ještě snazší rozluštit. Prvek v našem požadavku se změnil na prvek v odpovědi na požadavek. Tento prvek obsahuje pouze jeden prvek, jehož hodnota udává, zda je naše PSČ správné nebo ne. Takže prostřednictvím kouzla SOAP jsme vytvořili požadavek, který dělá za nás užitečná práce. V odpovědi přes síť dostáváme určitý typ odpovědi v XML.

Nyní o UDDI

I když je protokol SOAP jednoduchý, webové služby by byly málo užitečné, kdybychom je neměli jak najít. Naštěstí IBM, Microsoft a Ariba zbystřily a vytvořily projekt Universal Description, Discovery and Integration (UDDI), který se, jak doufají, stane společným katalogem všech webových služeb na webu.

Systém UDDI umožňuje společnostem vystavit své webové služby veřejnosti. Tento adresář funguje jako telefonní seznam pro všechny webové služby. Registrace do adresáře UDDI je zdarma a zakladatelé projektu doufají, že tento adresář bude obsahovat popisy všech, všech, všech služeb na celém webu, takže k nalezení požadované webové služby se budete muset obrátit pouze na jednu UDDI adresář.

Jak to celé funguje

Jak tedy najdu správnou webovou službu?

Představme si, že jsem vývojář webových stránek a můj klient mě požádal o přidání na web nová vlastnost: je třeba přidat kontrolu ověření poštovní směrovací číslo v registračním formuláři.

K provedení této kontroly bych potřeboval vytvořit databázi všech PSČ ve všech 30 zemích, kde naše společnost podniká, a následně při registraci zkontrolovat, zda PSČ odpovídá městu uvedenému v registraci. Ale já tato data nemám a myslím si, že shromažďování takových dat bude muset vynaložit značné množství peněz.

Namísto vyhazování peněz na nákup databáze, psaní kódu sám, zajišťování integrity a správnosti všech dat a ladění skriptů, jdu do adresáře UDDI a zjišťuji, zda existuje webová služba, která tuto práci zvládne. já Když jsem dorazil na www.uddi.org, spustil jsem vyhledávání a našel jsem vynikající službu od společnosti XYZ Corp.

Pečlivě zkontroluji definici formátu webové služby (definice je napsána v jazyce WSDL (Web Services Description Language), ujistím se, že služba dělá přesně to, co potřebuji. Poté se svými kolegy zkontroluji pověst společnosti XYZ Corp. a zjistím, že je solidní a poté kontaktujte XYZ Corp. ohledně ceny. Pokud je cena za přístup ke službě v rámci mého rozpočtu, napíšu pro svůj web jednoduchou stránku JSP, která volá webovou službu společnosti XYZ Corp., a ejhle, okamžité ověření se objeví na poštovním směrovacím čísle webu.

Stojí to za váš čas

I když nemáte nic společného s programováním nebo technologiemi vývoje webových stránek, webové služby stojí za to se o nich dozvědět více. Představte si obrázek, jak s klientem diskutujete o novém webu a diskutujete o všech funkcích nového projektu. Všechno jde skvěle: rozpočet splňuje očekávání zákazníka, líbil se mu náčrt plánu webu a líbily se mu příklady rozhraní. Zdá se, že vše funguje.

A najednou si pamatují nějakou velmi složitou funkci. Při pouhé zmínce o tom váš webový vývojář zezelená a začne se dusit a kašlat. Toto je vývojář, který vám dává signál, že vývoj této funkce bude vyžadovat spoustu peněz a času nebo je prostě s takovým rozpočtem neproveditelný.

Zahoďte strach! Jsem připraven zaručit, že na internetu již existuje webová služba, která je připravena poskytnout vám požadovanou funkci, a náklady na používání této webové služby budou mnohem nižší než náklady na nezávislý vývoj jejího analogu. Tímto způsobem ušetříte svého vývojáře od zbytečných bolestí hlavy a svého klienta před plýtváním peněz tím, že strávíte pár minut procházením katalogu UDDI.

Vývoj služeb

Vývojáři se samozřejmě nemusí spokojit pouze s webovými službami vytvořenými jinými. Pomocí jedné z následujících sad nástrojů můžete vytvořit svou vlastní webovou službu a poskytovat její služby dalším uživatelům internetu.

Výběr nástrojů pro vývoj webových služeb je široký. Zahrnuje nástroje od společností jako Sun (Open Net), Microsoft (.NET), HP (e-services) a IBM (Web Services). Existují také nástroje s otevřeným zdrojovým kódem ( open source rámce). Cílem projektu Mono je například nahradit sadu nástrojů .NET od společnosti Microsoft poskytnutím kompilátorů, běhového prostředí a knihoven pro provozování stejných webových služeb na všech platformách, včetně Unixu.

Navzdory rozmanitosti serverů a nástrojů pro vývoj webových služeb všechny podporují stejný protokol SOAP, jazyk XML a systém UDDI.

Mínusy

Než úplně opustím kariéru programátora a budu se věnovat používání webových služeb, musím si položit otázku: "Je to příliš růžový obrázek. Co je na něm špatného?" Bohužel velký potenciál webových služeb má svou cenu:

  • Použití XML jako formátu přenosu dat znamená, že vaše zprávy budou velmi velké: samotné XML tagy zabírají hodně místa, což pro nás představuje určitou zátěž při vytváření, přenosu a interpretaci zpráv.
  • Od té doby, co používáme vzdálené počítače Při provádění určitých funkcí se zcela spoléháme na internet, což vytváří příliš mnoho nespolehlivých článků v řetězci mezi naším webovým serverem a webovou službou.
  • Webové služby dnes vytváří jen málo společností a jen málo společností je využívá. Ladění a zlepšování systému webových služeb vyžaduje ještě dlouhou dobu.
  • Systém licencování a zpoplatnění používání webových služeb musí vývojáři teprve akceptovat. Vzhledem k tomu, že webových služeb je stále příliš málo, většina společností se snaží na své potenciální klienty udělat dobrý dojem tím, že záměrně zlevňuje služby a nabízí výhodné licenční podmínky. Ještě nějakou dobu potrvá, než se vyjasní skutečné náklady na webové služby.

Když webové služby zaujmou jejich místo a budou dostupné všem, stanou se neocenitelným pomocníkem pro webové vývojáře. Poskytnou nám flexibilní přístup k plnému výkonu všech počítačů v síti. Je čas, aby se tvůrci webových stránek začali zajímat o webové služby a dozvěděli se více o tom, co z nich mohou získat.

Překlad: Alexander Kachanov (http://webmascon.com)