Webservices

Post on 09-Dec-2014

221 views 2 download

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