Webbteknik II Föreläsning 4 Watching the river flow
Web Service XML-RPC, SOAP, WSDL, UDDI HTTP Request, Response, Headers, Cache, Persistant Connection REST Hype or the golden way?
Web Service / Webbtjänst Behov av att utbyta information mellan system Plattformsoberoende -Standard Fungera över publika och osäkra nätverk (Internet) XML + HTTP = SANT
XML-RPC 1998 Remote Procedure Call Använda XML till att också definiera metodnamn, parametrar och returvärden Enkelhet - För enkelt?
WS-* http://www.w3.org/2002/ws/ Säkerhet (WS-Security,WS-Policy) Addressering (WS-Addressing) Hantera state (WS-Resource)... (WS-DeathStar) http://www.innoq.com/soa/ws-standards/poster/innoq%20ws-standards%20poster%202007-02.pdf
WS-* Web Service Standard UDDI Finding&Web&Services& UDDI&(Universial&Descrip6on,&Discovery&and& Integra6on)& Service Registry Describing&Web&Services& WSDL&(Web&Service&Descrip6on&Language)& publish find WSDL WSDL Communicate&with&Web&Services& SOAP& Data&encoding& XML,&XML&Schema& Transport& Service Consumer SOAP messages HTTP& Service Provider
WSDL (Web Service Description Language) Vilken funktionallitet finns? Hur ansluter man? Hur anropar man? Hur tas data emot? http://www.webservicex.net/weatherforecast.asmx?wsdl
SOAP XML-applikation för att skicka meddelande mellan Producer och Consumer SOAP Request HTTP Client <Add> <a>2</a> <b>4</b> </Add> <AddResponse> <sum>6</sum> </AddResponse> Web) Service HTTP SOAP Response
SOAP Request
SOAP Response
DEMO%
Slutord om WS-* Anses för komplext av många För beroende av lösningar som inte är öppna Mycket pengar har lagts ut Används fortfarande
REST
REST Representational State Transfer En arkitektur för distribuerade hypermediasystem Roy Fielding, 2000 Architectural styles and the design of networked-based architecture http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm REST over HTTP
Men innan det... För att få en syn på REST over HTTP bör vi förstå HTTP bör vi förstå webben, Internet, TCP/IP
Vad händer? + =
TCP/IP Protokollstack för nätverkskommunikation Flera olika protokoll (och förkortningar) Applikation HTTP, DNS Transport TCP, UDP Internet IPv4, IPv6 Nätverk DSL, ISDN Grunden för all kommunikation över Internet t.ex. webben, E-post, P2P, Bittorrent, FTP, Sockets, IP-telefoni
Vad sker? 1. Hitta adressen till webbservern 2. Hitta vägen till webbservern 3. Ansluta och garantera säker transport 4. Få HTML skickad till webbläsaren?
1. Hitta adressen till webbservern 2. Hitta vägen till webbservern 3. Ansluta och garantera säker transport 4. Få HTML skickad till webbläsaren Vi gillar DNS-namn http://www.lnu.se Datorer gillar IP-adresser 194.173.221.1 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Hur hittar webbläsaren IP-adressen? Domain Name System (DNS) 13 root-servrar (topp-domäner) DNS Server Router DNS Server Default gateway DNS Root Server
1. Hitta adressen till webbservern 2. Hitta vägen till webbservern 3. Ansluta och garantera säker transport 4. Få HTML skickad till webbläsaren Router, Routingtabell Många olika vägar till samma mål IP-protokollet (TTL) Router Default gateway
1. Hitta adressen till webbservern 2. Hitta vägen till webbservern 3. Ansluta och garantera felfri transport TCP (Transport Control Protocol) 4. Få HTML skickad till webbläsaren Ansluter till portar (80, 443) 3-way handshake Kommer allt fram? UDP (User Datagram Protocol) lyssnar på port... Default gateway
1. Hitta adressen till webbservern 2. Hitta vägen till webbservern 3. Ansluta och garantera säker transport 4. Få HTML skickad till webbläsaren HTTP OK 200 HTTP GET HTML HTML
Hur kan detta fungera så bra? Router DNS Server
HTTP HTTP - protokoll för att hämta, skicka data till en webbserver Client - Server, Request - Response Ladda upp fil, tala om vilket språk vi föredrar, skickar formulärdata, hantera cachening på vilket format vill vi ha svaret, hämta bara om modifierad...
HTTP HTTP/1.0 HTTP/1.1 http://www.w3.org/protocols/rfc2616/rfc2616.html
HTTP Request HTTP verbs (methods): GET, POST, HEAD, DELETE, PUT, OPTIONS, TRACE, CONNECT http://www.w3.org/protocols/rfc2616/rfc2616-sec9.html variable=value&variable2=value2 http://blogs.plexibus.com/2009/01/15/rest-esting-with-curl/