Webservices
-
Upload
tomhaegemans -
Category
Documents
-
view
221 -
download
2
description
Transcript of Webservices
![Page 1: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/1.jpg)
WebservicesWouter Janssens & Tom Haegemans
![Page 2: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/2.jpg)
Inhoud• Inleiding
• Webservices
• SOAP
• REST
• Implementatie
• SOAP of REST?
![Page 3: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/3.jpg)
InleidingArchitecturen en probleemstelling
![Page 4: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/4.jpg)
Architecturen (views)• Business architectuur
Bedrijfsprocessen en gegevens
• Applicatie architectuurApplicaties voor ondersteuning
• Technische architectuurBeschrijft de gebruikte technologie
![Page 5: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/5.jpg)
ProbleemstellingProbleem Monolitische IT systemen zorgen voor lage
flexibiliteit
Doel Flexibiliteit voor snelle aanpassing aan business
behoeften
Middel Service Oriented Architecture (SOA)
![Page 6: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/6.jpg)
Service Oriented Architecture (SOA)• Effect op alle architecturen of views
• Splits de organisatie op in los gekoppelde services
• Cloud
![Page 7: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/7.jpg)
Services - Eigenschappen• Composeable
Andere services als bouwstenen
• DiscoverableMetadata voor post- en precondities
• GranularOndeelbaar
Gevolg: IT systeem niet omgooien bij een kleine aanpassing
![Page 8: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/8.jpg)
Stateless vs StatefulVerschil: informatie over de staat van de client
• StatelessHou geen informatie bij over de staat Voordeel: beschikbaarheid verhoogt, schaalbaarheid neemt toe Nadeel: overhead
• StatefulHou wel informatie bij over de staat Voordeel: server werkt efficiënter Nadeel: lagere beschikbaarheid, minder schaalbaar
![Page 9: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/9.jpg)
WebservicesImplementatie van een SOA op niveau van de technische architectuur
![Page 10: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/10.jpg)
WebservicesFamilie van standaarden die verschillende faciliteiten aanbieden
• DiscoveryLijst of gids met index, zoekbaar
• DescriptionFormele beschrijving door metadata
• CommunicationSet van afspraken voor communicatie
![Page 11: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/11.jpg)
Webservices - Soorten• Procedure-oriented
Berichten tussen end-points door remote procedure calls
• Navigational-orientedFocus op resources, navigeren met behulp van een klein aantal methodes
![Page 12: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/12.jpg)
SOAPVroeger: Simple Object Access Protocol, Nu: gewoon SOAP
![Page 13: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/13.jpg)
Wat is SOAP?• Specificatie voor gedistribueerde systemen
• Procedure-oriented
• Gebruik XML om structured en typed informatie uit te wisselen
• SOAP en WS-* Stack Communication: SOAP Description: WSDL Discovery: UDDI
Service
WSDL
UDDI
SOAP
![Page 14: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/14.jpg)
Communication: SOAPZorgt voor:
• Berichtenstructuur: XML
• Berichten verwerken: Processingmodel
• Berichten langs verschillende transportprotocollen
![Page 15: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/15.jpg)
Berichtenstructuur: XML
Header
Envelope
Header-block
Body
Body-block
![Page 16: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/16.jpg)
Nodes
InitialSender
Inter-mediary
UltimateReceiver
Node
Processingmodel
Binding
![Page 17: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/17.jpg)
ProcessingmodelTaken:
• Serialisatie
• Parsen van headersBijvoorbeeld voor quality of service specificaties
![Page 18: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/18.jpg)
BindingTaak:
• Doorgeven naar onderliggende laagTransportprotocol (tunnel)
OSI: applicatie of transportlaag
![Page 19: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/19.jpg)
Description: WSDLFormeel beschrijven van een service door middel van XML
• Gevolg: dynamische binding
• Twee delen: abstract en concreet Abstract: Vocabulary, Message, Interaction Concreet: Onderliggend protocol, netwerkadres, …
![Page 20: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/20.jpg)
Discovery: UDDI• Universal Description, Discovery and Integration
• Helpt bij Dynamic Binding
De locatie van een service vinden om een dynamische koppeling te maken
Service CompositionDevelopers moeten weten welke services er beschikbaar zijn om ze nadien te kunnen gebruiken
Maar: wordt in de praktijk niet veel gebruikt
![Page 21: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/21.jpg)
Business ProcessesStapje verder: hoe helpt dit nu voor meer flexibiliteit?
Als SOAP en WS-* deel uitmaakt van de infrastructuur:
1. Teken bedrijfsprocessen uit met BPMN
2. Automatiseer bedrijfsprocessen aan de hand van BPEL
BPEL: Business Process Execution LanguageZorgt voor interactie en samenwerking van services, aan de hand van hun WSDL omschrijving.
Gevolg: ontwerpen van workflows gaat veel sneller en flexibeler.
![Page 22: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/22.jpg)
RESTRepresentational state transfer
![Page 23: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/23.jpg)
Wat is REST?• Architecturale stijl voor gedistribueerde systemen
• Navigational-oriented architectuur
• Doctorale thesis Roy Fielding (2000)
• Nadruk op efficiënte communicatie van gegevens
![Page 24: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/24.jpg)
Description en discovery• Description
Geen echte richtlijnen
Indien toch nodig: WADL
• DiscoveryOverbodig gebleken
Wildgroei aan UDDI registers
Indien toch nodig: DNS
![Page 25: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/25.jpg)
Resource-based• Nadruk op resources
• Identificeren aan de hand van URI's
• Meerdere representaties mogelijk voor een resource (XML, JSON, ...)
![Page 26: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/26.jpg)
Constraints• Starten met null-stijl
• 6 beperkingen toevoegen aan null-stijl
• Afbakenen architecturale stijl
![Page 27: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/27.jpg)
Client-server• Onderscheid tussen client en server
• Client minder complex
• Mogelijk clients te maken voor verschillende platformen
• Componenten kunnen onafhankelijk van elkaar worden ontwikkeld
(Happy) Clients Server
Client-server
![Page 28: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/28.jpg)
Stateless• Server mag geen statusinformatie client bijhouden
• Elke request van client moet status voldoende omschrijven
• Gevolgen voor transparantie, betrouwbaarheid en schaalbaarheid
• Negatieve gevolgen voor netwerkefficiëntie
• Consistentieproblemen tussen client en server
Client-server - Stateless
![Page 29: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/29.jpg)
Cache• Alle responses kunnen worden opgeslagen in een cache
• Positieve invloed op netwerkefficiëntie
• Verminderde latency en betrouwbaarheid
Client-server - Stateless - Cache
![Page 30: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/30.jpg)
Uniform interfaces• Interface is "toegangspoort" om systeem te benaderen
• Verwijzen naar bepaalde resource door gebruik te maken van zijn URI
• Ondernomen actie hangt af van gebruikte HTTP methode
• Server makkelijker en overzichtelijker benaderen
Client-server - Stateless - Cache - Uniform interfaces
![Page 31: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/31.jpg)
Layered system• Client hoeft niet te weten of hij direct met server is
verbonden
• Mogelijk tussenpersonen (bv. HTTP-intermediaries)
• Verbeterde schaalbaarheid
Client-server - Stateless - Cache - Uniform interfaces - Layered system
Client Inter-mediary
Server
Waargenomen verkeer
Eigenlijk verkeer
![Page 32: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/32.jpg)
Code on demand• Server geeft extra logica door aan client
• Bv. Javascript
• Client minder complex en eenvoudiger uit te breiden
• Transparantie van het systeem neemt af
• Enige beperking dat niet verplicht is
Client-server - Stateless - Cache - Uniform interfaces - Layered system - Code on demand
LogicaLogica
Client Server
![Page 33: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/33.jpg)
RESTful webservices• Webservices gebouwd volgens beperkingen van REST
• Nadruk op resources en grote hoeveelheid requests
• Maken vaak gebruik van HTTP
• Facebook, Twitter, ...
• Beginnen ook in enterprise applicaties op te duiken
![Page 34: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/34.jpg)
VoorbeeldSimpele blog applicatie in SOAP en REST
![Page 35: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/35.jpg)
Voorbeeld SOAP
![Page 36: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/36.jpg)
Initial Page Request
![Page 37: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/37.jpg)
Data nog niet aanwezig
Initial Page Response
![Page 38: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/38.jpg)
Posts ophalen 1/2
1
2
![Page 39: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/39.jpg)
3
4
Posts ophalen 2/2
![Page 40: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/40.jpg)
Resultaat
![Page 41: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/41.jpg)
Toevoegen van een post 1/2
1
2
![Page 42: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/42.jpg)
Toevoegen van een post 2/2
34
5
![Page 43: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/43.jpg)
Resultaat
![Page 44: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/44.jpg)
Voorbeeld REST
![Page 45: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/45.jpg)
Initial Page Request
![Page 46: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/46.jpg)
Data nog niet aanwezig
Initial Page Response
![Page 47: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/47.jpg)
Posts ophalen
![Page 48: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/48.jpg)
Resultaat
![Page 49: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/49.jpg)
Toevoegen van een post
![Page 50: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/50.jpg)
Resultaat
![Page 51: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/51.jpg)
SOAP of REST?RESTafarians vs. WS-Death Star
![Page 52: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/52.jpg)
Vergelijking• Complexiteit
REST is minder complex Maar: triviale keuzes kunnen grote gevolgen hebben (vb URI-
schema)
• Koppeling SOAP & WS-* op eerste zicht beter in description en discovery Maar: gevaar voor opsplitsing tussen interface en implementatie Dus: REST beter door generische methodes
• Security SOAP: WS-Security REST: HTTP dus application firewall
• Performantie SOAP: Tunnel over HTTP REST: Kan HTTP direct gebruiken (methodes)
![Page 53: Webservices](https://reader036.fdocuments.net/reader036/viewer/2022070302/5486e3d3b4af9fca3b8b469b/html5/thumbnails/53.jpg)
WebservicesWouter Janssens & Tom Haegemans