interakce stroj x stroj
* princip: aplikace (programová komponenta) identifikovaná pomocí jedinečné adresy, která poskytuje kolekci metod, ke kterým je možno přistupovat po síti s využitím standardizovaných protokolů
* metody vrací na konkrétní požadavek (request) konkrétní odpověď (response)
* služba nemusí nic vracet ani mít vstupní parametry
* synchronní / asynchronní
====== využití ======
* **RPC (Remote procedure calls)** – vzdálené volání procedur - pomocí WS je volána funkce s parametry definovanými v požadavku klienta, výsledek volání je oznámen v reakci na požadavek
* **SOA (Service-oriented architecture)** – servisně orientovaná architektura, kde základním prvkem komunikace není procedura, ale zpráva. Komunikace pomocí zasílání zpráv umožňuje volnější vazbu mezi systémy a je možné skrýt nepodstatné implementační detaily
*** REST (Representational State Transfer)** – funkcionalita je rozdělena do jednotlivých prostředků (resources) s unikátními URL, všechny prostředky sdílí uniformní
====== architektura ======
* **komunikační vrstva**
* přenos zpráv mezi službami a klienty / protokol SOAP
* vrstva popisu služby
* popis sestává ze seznamu metod, parametrů a návratových hodnot, přípojných nodů (fyzických adres v počítačové síti) pro volání služby.
* odpověď na otázky, co daná služba dělá (jaké metody poskytuje, co je potřeba poslat na vstup, abychom obdrželi odpověď), jak je služba přístupná (detaily o datových typech a protokolech nezbytných pro přístup k metodám)
* kde se konkrétní služba nachází (detaily o adrese specifické pro daný protokol)
* jazyk WSDL
* vrstva registrů
* když uživatel potřebuje využít nějakou specifickou službu, prohledá daný registr - získá popis a může začít používat
* protokol UDD
* bezpečnostní vrstva
* vrstva spolehlivosti zpráv
* zajišťuje ověřování spolehlivosti přenosu zprávy a věrohodnosti, zda daná zpráva přišla ze správného zdroje a nezměněná
* vrstva pro kontext, koordinaci a přenos
* koordinace činnosti WS v případě dlouhých transakcí
* bussiness process language layer
* popisuje spouštěcí logiku webových služeb definováním jejich kontrolního toku (podmíněné, sekvenční, paralelní) a předepisuje pravidla pro zpracování jejich dat
* vrstva pro choreografii
* chování služeb při komunikaci mezi sebou
====== protokoly ======
* přenos - HTTP, FTP, SMTP
* XML komunikace -
* XML RPC
* SOAP - nástupce RPC
* REST - (Representational State Transfer) - založen na znalosti zdrojů a entit, kde každá má vlastní URI
* popis služby
* vyhledání služby
====== SOA ======
* řešení, které klade důraz na používání standardů
* standardizace se opírá o používané webové služby popisující funkce aplikací
* Služby jsou bezstavové a jejich rozhraní je popsané pomocí standardizovaného rozhraní WSDL a komunikují pomocí standardního komunikačního protokolu SOAP
* REST (Representational State Transfer) - založen na znalosti zdrojů a entit, kde každá má vlastní URI
====== SOA A GIS ======
* dynamicky generovaní klienti
* Distribuované programové mapové komponenty
====== SOAP ======
* protokol pro posílání zpráv XML
* slouží k volání webových služeb a k předávání dat
* základ webových služeb - ostatní standardy vznikly později a jen rozšiřují jeho možnosti a snadnost použití
* umožňuje zaslání XML zprávy mezi 2 aplikacemi
* pracuje na principu peer-to-peer
* zpráva je jednosměrný přenos informace od odesílatele k příjemci
* díky kombinování několika zpráv - lze implementovat běžné komunikační scénáře
* pracuje na principu vzdáleného volání procedur (RPC) = model požadavek/odpověď
* poskytovatel klientovi nabízí množinu funkcí nad daty
* klient pomocí XML tyto funkce vzdáleně volá
* body a header obalene v envelope
====== Web Services Description Language WSDL ======
* XML dokument, který popisuje konkrétní WS - parametry při volání, návratový typ, ...
* operace a zprávy jsou popisovány na abstraktní úrovni - až poté jsou svázány s konkrétním síťovým protokolem a datovým formátem -> snadné vytvoření popisu rozhraní, které nabízí jednu službu několika způsoby
* v praxi se nejčastěji popisují služby, které si posílají zprávy pomocí formátu SOAP a protokolu HTTP
* **elementy:**
* types - obsahuje definici datových struktur používaných ve zprávách, použiju nejčastěji XML schémata,
* message - definuje formát předávaných zpráv pomocí dříve definovaných datových typů, při použití SOAPu pro RPC odpovídá jedna část zprávy jednomu parametru vzdálené metody
* operation - abstraktní definice operací, které jsou službou podporovány, definice vstupů a výstupů,
* portType - sdružuje dohromady několik operací
* binding - slouží pro navázání určitého typu portu (portType) na konkrétní protokol a formát přenosu zpráv
* port - jeden koncový bod služby definovaný jako kombinace síťové adresy a dříve definované vazby (binding)
* service - sdružuje několik koncových bodů (portů) do jedné služby
====== Universal Description, Discovery and Integration UDDI ======
* mechanismy pro registrování, kategorizování a vyhledávání webových služeb
* adresářová služba popisující společnosti a webové služby, které poskytují
* pracuje jako WS => komunikace s ní probíhá pomocí SOAP
* **obsahuje 4 druhy entit**
* bussiness entity
* bussiness service
* binding tepmplate
* service typ
* **práce s UDDI:**
* vývojář prohledá registr a najde si služby, které potřebuje
* získá pro ně popis WSDL a může je začít rovnou používat
* UDDI nemusí obsahovat jen popisy webových služeb ve WSDL, lze do něj ukládat popisy služeb v libovolném formátu
* Z důvodu interoperability se však společně s UDDI používá právě SOAP a WSDL
*** WSIL**
* funguje naopak než UDDI
* poskytovatel nehledá klienty, ale klient hledá poskytovatele a jeho služby
* **katalog OGC Cat**
* OGC standard, definuje rozhraní pro vytváření aplikačních profilů pro prohledávání, procházení a dotazování metainformačních databází o datech, službách a dalších případných zdrojích
====== Representational State Transfer REST ======
* softwarová architektura navržená pro „hypermediové“ systémy v distribuované prostředí
* v úzkém slova smyslu definuje sbírku principů síťové architektury, která popisuje, jak jsou zdroje definovány a adresovány
* na rozdíl od známějších XML-RPC či SOAP, orientován **datově**, nikoli procedurálně
===== komunikační protokol =====
* **client/server** - slouží k oddělení odpovědností
* **bezestavovost (stateless)**- každý požadavek musí obsahovat všechny informace nutné k jeho vykonání
* **cache** - každý požadavek může být explicitně označený jako cacheovatelný či necacheovatelný, to umožňuje transparentně zvýšit výkonnost přidáním cache mezi klient a server
* **Code-On-Demand** - funkcionalita klienta může být rozšířena kódem, který zašle server (například JavaScript)
* **vrstevnatost** - umožňuje skládání vrstev poskytujících služby za účelem zvýšení variabilnosti (cache, transformace, rozložení zátěže atd.)
=== Výhody REST konceptu ===
* jednoduché a změnám odolné rozhraní - snadná rozšiřitelnost
* malé nároky na klienta z hlediska porozumění sémantice operací
* transparentnost - resource lze na "cestě" velice snadno cacheovat, transformovat atd.
=== nevýhody REST konceptu proti RPC===
* dsvvv\vds blablabláááááááááááááááááááááááááááá
====== rest formát výměny dat ======
* ATOM/RSS - sada protokolů pro publikaci a aktualizaci informačních zdrojů
* JSON (JavaScript Object Notation) - speciální záznam popisu dat odvozený z JavaScriptu s nízkou provozní režií, snadno a rychle interpretovatelný v jakémkoliv prohlížeči
{{ ::restxsoap.png?nolink |}}
====== Business Process Execution Language BPEL ======
* model a prostředky pro popis chování procesu, založeného na spolupráci mezi daným procesem a jeho partnery
* spolupráce mezi všemi partnery je zprostředkovávaná rozhraními WS a struktura spojení na této úrovni je zapouzdřená do tzv. partnerLink
* všechny externí zdroje a partneři jsou zde reprezentovány jako WSDL služby
----
----
----
webové služby v oblasti GIS