Webservices
-
Upload
tomhaegemans -
Category
Documents
-
view
221 -
download
2
description
Transcript of Webservices
WebservicesWouter Janssens & Tom Haegemans
Inhoud• Inleiding
• Webservices
• SOAP
• REST
• Implementatie
• SOAP of REST?
InleidingArchitecturen en probleemstelling
Architecturen (views)• Business architectuur
Bedrijfsprocessen en gegevens
• Applicatie architectuurApplicaties voor ondersteuning
• Technische architectuurBeschrijft de gebruikte technologie
ProbleemstellingProbleem Monolitische IT systemen zorgen voor lage
flexibiliteit
Doel Flexibiliteit voor snelle aanpassing aan business
behoeften
Middel Service Oriented Architecture (SOA)
Service Oriented Architecture (SOA)• Effect op alle architecturen of views
• Splits de organisatie op in los gekoppelde services
• Cloud
Services - Eigenschappen• Composeable
Andere services als bouwstenen
• DiscoverableMetadata voor post- en precondities
• GranularOndeelbaar
Gevolg: IT systeem niet omgooien bij een kleine aanpassing
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
WebservicesImplementatie van een SOA op niveau van de technische architectuur
WebservicesFamilie van standaarden die verschillende faciliteiten aanbieden
• DiscoveryLijst of gids met index, zoekbaar
• DescriptionFormele beschrijving door metadata
• CommunicationSet van afspraken voor communicatie
Webservices - Soorten• Procedure-oriented
Berichten tussen end-points door remote procedure calls
• Navigational-orientedFocus op resources, navigeren met behulp van een klein aantal methodes
SOAPVroeger: Simple Object Access Protocol, Nu: gewoon SOAP
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
Communication: SOAPZorgt voor:
• Berichtenstructuur: XML
• Berichten verwerken: Processingmodel
• Berichten langs verschillende transportprotocollen
Berichtenstructuur: XML
Header
Envelope
Header-block
Body
Body-block
Nodes
InitialSender
Inter-mediary
UltimateReceiver
Node
Processingmodel
Binding
ProcessingmodelTaken:
• Serialisatie
• Parsen van headersBijvoorbeeld voor quality of service specificaties
BindingTaak:
• Doorgeven naar onderliggende laagTransportprotocol (tunnel)
OSI: applicatie of transportlaag
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, …
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
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.
RESTRepresentational state transfer
Wat is REST?• Architecturale stijl voor gedistribueerde systemen
• Navigational-oriented architectuur
• Doctorale thesis Roy Fielding (2000)
• Nadruk op efficiënte communicatie van gegevens
Description en discovery• Description
Geen echte richtlijnen
Indien toch nodig: WADL
• DiscoveryOverbodig gebleken
Wildgroei aan UDDI registers
Indien toch nodig: DNS
Resource-based• Nadruk op resources
• Identificeren aan de hand van URI's
• Meerdere representaties mogelijk voor een resource (XML, JSON, ...)
Constraints• Starten met null-stijl
• 6 beperkingen toevoegen aan null-stijl
• Afbakenen architecturale stijl
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
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
Cache• Alle responses kunnen worden opgeslagen in een cache
• Positieve invloed op netwerkefficiëntie
• Verminderde latency en betrouwbaarheid
Client-server - Stateless - Cache
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
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
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
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
VoorbeeldSimpele blog applicatie in SOAP en REST
Voorbeeld SOAP
Initial Page Request
Data nog niet aanwezig
Initial Page Response
Posts ophalen 1/2
1
2
3
4
Posts ophalen 2/2
Resultaat
Toevoegen van een post 1/2
1
2
Toevoegen van een post 2/2
34
5
Resultaat
Voorbeeld REST
Initial Page Request
Data nog niet aanwezig
Initial Page Response
Posts ophalen
Resultaat
Toevoegen van een post
Resultaat
SOAP of REST?RESTafarians vs. WS-Death Star
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)
WebservicesWouter Janssens & Tom Haegemans