Webové služby a XML
Obsah přednášky z
Webové služby a XML
z z
Miroslav Beneš
z z z
Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C#
Webové služby a XML
Co jsou to webové služby
Co jsou to webové služby
z
rozhraní k aplikaci dostupné prostřednictvím počítačové sítě, založené na standardních internetových technologiích
z
je-li aplikace dostupná přes síť pomocí kombinace protokolů jako HTTP, XML, SMTP, nebo Jabber, je to webová služba
z
vrstva abstrakce mezi aplikačním programem a klientem Webové služby a XML
2
3
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
z
funkčnost služby není závislá na tom, v jakém jazyce je klient nebo server implementován (Java, C++, PHP, C#, ...)
z
příklad: HTML stránky: aplikace=WWW server, klient=prohlížeč
z
další příklady: kurzovní lístky, burza, vyhledávací služby (Google), mapy, počasí Webové služby a XML
4
1
Webové služby a XML
Struktura aplikačního serveru z
aplikační program – implementuje vlastní logiku aplikace (business logic)
z
Service Listener – komunikuje s okolím prostřednictvím některého transportního protokolu (HTTP, SOAP, Jabber, ...)
z
Struktura aplikačního serveru klient
aplikační program
klient 5
Just-In-Time Integration z
z
WSDL
UDDI
publikuje popis svých služeb v registru služeb
adresář
vyhledává v registru službu podle svých požadavků, používá službu Webové služby a XML
služba rozhraní
spotřebitel služby z
6
komponenta
dynamická integrace aplikačních služeb na základě požadavků z aplikační oblasti nezávisí na platformě, ve které jsou tyto služby implementovány
poskytovatel služby z
z
Webové služby a XML
Příklad – aplikace využívající WS
Architektura webových služeb
z
Service Listener
Service Proxy – zprostředkovává dekódování požadavku, volání aplikačních funkcí, případně kódování odpovědi Webové služby a XML
z
Service Proxy
Vývojové prostředí
Java 7
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
SOAP / HTTP
aplikace Webové služby a XML
8
2
Webové služby a XML
Vrstvová architektura
Vrstvová architektura
z
z
Network z
z
z
přímá komunikace mezi aplikacemi po síti; může být použit téměř libovolný transportní protokol, např. TCP, HTTP (nejčastější), SMTP, Jabber
z
z
„balení“ dat do formátu, jemuž rozumějí všichni účastníci (serializace, marshalling) HTML (?), XML a odvozené formáty (SOAP, XML-RPC) 9
mechanismus získávání popisů služeb od poskytovatelů Universal Description, Discovery, and Integration (UDDI), Web Services Inspection Language (WS-Inspection), ebXML Registry (WS-Inspection)
Webové služby a XML
10
Formy SOAP zpráv
Simple Object Access Protocol SOAP = standardní protokol pro obalování zpráv sdílených mezi aplikacemi (obálka + sada pravidel pro reprezentaci dat v XML)
z
Remote Procedure Call (RPC) z z
Envelope Header
z
z 11
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
základ pro distribuované výpočty vzdálené volání podprogramu, předání parametrů a výsledku
Electronic Document Interchange (EDI) z
Body
Webové služby a XML
popis služby a protokolů nižší úrovně, které podporuje WSDL (Web Service Description Language), RDF (Resource Description Framework), DAML (DARPA Agent Markup Language)
Discovery z
Webové služby a XML
z
z
Packaging z
Description z
Transport z
z
základní komunikace, adresování, směrování, totéž jako síťová vrstva TCP/IP
základ pro automatizaci zpracování podnikových transakcí přenos a interpretace dokumentů Webové služby a XML
12
3
Webové služby a XML
Prostory jmen v XML (pozn.) z
z
z
z
Prostory jmen v XML
prostředek pro rozlišení jmen značek a atributů z různých zdrojů prostor jmen je identifikován URI, např. http://cs.vsb.cz/katis
wal001 <jmeno>Johnny <prijmeni>Walker
Webové služby a XML
13
Příklad výměny zpráv
14
Příklad výměny zpráv
<s:Envelope xmlns:s="http://www.w3.org/2001/06/soap-envelope">
<s:Envelope xmlns:s="http://www.w3.org/2001/06/soap-envelope">
<s:Header> <m:transaction xmlns:m="soap-transaction" s:mustUnderstand="true"> 1234
<s:Body> 12.4
<s:Body> Ostrava Webové služby a XML
Webové služby a XML
15
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
Webové služby a XML
16
4
Webové služby a XML
Příklad výměny zpráv
Implementace SOAP
<s:Envelope> xmlns:s="http://www.w3.org/2001/06/soap-envelope">
z z
<s:Body>
Dostupné pro většinu používaných jazyků Podpora vývojových prostředí z
<s:Fault> Client.Authentication Invalid Credentials <details>
z
z
Java z
z
17
Java a SOAP - klient
Zcela transparentní přístup Webové služby a XML
18
Java a SOAP - klient
import java.io.*; import java.net.*; import java.util.*; import org.apache.soap.*; import org.apache.soap.rpc.*; public class Example_client { public static void main(String[] args) throws Exception { // inicializace volání Call call = new Call(); call.setTargetObjectURI("urn:TempService"); call.setMethodName("getTemp"); call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
Webové služby a XML
Apache SOAP, JAX-RPC
.NET z
Webové služby a XML
Generování tříd obalujících zprávy Generování WSDL podle existujících tříd
19
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
// sestavení vektoru parametrů Vector params = new Vector(); params.addElement( new Parameter("city", String.class, args[1], null)); call.setParams(params); // vlastní volání služby URL url = new URL (args[0]); Response resp = call.invoke(url, "");
Webové služby a XML
20
5
Webové služby a XML
Java a SOAP - klient
PHP a SOAP - klient
// zpracování odpovědi if( resp.generatedFault()) { // nastala chyba Fault fault = resp.getFault(); System.out.println(fault.getFaultCode()); System.out.println(fault.getFaultString()); } else { // v pořádku, máme výsledky Parameter result = resp.GetReturnValue(); System.out.print(result.getValue()); System.out.println(); }
require "SoapRPC.php"; $soap = new SoapRPC(); $soap->setMethodName("getTemp"); $soap->setTargetObjectURI("urn:TempService"); $soap->addParameter( new SoapParameter("city", "Ostrava")); $res = $soap->call("http://.../server.php"); if( $soap->getFault() == "TRUE" ) die($soap->getFaultString()); echo "$result";
} } Webové služby a XML
21
PHP a SOAP - server
Webové služby a XML
22
PHP a SOAP - server
require "SoapRPCServer.php"; eval ($cmd); function getTemp($city) { return 12.4; } $srv->setMethodName($method . "Response"); $srv->resetParameter(); $srv->addParameter( new SoapParameter( "return", $vResponse, "String") ); $env = $srv->buildEnvelope(); Header("Content-type: text/xml; encoding=iso-88592"); echo $env->marshall();
$srv = new SoapRPCServer(); $method = $srv->getMethodName(); $cmd = "\$vResponse = $method("; $params = &$srv->parameterList; for( $i = 0; $i < count($params); $i++ ) { if( $i ) $cmd .= ","; $cmd .= "\"{$params[$i]}\""; } $cmd .= ");";
Webové služby a XML
23
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
Webové služby a XML
24
6
Webové služby a XML
C# a SOAP - klient
Java XML API z
<%@ WebService Language="c#" Class="MyWebService" %>
Java API for XML Processing (JAXP) z
using System; using System.Web.Services;
z [WebService(Namespace="http://server/wsdl")]
Webové služby a XML
Java API fro XML-based RPC (JAX-RPC) z
class MyWebService : WebService { [WebMethod] public string checkLogin(string login, string pass) { return "Ahoj " + login; } }
z
vzdálené volání procedur pomocí SOAP nad HTTP/HTTPS (webové služby)
SOAP with Attachments API for Java (SAAJ) z
z
základní operace s XML (analýza SAX/DOM, transformace XSLT)
manipulace se SOAP zprávami
JavaAPI for XML Registries (JAXR) z
přístup k registrům na bázi UDDI a ebXML (publikování a vyhledávání webových služeb)
25
Webové služby a XML
26
Menu
Úloha pro cvičení z
Seznam jídel v menze z z z z
z
id datum, jídlo (s, o, v), pořadí popis cena * 100, kapacita
Akce z z z
zobrazení seznamu zobrazení a editace položky zrušení položky Webové služby a XML
Datum
Jídlo
Pořadí
Popis
Cena Kč
Kapacita
1. 2003-04-10
s
1
Míchaná vajíčka na slanině, 2 rohlíky, čaj.
10,50
500
2. 2003-04-10
s
2
Jablečný závin, kakao.
12,30
400
3. 2003-04-10
o
1
Vepřová pečeně, knedlík, zelí
20,10
700
4. 2003-04-10
o
2
Rybí filé, vařené brambory.
23,80
500
5. 2003-04-10
o
3
Sojový guláš, chléb 2 ks.
11,50
600
6. 2003-04-10
v
1
Smažený sýr, hranolky.
23,10
300
7. 2003-04-10
v
2
Sýrová mísa, mléko, pečivo.
12,30
200
8. 2003-05-10
o
1
Smažené krabí tyčinky, hranolky, zeleninová obloha.
30,00
100
Vložit další položku 27
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
Webové služby a XML
28
7
Webové služby a XML
MenuItem ListMenuAction
Oprava položky menu Datum:
2003-04-10
Jídlo:
Oběd
Pořadí:
2
Popis:
Rybí filé,vařenébrambory.
* ListMenuForm
ok
listMenu. listMenu.jsp DeleteMenuAction
Cena:
2380
Kapacita:
500
SaveMenuAction
view
ReadMenuAction new MenuForm
error save
Z ap sat
viewMenu. viewMenu.jsp Webové služby a XML
29
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
ReadMenuAction edit
Webové služby a XML
editMenu. editMenu.jsp 30
8