Webové služby. Martin Sochor



Podobné dokumenty
POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

Pokročilé Webové služby a Caché security. Š. Havlíček

Vývoj Internetových Aplikací

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Michal Krátký, Miroslav Beneš

Tvorba informačních systémů

Úvod do Web Services

RESTful API TAMZ 1. Cvičení 11

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Zápasíme s REST API. Lukáš Křečan REST API Architect GoodData

Web Services. Martin Kuba Superpočítačové Centrum Brno, Masarykova Univerzita Web Services, DATAKON

2N Helios IP HTTP API

Komponentový návrh SW

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

Web Services na SOAP

XML a nové trendy v publikování na Webu

SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Požadavky pro výběrová řízení TerraBus ESB/G2x

SPRÁVA ZÁKLADNÍCH REGISTRŮ PODMÍNKY PRO PŘIPOJENÍ AGENDOVÝCH INFORMAČNÍCH SYSTÉMŮ DO ISZR. verze 2.00

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

InternetovéTechnologie

Server-side technologie pro webové aplikace

Architektura orientovaná na služby Návrh orientovaný na služby. Ing. Petr Weiss. VUT v Brně,, FIT, UIFS

Webové služby. Martin Kuba Superpočítačové centrum Brno Masarykova univerzita

Příloha č. 2 - Integrace SpiritÚAP do ESB Jihočeského kraje

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Softwarové komponenty a Internet

Servisně orientovaná architektura a její aplikace v systémech sledování a řízení výroby

Komponentní technologie

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Práce se soubory opakování

Sem vložte zadání Vaší práce.

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Architektura aplikace

Principy fungování WWW serverů a browserů. Internetové publikování

JSON API pro zjišťování cen MtG karet

Analyzujte konkurenční API u služeb podobného typu. Proveďte analýzu požadavků zadavatele a současného stavu správy zásilek.

API pro službu mobilem.cz, verze XML 5.04

RESTful web service v Javě

WCF. IW5 - Programování v.net a C# WCF

Popis B2B rozhraní pro elektronickou neschopenku

Kapitola 5 WCF, webové služby a mezidoménové zásady

ilé aspekty distribuovaných objektových systémů

HTTP protokol. Zpracoval : Petr Novotný

Formuláře. Internetové publikování

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

API pro volání služby kurzovního lístku KB

Microsoft Office 2003 Souhrnný technický dokument white paper

Úvod do aplikací internetu a přehled možností při tvorbě webu

Fakulta elektrotechnická

WWW technologie. HTTP protokol

ZABEZPEČENÍ PŘENOSU DAT MEZI KLIENTY A SERVEREM PŘES HESSIAN PROTOKOL

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

WINDOWS 8 APLIKACE PRO PREZENTACI DAT Z WEBOVÉHO API

Verze dokumentu 0.1 duben 2016

Popis rozhraní Číselníkové webové služby

Základní zadání IS o ISVS. Sluţba poskytování dat IS o ISVS

Prototyping konfigurace linuxových serverů. horizontální škálování Deltacloud API

GEOVAP, spol. s r. o. Uživatelská příručka MarushkaDesktop DemoClient

MyIO - webový komunikátor

Služba World Wide Web

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Vývojařská Plzeň AngularJS

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Univerzita Pardubice Fakulta elektrotechniky a informatiky. Transport konfiguračních dat pomocí webových služeb. Lubomír Mokrý

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

Odkaz na WSDL Testovací verze:

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Malý průvodce Internetem

BI-AWD. Administrace Webového a Databázového serveru Úvod do problematiky HTTP serveru

Komunikační rozhraní SEP 1.6

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Aplikovaná informatika

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Systémy jednotného přihlášení Single Sign On (SSO)

Příručka pro potvrzování zůstatku vydavatelům karetních platebních prostředků

TÉMATICKÝ OKRUH Softwarové inženýrství

Internet protokol, IP adresy, návaznost IP na nižší vrstvy

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

Tvorba webových stránek. Ing. Radek Burget, Ph.D.

2N Helios IP HTTP API

Úvod do tvorby internetových aplikací


GP webpay: Správa objednávek, Web Services

TME. Teploměry s přenosem dat po Ethernetu. Protokoly ASCII, HTTP (WEB), SMTP ( ), SNMP, MODBUS TCP, XML

Centrální portál knihoven

3.4 Základní služby Internetu

Webové mapové služby. Lukáš Birka

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Automatizované

Internet Information Services (IIS) 6.0

Nastavení telefonu CAT B100

Realizace komunikačního profilu a uživatelského rozhraní pro generátor síťového provozu

Transkript:

Webové služby Martin Sochor

Webové služby způsob komunikace dvou aplikací přes Web binární zprávy (CORBA) blokovány proxy servery a firewally masivní využití XML protokol SOAP + jazyk pro popis služeb WSDL přístup REST

XML Schema popis struktury XML dokumentu

<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="student"> <xs:complextype> <xs:sequence> <xs:element name="jmeno" type="xs:string" /> <xs:element name="prijmeni" type="xs:string" /> <xs:element name="absence" type="xs:integer" /> </xs:sequence> <xs:attribute name="uid" type="xs:string" /> </xs:complextype> </xs:element> </xs:schema>

<?xml version="1.0" encoding="utf-8"?> <student xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:nonamespaceschemalocation="student.xsd" uid="sochomar"> <jmeno>martin</jmeno> <prijmeni>sochor</prijmeni> <absence>5</absence> </student>

SOAP Simple Object Access Protocol založený na XML rozšiřitelný nezávislý na transportním protokolu nezávislý na použité technologii

<?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:header>... </soap:header> <soap:body>... <soap:fault>... </soap:fault> </soap:body> </soap:envelope>

<soap:envelope> atributy: povinně xmlns:soap odkazující na adresu http://www.w3.org/2001/12/soap-envelope encodingstyle definuje použité datové typy

<soap:header> obsahuje informace o zprávě samotné atributy: mustunderstand actor encodingstyle

<soap:body> samotná zpráva obsahuje <soap:fault>, pokud došlo k chybě

<soap:fault> prvky: <faultcode> <faultstring> <faultactor> <detail>

POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: 322 <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:body xmlns:m="http://www.example.org/stock"> <m:getstockprice> <m:stockname>ibm</m:stockname> </m:getstockprice> </soap:body> </soap:envelope>

HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: 330 <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:body xmlns:m="http://www.example.org/stock"> <m:getstockpriceresponse> <m:price>34.5</m:price> </m:getstockpriceresponse> </soap:body> </soap:envelope>

WSDL Web Service Description Language strojově čitelný popis rozhraní webové služby lze jej generovat z kódu lze z něj generovat kód abstraktní část: popis použitých datových typů, popis dostupných operací (rozhraní) konkrétní část: vazby rozhraní k protokolům, definice služby a jejích koncových bodů

<description> <types>... </types> <interface>... </interface> <binding>... </binding> <service>... </service> </description>

<types> obsahuje definice použitých datových typů definice jsou ve formě XML Schema typy určené pro vstup/výstup musí být jednoduché (tj. ne složené)

<types> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://greath.example.com/2004/schemas/res Svc" xmlns="http://greath.example.com/2004/schemas/ressvc"> <xs:element name="checkavailability" type="tcheckavailability"/> <xs:complextype name="tcheckavailability"> <xs:sequence> <xs:element name="checkindate" type="xs:date"/> <xs:element name="checkoutdate" type="xs:date"/> <xs:element name="roomtype" type="xs:string"/> </xs:sequence> </xs:complextype> <xs:element name="checkavailabilityresponse" type="xs:double"/> <xs:element name="invaliddataerror" type="xs:string"/> </xs:schema> </types>

<interface> definice samotného rozhraní, dostupných operací, případných chyb obsahuje prvky: <operation> definuje dostupné operace a datové typy, které jsou použity jako zprávy <fault> definuje datové typy, které jsou použity jako zprávy o chybě

<interface name="reservationinterface"> <fault name="invaliddatafault" element="ghns:invaliddataerror"/> <operation name="opcheckavailability"> <input messagelabel="in" element="ghns:checkavailability" /> <output messagelabel="out" element="ghns:checkavailabilityresponse" /> <outfault ref="tns:invaliddatafault" messagelabel="out"/> </operation> </interface>

<binding> definuje konkrétní formát (kódování) zprávy a protokol použitý k jejímu odeslání může použít různé protokoly a formáty pro různé operace v rámci téže vazby a téhož rozhraní

<binding name="reservationsoapbinding" interface="tns:reservationinterface" type="http://www.w3.org/ns/wsdl/soap" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/htt P/"> <operation ref="tns:opcheckavailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/soapresponse"/> <fault ref="tns:invaliddatafault" wsoap:code="soap:sender"/> </binding>

<service> definuje, kde se na webu služba nachází jedna služba má jen jedno rozhraní jedna služba může mít více koncových bodů (pro různé vazby)

<service name="reservationservice" interface="tns:reservationinterface"> <endpoint name="reservationendpoint" binding="tns:reservationsoapbinding" address ="http://greath.example.com/2004/reservation"/> </service>

<documentation> WSDL je strojově čitelný formát; stroje ale nejsou jediné čtenáře nepovinné, leč nezbytné

Klasická webová služba server poskytuje svoje rozhraní jako WSDL klientská aplikace je vytvořena z WSDL klient si se serverem posílá zprávy ve formátu SOAP, jejichž struktura je popsaná daným WSDL

REST Representational State Transfer styl architektury distribuovaných aplikací inspirován architekturou samotného webu není to konkrétní technologie, ale sada principů

Principy RESTu architektura klient-server klient se nezajímá o ukládání dat, server se nezajímá o uživatelské rozhraní; spěje k modularitě není uchováván stav (na serveru) každý požadavek klienta obsahuje všechny informace potřebné k jeho provedení; stav uchovává pouze klient lze ukládat do cache každý požadavek definuje, jestli jej lze uložit do cache; vede ke snížení požadavků na server a urychlení služby

Principy RESTu vrstvený systém klienta nezajímá, zda jeho požadavek míří přímo na koncový server, nebo skrz mezičlánky; snazší implementace sdílených cache a vyvažování zátěže jednotné rozhraní používá se co možná nejvíc možností webu HTTP slovesa (GET, POST) a kódy (200 OK, 404 Not Found) (kód na vyžádání) JavaScript, Java applety

Jednotné rozhraní identifikace zdrojů (resources) každá zpráva obsahuje informaci o tom, kterého zdroje se týká; odpověď obsahuje reprezentaci zdroje samopopisující zprávy každá zpráva obsahuje informaci o tom, jak ji má server interpretovat (Content-Type) hypermédia každá zpráva ze serveru obsahuje dynamicky odkazy na další dostupné akce

3 úrovně RESTu úroveň 0: Plain Old XML (POX)

POST /appointmentservice HTTP/1.1 <openslotrequest date = "2010-01-04" doctor = "mjones"/> HTTP/1.1 200 OK <openslotlist> <slot start = "1400" end = "1450"> <doctor id = "mjones"/> </slot> <slot start = "1600" end = "1650"> <doctor id = "mjones"/> </slot> </openslotlist>

POST /appointmentservice HTTP/1.1 <appointmentrequest> <slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointmentrequest> HTTP/1.1 200 OK <appointment> <slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointment> HTTP/1.1 200 OK <appointmentrequestfailure> <slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> <reason>slot not available</reason> </appointmentrequestfailure>

3 úrovně RESTu úroveň 1: zdroje

POST /doctors/mjones HTTP/1.1 <openslotrequest date = "2010-01-04"/> HTTP/1.1 200 OK <openslotlist> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openslotlist>

POST /slots/1234 HTTP/1.1 <appointmentrequest> <patient id = "jsmith"/> </appointmentrequest> HTTP/1.1 200 OK <appointment> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointment>

3 úrovně RESTu úroveň 2: HTTP díky GET lze cachovat kódy umožňují např. předání umístění nového zdroje

GET /doctors/mjones/slots?date=20100104&status=open HTTP/1.1 Host: royalhope.nhs.uk HTTP/1.1 200 OK <openslotlist> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openslotlist>

POST /slots/1234 HTTP/1.1 <appointmentrequest> <patient id = "jsmith"/> </appointmentrequest> HTTP/1.1 201 Created Location: slots/1234/appointment <appointment> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointment> HTTP/1.1 409 Conflict <openslotlist> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openslotlist>

3 úrovně RESTu úroveň 3: hypermédia obsahuje informace o akcích, které jsou k dispozici umožňuje změnit vnitřní strukturu serveru beze změny klientského kódu

GET /doctors/mjones/slots?date=20100104&status=open HTTP/1.1 Host: royalhope.nhs.uk HTTP/1.1 200 OK <openslotlist> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"> <link rel = "/linkrels/slot/book" uri = "/slots/1234"/> </slot> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"> <link rel = "/linkrels/slot/book" uri = "/slots/5678"/> </slot> </openslotlist>

POST /slots/1234 HTTP/1.1 <appointmentrequest> <patient id = "jsmith"/> </appointmentrequest> HTTP/1.1 201 Created Location: http://royalhope.nhs.uk/slots/1234/appointment <appointment> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> <link rel = "/linkrels/appointment/cancel" uri = "/slots/1234/appointment"/> <link rel = "/linkrels/appointment/addtest" uri = "/slots/1234/appointment/tests"/> <link rel = "self" uri = "/slots/1234/appointment"/> <link rel = "/linkrels/appointment/changetime" uri = "/doctors/mjones/slots? date=20100104@status=open"/> <link rel = "/linkrels/appointment/updatecontactinfo" uri = "/patients/jsmith/contactinfo"/> <link rel = "/linkrels/help" uri = "/help/appointment"/> </appointment>

...jak to vypadá v praxi?

Díky za pozornost