using rest for soa - qconsf.com · using rest for soa stefan tilkov, qcon sf 2010. copyright 2010...

247
Copyright 2010 innoQ Deutschland GmbH Using REST for SOA Stefan Tilkov, QCon SF 2010

Upload: vodieu

Post on 26-Jun-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Copyright 2010 innoQ Deutschland GmbH

Using REST for SOAStefan Tilkov, QCon SF 2010

Copyright 2010 innoQ Deutschland GmbH

Stefan [email protected]

http://www.innoq.com/blog/st/@stilkov

Web Services Standards Overview

Vers

ion

3.0*

· Fe

brua

ry 2

007

This

post

er is

not

to b

e re

prod

uced

or t

rans

mitt

ed in

any

form

or f

or a

ny p

urpo

se w

ithou

t the

exp

ress

per

miss

ion

of in

noQ

Deut

schl

and

GmbH

.Co

pyrig

ht ©

inno

Q De

utsc

hlan

d Gm

bH.

All R

ight

s Res

erve

d. T

he p

oste

r may

also

con

tain

refe

renc

es to

oth

er c

ompa

ny, o

rgan

isatio

n, b

rand

and

pro

duct

nam

es.

Thes

e co

mpa

ny, o

rgan

isatio

n, b

rand

and

pro

duct

nam

es a

re u

sed

here

in fo

r ide

ntifi

catio

npur

pose

s onl

y an

d m

ay b

e th

e tr

adem

arks

of t

heir

resp

ectiv

e ow

ners

.

InteroperabilityIssues

Basic Profile1.1

WS-IFinal Specification

Basic Profile1.2

WS-IWorking Group Draft

Basic Profile2.0

WS-IWorking Group Draft

Basic Security Profile1.0

WS-IBoard Approval Draft

REL Token Profile1.0

WS-IWorking Group Draft

SAML Token Profile1.0

WS-IWorking Group Draft

Conformance Claim Attachment Mechanism

(CCAM)1.0

WS-IFinal Specification

Reliable AsynchronousMessaging Profile (RAMP)

1.0WS-I

Working Draft

Attachments Profile1.0

WS-IFinal Specification

Simple SOAPBinding Profile

1.0 · WS-IFinal Specification

Business Process ExecutionLanguage for Web Services 1.1(BPEL4WS) · 1.1 · BEA Systems, IBM,

Microsoft, SAP, Siebel SystemsOASIS-Standard

WS-Choreography ModelOverview1.0 · W3C

Working Draft

Web Service ChoreographyInterface (WSCI)

1.0 · W3CSun Microsystems, SAP, BEA Systems

and Intalio · Note

Business Process Specifications

Business Process ExecutionLanguage for Web Services 2.0

(BPEL4WS) · 2.0OASIS, BEA Systems, IBM, Microsoft,

SAP, Siebel Systems · Committee Draft

Business Process Management Language (BPML)

1.1BPMI.org

Final Draft

Web Service ChoreographyDescription Language (CDL4WS)

1.0W3C

Candidate Recommendation

XML Process Definition Language (XPDL)

2.0Final

WS-Policy1.5

W3CWorking Draft

WS-PolicyAssertions1.1

BEA Systems, IBM, Microsoft, SAP

Public Draft

Metadata Specifications

WS-PolicyAttachment1.2

W3CW3C Member Submission

WS-DiscoveryMicrosoft, BEA Systems, Canon,

Intel and webMethodsDraft

WS-MetadataExchange1.1

BEA Systems, Computer Associates, IBM, Microsoft, SAP, Sun

Microsystems and webMethodsPublic Draft

Universal Description,Discovery and Integration

(UDDI)3.0.2

OASISOASIS-Standard

Web Service DescriptionLanguage 2.0 SOAP Binding

2.0W3C · Working Draft

Web Service Description Language 2.0 Core

2.0W3C

Candidate Recommendation

Web Service DescriptionLanguage 1.1

1.1W3CNote

WS-Security1.1

OASISOASIS-Standard

WS-SecurityPolicy1.1

IBM, Microsoft, RSA Security, VeriSign

Public Draft

Security Specifications

WS-Security: SOAP Message Security

1.1OASIS

Public Review Draft

WS-Security: Username Token Profile

1.1OASIS

Public Review Draft

WS-Security:Kerberos Binding

1.0Microsoft, IBM, OASIS

Working Draft

WS-Federation1.0

IBM, Microsoft, BEA Systems, RSA Security, and VeriSign

Initial Draft

WS-Security: SAML Token Profile

1.1OASIS

Public Review Draft

WS-TrustBEA Systems, Computer Associates,

IBM, Layer 7 Technologies, Microsoft,Netegrity, Oblix, OpenNetwork, Ping

Identity Corp., Reactivity, RSASecurity, VeriSign and Westbridge

Technology · Initial Draft

WS-SecureConversationBEA Systems, Computer Associates,

IBM, Layer 7 Technologies, Microsoft,Netegrity, Oblix, OpenNetwork, Ping

Identity Corp., Reactivity, RSASecurity, VeriSign and Westbridge

Technology · Public Draft

WS-Security: X.509Certificate Token Profile

1.1OASIS

Public Review Draft

WS-ReliableMessaging1.1

OASISCommittee Draft

Reliability Specifications

WS-Reliable Messaging Policy Assertion (WS-RM Policy)

1.1OASIS

Committee Draft

WS-Reliability1.1

OASISOASIS-Standard

WS-Coordination1.1

OASISWorking Draft

WS-Business Activity1.1

OASISWorking Draft

WS-Atomic Transaction1.1

OASISCommittee Draft

WS-Composite ApplicationFramework (WS-CAF)

1.0 · ArjunaTechnologies, Fujitsu, IONA, Oracleand Sun Microsyst. · Committee Specification

WS-Context (WS-CTX)1.0 · Arjuna Technologies, Fujitsu,

IONA, Oracle and SunMicrosystems · Committee Draft

TransactionSpecifications

ResourceSpecifications

Management Using Web Services (WSDM-MUWS)

1.0OASIS

OASIS-Standard

Management Of Web Services (WSDM-MOWS)

1.0OASIS

OASIS-Standard

Management Specifications

WS-ManagementAMD, Dell, Intel, Microsoft and Sun

MicrosystemsPublished Specification

Service Modeling LanguageIBM, BEA, BMC, Cisco,

Dell, HP, Intel, Microsoft, SunDraft Specification

Web Services for Remote Portlets (WSRP)

2.0OASIS

Committee Draft

PresentationSpecifications

Web Services Resource Framework (WSRF)

1.2 · OASIS · OASIS-Standard

WS-BaseFaults (WSRF)1.2

OASISWorking Draft

WS-ServiceGroup (WSRF)1.2

OASISWorking Draft

WS-ResourceProperties1.2

OASISWorking Draft

WS-ResourceLifetime1.2

OASISWorking Draft

WS-TransferW3C

W3C Member Submission

Resource RepresentationSOAP Header Block (RRSHB)

W3C · Recommendation

WS-Coordination Framework (WS-CF)

1.0 · ArjunaTechnologies, Fujitsu, IONA, Oracleand Sun Microsystems · Committee Draft

WS-Transaction Management (WS-TXM)

1.0 · ArjunaTechnologies, Fujitsu, IONA, Oracleand Sun Microsystems · Committee Draft

innoQ Deutschland GmbH innoQ Schweiz GmbHHalskestraße 17 Gewerbestrasse 11D-40880 Ratingen CH-6330 ChamPhone +49 2102 77162-100 Phone +41 41 743 [email protected] · www.innoq.com

SOAP Message Transmission Optimization

Mechanism (MTOM)1.0 · W3C

Recommendation

SOAP1.2

W3CRecommendation

SOAP1.1

W3CNote

WS-Addressing – Core1.0

W3CRecommendation

WS-EventingW3C

Public Draft

WS-Addressing – WSDLBinding

1.0W3C

Candidate Recommendation

WS-Addressing – SOAP Binding

1.0W3C

Recommendation

WS-EnumerationSystinet, Microsoft, Sonic Software,

BEA Systems and Computer Associates

Public Draft

WS-Notification1.3

OASISOASIS-Standard

WS-BaseNotification1.3

OASISOASIS-Standard

WS-Topics1.3

OASISOASIS-Standard

WS-BrokeredNotification1.3

OASISOASIS-Standard

XML 1.11.1

W3CRecommendation

XML 1.01.0

W3CRecommendation

Namespaces in XML1.1

W3CRecommendation

XML Information Set1.0

W3CRecommendation

XML Schema1.1

W3CWorking Draft

XML binary Optimized Packaging (XOP)

1.0W3C

Recommendation

Describing Media Content ofBinary Data in XML (DMCBDX)

W3CNote

XML Specifications

Messaging Specifications SOAP

*HINWEIS: Dies ist eineim Informationsgehalt reduzierte Version des WS-Standards-Posters voninnoQ. Sie finden die Vollversion zum Downloadim PDF-Format unter:www.innoq.com/resources/ws-standards-poster/.Dort können Sie auch dasausgedruckte Poster imDIN A0 Format bestellen.

Copyright 2010 innoQ Deutschland GmbH

REST

Copyright 2010 innoQ Deutschland GmbH

identificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

The REST Uniform Interface

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interface

http://example.com/orders?year=2008

http://example.com/customers/1234

http://example.com/orders/2007/10/776654

http://example.com/products/4554

http://example.com/processes/sal-increase-234

identificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interface

GET /customers/1234Host: example.comAccept: application/vnd.mycompany.customer+xml

<customer>...</customer>

identificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interface

GET /customers/1234Host: example.comAccept: application/vnd.mycompany.customer+xml

<customer>...</customer>

GET /customers/1234Host: example.comAccept: text/x-vcard

begin:vcard...end:vcard

identificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interface

<order self='http://example.com/orders/3321'> <item> <amount>23</amount> <product ref='http://example.com/products/4554' /> </item> <customer ref='http://example.com/customers/1234' /> <link rel='items' ref='http://example.com/orders/3321/items' /></order>

identificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interface

<order self='http://example.org/0E6C2BC1094C'> <item> <amount>23</amount> <product ref='http://amazon.com/products/A31138B3' /> </item> <customer ref='http://example.net/4E8F-891D' /> <link rel='items' ref='http://example.com/EFDBE4A38931' /></order>

identificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interface

<order self='http://example.org/0E6C2BC1094C'> <item> <amount>23</amount> <product ref='http://amazon.com/products/A31138B3' /> </item> <customer ref='http://example.net/4E8F-891D' /> <link rel='items' ref='http://example.com/EFDBE4A38931' /></order>

identificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Stop WorryingAbout URI Design

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

GET /service/customers/1234 HTTP 1.1Host: www.example.comUser-Agent: XYZ 1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Fri, 02 Oct 2009 16:47:31 GMTIf-None-Match: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=60

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

GET /service/customers/1234 HTTP 1.1Host: www.example.comUser-Agent: XYZ 1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Fri, 02 Oct 2009 16:47:31 GMTIf-None-Match: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=60

HTTP/1.1 200 OKDate: Sun, 04 Oct 2009 19:36:25 GMTServer: Apache/2.2.11 (Debian)Last-Modified: Fri, 02 Oct 2009 16:47:31 GMTEtag: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=300Accept-Ranges: bytesVary: Accept-EncodingContent-Encoding: gzipContent-Length: 7160Keep-Alive: timeout=15, max=91Connection: Keep-AliveContent-Type: application/xml

<?xml version=‘1.0’ encoding=‘utf-8’ ?>...

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

GET /service/customers/1234 HTTP 1.1Host: www.example.comUser-Agent: XYZ 1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Fri, 02 Oct 2009 16:47:31 GMTIf-None-Match: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=60

HTTP/1.1 200 OKDate: Sun, 04 Oct 2009 19:36:25 GMTServer: Apache/2.2.11 (Debian)Last-Modified: Fri, 02 Oct 2009 16:47:31 GMTEtag: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=300Accept-Ranges: bytesVary: Accept-EncodingContent-Encoding: gzipContent-Length: 7160Keep-Alive: timeout=15, max=91Connection: Keep-AliveContent-Type: application/xml

<?xml version=‘1.0’ encoding=‘utf-8’ ?>...

StandardMethod

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

GET /service/customers/1234 HTTP 1.1Host: www.example.comUser-Agent: XYZ 1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Fri, 02 Oct 2009 16:47:31 GMTIf-None-Match: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=60

HTTP/1.1 200 OKDate: Sun, 04 Oct 2009 19:36:25 GMTServer: Apache/2.2.11 (Debian)Last-Modified: Fri, 02 Oct 2009 16:47:31 GMTEtag: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=300Accept-Ranges: bytesVary: Accept-EncodingContent-Encoding: gzipContent-Length: 7160Keep-Alive: timeout=15, max=91Connection: Keep-AliveContent-Type: application/xml

<?xml version=‘1.0’ encoding=‘utf-8’ ?>...

StandardMethod

Media Type

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

GET /service/customers/1234 HTTP 1.1Host: www.example.comUser-Agent: XYZ 1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Fri, 02 Oct 2009 16:47:31 GMTIf-None-Match: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=60

HTTP/1.1 200 OKDate: Sun, 04 Oct 2009 19:36:25 GMTServer: Apache/2.2.11 (Debian)Last-Modified: Fri, 02 Oct 2009 16:47:31 GMTEtag: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=300Accept-Ranges: bytesVary: Accept-EncodingContent-Encoding: gzipContent-Length: 7160Keep-Alive: timeout=15, max=91Connection: Keep-AliveContent-Type: application/xml

<?xml version=‘1.0’ encoding=‘utf-8’ ?>...

StandardMethod

Media Type

Data

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

GET /service/customers/1234 HTTP 1.1Host: www.example.comUser-Agent: XYZ 1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Fri, 02 Oct 2009 16:47:31 GMTIf-None-Match: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=60

HTTP/1.1 200 OKDate: Sun, 04 Oct 2009 19:36:25 GMTServer: Apache/2.2.11 (Debian)Last-Modified: Fri, 02 Oct 2009 16:47:31 GMTEtag: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=300Accept-Ranges: bytesVary: Accept-EncodingContent-Encoding: gzipContent-Length: 7160Keep-Alive: timeout=15, max=91Connection: Keep-AliveContent-Type: application/xml

<?xml version=‘1.0’ encoding=‘utf-8’ ?>...

StandardMethod

Media Type

Data

Control Data

Copyright 2010 innoQ Deutschland GmbH

The REST Uniform Interfaceidentificationof resources

resource manipulation through representations

hypermedia as the engine of application state

self-descriptive messages

GET /service/customers/1234 HTTP 1.1Host: www.example.comUser-Agent: XYZ 1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Fri, 02 Oct 2009 16:47:31 GMTIf-None-Match: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=60

HTTP/1.1 200 OKDate: Sun, 04 Oct 2009 19:36:25 GMTServer: Apache/2.2.11 (Debian)Last-Modified: Fri, 02 Oct 2009 16:47:31 GMTEtag: "600028c-59fb-474f6852c9dab"Cache-Control: max-age=300Accept-Ranges: bytesVary: Accept-EncodingContent-Encoding: gzipContent-Length: 7160Keep-Alive: timeout=15, max=91Connection: Keep-AliveContent-Type: application/xml

<?xml version=‘1.0’ encoding=‘utf-8’ ?>...

StandardMethod

Media Type

Data

Control DataVisibility

Copyright 2010 innoQ Deutschland GmbH

getOrderDetails()

updateQuote()

cancelSubscription()

findMatchingBid()

initiateProcess()

submitApplicationData()

listAuctions()

getUsers()

Copyright 2010 innoQ Deutschland GmbH

getOrderDetails()

updateQuote() cancelSubscription()

findMatchingBid()

initiateProcess()

submitApplicationData()

listAuctions()

getUsers()

Copyright 2010 innoQ Deutschland GmbH

getOrderDetails()

updateQuote() cancelSubscription()

findMatchingBid()

initiateProcess()

submitApplicationData()

listAuctions()

getUsers()

Copyright 2010 innoQ Deutschland GmbH

getOrderDetails()

updateQuote() cancelSubscription()

findMatchingBid()

initiateProcess()

submitApplicationData()

listAuctions()

getUsers()

GET

PUT

POST

DELETE

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Caches

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Caches

Proxies

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Caches

Proxies

Google, Yahoo!, MSN

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Caches

Proxies

Google, Yahoo!, MSN

Anything that knows your app

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Caches

Proxies

Google, Yahoo!, MSN

Anything that knows your app

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

generic

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Caches

Proxies

Google, Yahoo!, MSN

Anything that knows your app

Copyright 2010 innoQ Deutschland GmbH

interface Resource {     Resource(URI u)     Response get()     Response post(Request r)     Response put(Request r)     Response delete()}

generic

specific

class CustomerCollection : Resource {     ...     Response post(Request r) {          id = createCustomer(r)          return new Response(201, r) }     ...}

Any HTTP client(Firefox, IE, curl, wget)

Any HTTP server

Caches

Proxies

Google, Yahoo!, MSN

Anything that knows your app

Copyright 2010 innoQ Deutschland GmbH

Mapping Examples

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free

rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>

performTariffCalculation(Data) →POST /contracts↵ Data←Location: http://.../contracts/4711→GET /contracts/4711/tariff←Result

shipOrder(ID) →PUT /orders/0815/status↵ <status>shipped</status>

shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711

Copyright 2010 innoQ Deutschland GmbH

SOA

Copyright 2010 innoQ Deutschland GmbH

Well-known architectural principles, applied at different

scale

Copyright 2010 innoQ Deutschland GmbH

http://soa-manifesto.org/

Copyright 2010 innoQ Deutschland GmbH

Through our work we have come to prioritize:

Business value over technical strategy Strategic goals over project-specific benefits

Intrinsic interoperability over custom integration Shared services over specific-purpose implementations

Flexibility over optimization Evolutionary refinement over pursuit of initial perfection

That is, while we value the items on the right, we value the items on the left more.

Copyright 2010 innoQ Deutschland GmbH

Copyright 2010 innoQ Deutschland GmbH

“Unlike the Agile manifesto however, the SOA manifesto is nothing more than snake oil to give the vendor community a thin veneer of respectability atop their increasing bureaucracy, deteriorating levels of innovation, and increasingly painful pricing models.”

– Jim Webber

http://jim.webber.name/2009/10/24/95bf2681-9a7a-4f94-94d6-2156a3a46411.aspx

Copyright 2010 innoQ Deutschland GmbH

Lesson Learned:

Copyright 2010 innoQ Deutschland GmbH

Don’t write manifestos …

Copyright 2010 innoQ Deutschland GmbH

… unless you look like this

Copyright 2010 innoQ Deutschland GmbH

… or this

Copyright 2010 innoQ Deutschland GmbH

Bad Stuff

Copyright 2010 innoQ Deutschland GmbH

Good Stuff

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Loosely coupled modules

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Loosely coupled modules

Localized data

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Loosely coupled modules

Localized data

Single implementation

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Loosely coupled modules

Localized data

Single implementation

Flexibility

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Loosely coupled modules

Localized data

Single implementation

Flexibility

Early interoperability

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Loosely coupled modules

Localized data

Single implementation

Flexibility

Early interoperability

Reliance on standards

Copyright 2010 innoQ Deutschland GmbH

Monoliths

Redundant data

Redundant logic

Resistance to change

Late integration

Vendor dependency

Bad

Loosely coupled modules

Localized data

Single implementation

Flexibility

Early interoperability

Reliance on standards

Good

Copyright 2010 innoQ Deutschland GmbH

RESTful SOA?

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols

Standard formats

Library and tool support

Mature and useful intermediaries

Support for loose coupling

Wide availability and adoption

Well-defined architectural model

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols

Standard formats

Library and tool support

Mature and useful intermediaries

Support for loose coupling

Wide availability and adoption

Well-defined architectural model

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols

Standard formats

Library and tool support

Mature and useful intermediaries

Support for loose coupling

Wide availability and adoption

Well-defined architectural model

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols

Standard formats

Library and tool support

Mature and useful intermediaries

Support for loose coupling

Wide availability and adoption

Well-defined architectural model

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols

Standard formats

Library and tool support

Mature and useful intermediaries

Support for loose coupling

Wide availability and adoption

Well-defined architectural model

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols

Standard formats

Library and tool support

Mature and useful intermediaries

Support for loose coupling

Wide availability and adoption

Well-defined architectural model

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols

Standard formats

Library and tool support

Mature and useful intermediaries

Support for loose coupling

Wide availability and adoption

Well-defined architectural model

Copyright 2010 innoQ Deutschland GmbH

The Web & SOA

Standard protocols ✔

Standard formats ✔

Library and tool support ✔

Mature and useful intermediaries ✔

Support for loose coupling ✔

Wide availability and adoption ✔

Well-defined architectural model ✔

Copyright 2010 innoQ Deutschland GmbH

But what about ...

Copyright 2010 innoQ Deutschland GmbH

“Enterprisey” Stuff?

Copyright 2010 innoQ Deutschland GmbH

Encapsulation

Copyright 2010 innoQ Deutschland GmbH

Data

Data Access

Business Rules

Service Logic

Service Interface

Copyright 2010 innoQ Deutschland GmbH

Data

Data Access

Business Rules

Service Logic

Service Interface

WSDLSOAP WS-* XML

Operations

Parameters

Messages

Copyright 2010 innoQ Deutschland GmbH

Data

Data Access

Business Rules

Service Logic

Service Interface

WSDLSOAP WS-* XML

Operations

Parameters

Messages

HTTPJSON XML

Resources

Hypermedia

Representations

Copyright 2010 innoQ Deutschland GmbH

Transactions

Copyright 2010 innoQ Deutschland GmbH

RESTful Service

Interface

Copyright 2010 innoQ Deutschland GmbH

RESTful Service

InterfaceImplementation

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

RESTful Service

Interface

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

RESTful Service

InterfaceImplementation

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

DB ARESTful Service

InterfaceImplementation

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

DB ARESTful Service

InterfaceImplementation

DB B

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

DB ARESTful Service

InterfaceImplementation

DB B

MQ

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

DB ARESTful Service

InterfaceImplementation

DB B

MQ

Distrib Tx

Copyright 2010 innoQ Deutschland GmbH

DBRESTful Service

InterfaceImplementation

Local Tx

DB ARESTful Service

InterfaceImplementation

DB B

MQ

Distrib Tx

Tx across services

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

create new Tx resource →POST /transactions←Location: http://.../transactions/4711<status>in progress</status>

augment state →POST /transactions/4711 ↵ ...data...

get state →GET /transactions/4711←... data ...↵<link rel=‘status’>in progress</link>

commit →PUT /transactions/4711/status↵ <status>committed</status>

Copyright 2010 innoQ Deutschland GmbH

Stateful Communication

Copyright 2010 innoQ Deutschland GmbH

Server

Client 1

Client 2State Client 1

State Client 2

Server State

R1R2

Rn

Representation

R1

R2

Turn session state …

Copyright 2010 innoQ Deutschland GmbH

Server

Client 1

C1 C1

Client 2

C2

State Client 1

State Client 2

Server State

Representation

R1 R2

RnC2

C2

C2

C1C1

R2

R1

… into client or resource state

Copyright 2010 innoQ Deutschland GmbH

Reliable Messaging

Copyright 2010 innoQ Deutschland GmbH

Client Server

Copyright 2010 innoQ Deutschland GmbH

ServerConsumer

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

Success/Error

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

Success/Error

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

Success/Error

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

?

Success/Error

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

?

Success/Error

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

?

Success/Error

IdempotentRetry

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

?

Success/Error

IdempotentRetry

GET, PUT, DELETE

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

?

Success/Error

IdempotentRetry

GET, PUT, DELETE

202 Accepted

Copyright 2010 innoQ Deutschland GmbH

Consumer Provider

?

Success/Error

IdempotentRetry

AsyncAccepted

GET, PUT, DELETE

202 Accepted

Copyright 2010 innoQ Deutschland GmbH

Notifications

Copyright 2010 innoQ Deutschland GmbH

Call Stack

Copyright 2010 innoQ Deutschland GmbH

Process

Call Stack

Copyright 2010 innoQ Deutschland GmbH

Process

Call Stack

Assumed Success Probability: 99.9%

Copyright 2010 innoQ Deutschland GmbH

Distributed Call Stack

Copyright 2010 innoQ Deutschland GmbH

Distributed Call Stack

Assumed Success Probability: 99.6%

Copyright 2010 innoQ Deutschland GmbH

Distributed Call Stack

Assumed Success Probability: 99.6%

Copyright 2010 innoQ Deutschland GmbH

Distributed Call Stack

Assumed Success Probability: 99.6%98%?

Copyright 2010 innoQ Deutschland GmbH

Distributed Call Stack

Assumed Success Probability: 99.6%98%?90%?

Copyright 2010 innoQ Deutschland GmbH

Order Management

Copyright 2010 innoQ Deutschland GmbH

Order Management

Orders

Copyright 2010 innoQ Deutschland GmbH

Order Management

SubmitOrder

Orders

Copyright 2010 innoQ Deutschland GmbH

Order Management

SubmitOrder

Orders

CustomerManagement

Customers

Copyright 2010 innoQ Deutschland GmbH

Order Management

GET CustomerXYZ

SubmitOrder

Orders

CustomerManagement

Customers

Copyright 2010 innoQ Deutschland GmbH

Order Management

GET CustomerXYZ

SubmitOrder

Orders

CustomerManagement

CustomersCustomers

Copyright 2010 innoQ Deutschland GmbH

<CustomerChange>

Order Management

GET CustomerXYZ

SubmitOrder

Orders

CustomerManagement

CustomersCustomers

Copyright 2010 innoQ Deutschland GmbH

<CustomerChange>

Order Management

GET CustomerXYZ

SubmitOrder

Orders

CustomerManagement

CustomersCustomers

Copyright 2010 innoQ Deutschland GmbH

<CustomerChange>

Order Management

GET CustomerXYZ

SubmitOrder

Orders

CustomerManagement

CustomersCustomers

Feed-based notification

Copyright 2010 innoQ Deutschland GmbH

Atom Model

Feed Entry*0

idtitle

updated

idtitle

updated

Content

InlineXHTMLInlineTextOutOfLineResource InlineOther

Category*

Copyright 2010 innoQ Deutschland GmbH

Security

Copyright 2010 innoQ Deutschland GmbH

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

Copyright 2010 innoQ Deutschland GmbH

Message-based

encrypt/sign individual messagesindefinite protectionSlow, inefficient, scarcely usedend-to-endpersistent

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

Copyright 2010 innoQ Deutschland GmbH

Message-based

encrypt/sign individual messagesindefinite protectionSlow, inefficient, scarcely usedend-to-endpersistent

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

SSL

Copyright 2010 innoQ Deutschland GmbH

Message-based

encrypt/sign individual messagesindefinite protectionSlow, inefficient, scarcely usedend-to-endpersistent

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

SSLHTTPS

Copyright 2010 innoQ Deutschland GmbH

Message-based

encrypt/sign individual messagesindefinite protectionSlow, inefficient, scarcely usedend-to-endpersistent

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

SSLHTTPSREST

Copyright 2010 innoQ Deutschland GmbH

Message-based

encrypt/sign individual messagesindefinite protectionSlow, inefficient, scarcely usedend-to-endpersistent

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

SSLHTTPSREST

WSS

Copyright 2010 innoQ Deutschland GmbH

Message-based

encrypt/sign individual messagesindefinite protectionSlow, inefficient, scarcely usedend-to-endpersistent

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

SSLHTTPSREST

WSSXML

Copyright 2010 innoQ Deutschland GmbH

Message-based

encrypt/sign individual messagesindefinite protectionSlow, inefficient, scarcely usedend-to-endpersistent

Transport-based

encrypt communication channelprotection while in transitfast, efficient, wide-spreadnot end-to-endnot persistent

SSLHTTPSREST

WSSXMLWS-*

Copyright 2010 innoQ Deutschland GmbH

HTTP Security

Copyright 2010 innoQ Deutschland GmbH

HTTP Security

Extensible HTTP Authentication Mechanism

Copyright 2010 innoQ Deutschland GmbH

HTTP Security

Extensible HTTP Authentication Mechanism

HTTP + SSL + Basic Auth

Copyright 2010 innoQ Deutschland GmbH

HTTP Security

Extensible HTTP Authentication Mechanism

HTTP + SSL + Basic Auth

OpenID

Copyright 2010 innoQ Deutschland GmbH

HTTP Security

Extensible HTTP Authentication Mechanism

HTTP + SSL + Basic Auth

OpenID

OAuth

Copyright 2010 innoQ Deutschland GmbH

HTTP Security

Extensible HTTP Authentication Mechanism

HTTP + SSL + Basic Auth

OpenID

OAuth

HMAC

Copyright 2010 innoQ Deutschland GmbH

Mixing RESTful HTTP w/ WS-*

Copyright 2010 innoQ Deutschland GmbH

Disclaimer first

Copyright 2010 innoQ Deutschland GmbH

set of problems

Copyright 2010 innoQ Deutschland GmbH

RESTful HTTP

set of problems

Copyright 2010 innoQ Deutschland GmbH

RESTful HTTP

set of problems

MoM

Copyright 2010 innoQ Deutschland GmbH

RESTful HTTP

set of problems

MoM

RMI/DCOM/CORBA

Copyright 2010 innoQ Deutschland GmbH

RESTful HTTP

set of problems

MoM

RMI/DCOM/CORBA

Spaces

Copyright 2010 innoQ Deutschland GmbH

RESTful HTTP

set of problems

MoM

RMI/DCOM/CORBA

SpacesActors

Copyright 2010 innoQ Deutschland GmbH

RESTful HTTP

set of problems

MoM

RMI/DCOM/CORBA

SpacesActors

Copyright 2010 innoQ Deutschland GmbH

RESTful HTTP

set of problems

MoM

RMI/DCOM/CORBA

SOAP/WSDL

SpacesActors

Copyright 2010 innoQ Deutschland GmbH

The SOAP/WSDL Problem

Copyright 2010 innoQ Deutschland GmbH

The SOAP/WSDL Problem

Each application is different

Copyright 2010 innoQ Deutschland GmbH

The SOAP/WSDL Problem

Each application is different

Each application requires its own protocol

Copyright 2010 innoQ Deutschland GmbH

The SOAP/WSDL Problem

Each application is different

Each application requires its own protocol

Need to learn a new API every single time

Copyright 2010 innoQ Deutschland GmbH

The SOAP/WSDL Problem

Each application is different

Each application requires its own protocol

Need to learn a new API every single time

WSDL as formal approach for syntax only

Copyright 2010 innoQ Deutschland GmbH

The SOAP/WSDL Problem

Each application is different

Each application requires its own protocol

Need to learn a new API every single time

WSDL as formal approach for syntax only

Separation of application and metadata

Copyright 2010 innoQ Deutschland GmbH

XML Schema

Anatomy of a WSDL File

Message Definitions

Address Info

Operation Names, Input, Output

Meaningless Legacy

Copyright 2010 innoQ Deutschland GmbH

XML Schema

Anatomy of a WSDL File

Message Definitions

Address Info

Operation Names, Input, Output

Meaningless Legacy

80%

Copyright 2010 innoQ Deutschland GmbH

XML Schema

Anatomy of a WSDL File

Message Definitions

Address Info

Operation Names, Input, Output

Meaningless Legacy

80%

2%

Copyright 2010 innoQ Deutschland GmbH

XML Schema

Anatomy of a WSDL File

Message Definitions

Address Info

Operation Names, Input, Output

Meaningless Legacy

80%

2%

5%

Copyright 2010 innoQ Deutschland GmbH

XML Schema

Anatomy of a WSDL File

Message Definitions

Address Info

Operation Names, Input, Output

Meaningless Legacy

80%

2%

5%

10%

Copyright 2010 innoQ Deutschland GmbH

XML Schema

Anatomy of a WSDL File

Message Definitions

Address Info

Operation Names, Input, Output

Meaningless Legacy

80%

2%

3%

5%

10%

Copyright 2010 innoQ Deutschland GmbH

SOAP/WSDL

XML Schema

Message Definitions

Address Info

Operation Names, Input,

Meaningless Legacy

RESTful HTTP

Copyright 2010 innoQ Deutschland GmbH

SOAP/WSDL

XML Schema

Message Definitions

Address Info

Operation Names, Input,

Meaningless Legacy

RESTful HTTPXML Schema

(If you care for it)

Copyright 2010 innoQ Deutschland GmbH

SOAP/WSDL

XML Schema

Message Definitions

Address Info

Operation Names, Input,

Meaningless Legacy

RESTful HTTP

GET, PUT, POST, DELETE

XML Schema(If you care for it)

Copyright 2010 innoQ Deutschland GmbH

SOAP/WSDL

XML Schema

Message Definitions

Address Info

Operation Names, Input,

Meaningless Legacy

RESTful HTTP

URIs

GET, PUT, POST, DELETE

XML Schema(If you care for it)

Copyright 2010 innoQ Deutschland GmbH

SOAP/WSDL

XML Schema

Message Definitions

Address Info

Operation Names, Input,

Meaningless Legacy

RESTful HTTP

URIs

GET, PUT, POST, DELETE

“Informal” Documentation(Word, PDF, HTML, ...)

XML Schema(If you care for it)

Copyright 2010 innoQ Deutschland GmbH

SOAP/WSDL

XML Schema

Message Definitions

Address Info

Operation Names, Input,

Meaningless Legacy

RESTful HTTP

URIs

GET, PUT, POST, DELETE

“Informal” Documentation(Word, PDF, HTML, ...)

“Informal” Documentation(Word, PDF, HTML, ...)

XML Schema(If you care for it)

Copyright 2010 innoQ Deutschland GmbH

SOAP/WSDL

XML Schema

Message Definitions

Address Info

Operation Names, Input,

Meaningless Legacy

RESTful HTTP

URIs

GET, PUT, POST, DELETE

“Informal” Documentation(Word, PDF, HTML, ...)

“Informal” Documentation(Word, PDF, HTML, ...)

XML Schema(If you care for it)

Hypermedia

Copyright 2010 innoQ Deutschland GmbH

http://example.com/someService

Copyright 2010 innoQ Deutschland GmbH

SOAP HTTP “Endpoint”

http://example.com/someService

Copyright 2010 innoQ Deutschland GmbH

SOAP HTTP “Endpoint”

http://example.com/someService

Resource

Copyright 2010 innoQ Deutschland GmbH

Order

Shipment

Fulfilment

Customer

Copyright 2010 innoQ Deutschland GmbH

Order

Shipment

Fulfilment

Customer

Resource

Copyright 2010 innoQ Deutschland GmbH

Order

Shipment

Fulfilment

Customer

Resource

Copyright 2010 innoQ Deutschland GmbH

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Copyright 2010 innoQ Deutschland GmbH

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Copyright 2010 innoQ Deutschland GmbH

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Order Management

Documentation

Copyright 2010 innoQ Deutschland GmbH

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Order Management

Documentation

Copyright 2010 innoQ Deutschland GmbH

Resources All The Way Down

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Order Management

Documentation

Copyright 2010 innoQ Deutschland GmbH

Resources All The Way Down

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Order Management

Documentation

Copyright 2010 innoQ Deutschland GmbH

Resources All The Way Down

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Order Management

Documentation

Copyright 2010 innoQ Deutschland GmbH

Resources All The Way Down

Order

Shipment

Fulfilment

Customer

Resource

ProfileEntry

SelfServiceUI

Order Management

Documentation

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Complex

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Complex

Heavyweight

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Complex

Heavyweight

Managed

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Complex

Heavyweight

Managed

Straightforward

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Complex

Heavyweight

Managed

Straightforward

Simple

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Complex

Heavyweight

Managed

Straightforward

Simple

Lightweight

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Enterprise-compliant

Complex

Heavyweight

Managed

Straightforward

Simple

Lightweight

Integrated

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

SOAP

Enterprise-compliant

Complex

Heavyweight

Managed

Straightforward

Simple

Lightweight

Integrated

Copyright 2010 innoQ Deutschland GmbH

JDBCEJB 1.x

Plain HTTPSOAP

Enterprise-compliant

Complex

Heavyweight

Managed

Straightforward

Simple

Lightweight

Integrated

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy Access

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional API

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centric

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centricSecured messages

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centricSecured messagesPolitically motivated

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centricSecured messagesPolitically motivated

Web-related

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centricSecured messagesPolitically motivated

Web-related(Meta-)Data-centric

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centricSecured messagesPolitically motivated

Web-related(Meta-)Data-centricDocument-oriented

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centricSecured messagesPolitically motivated

Web-related(Meta-)Data-centricDocument-orientedInteroperable

Copyright 2010 innoQ Deutschland GmbH

Plain HTTP

SOAP Legacy AccessTransactional APIProcessing-centricSecured messagesPolitically motivated

Web-related(Meta-)Data-centricDocument-orientedInteroperableScalable

Copyright 2010 innoQ Deutschland GmbH

Steps for introducing REST to a SOA Enterprise

Copyright 2010 innoQ Deutschland GmbH

#0: Convince Management

Copyright 2010 innoQ Deutschland GmbH

Copyright 2010 innoQ Deutschland GmbH

Copyright 2010 innoQ Deutschland GmbH

Copyright 2010 innoQ Deutschland GmbH

Copyright 2010 innoQ Deutschland GmbH

“My Internet is bigger than your enterprise.”

Paraphrasing Dare Obasanjo,see http://tinyurl.com/dare-enterprise

Copyright 2010 innoQ Deutschland GmbH

Copyright 2010 innoQ Deutschland GmbH

VersicherungX

Copyright 2010 innoQ Deutschland GmbH

#1: Ensure your Web apps are RESTful

Copyright 2010 innoQ Deutschland GmbH

#2: Expose machine-readable information

via HTTP GET

Copyright 2010 innoQ Deutschland GmbH

“I do think the REST-afarians are missing an opportunity by not driving home the secret sauce that is HTTP GET. […] GET is one

of the most optimized pieces of distributed systems plumbing in the world. It's an absolute/objective slam dunk. No arguing/evangelism needed IMO. GET is

the classic ‘the first bag is free’ kind of feature a platform builder dreams about.”

Copyright 2010 innoQ Deutschland GmbH

Don Box, Co-inventor of SOAP

“I do think the REST-afarians are missing an opportunity by not driving home the secret sauce that is HTTP GET. […] GET is one

of the most optimized pieces of distributed systems plumbing in the world. It's an absolute/objective slam dunk. No arguing/evangelism needed IMO. GET is

the classic ‘the first bag is free’ kind of feature a platform builder dreams about.”

Copyright 2010 innoQ Deutschland GmbH

#3: Distribute notifications via Atom feeds

Copyright 2010 innoQ Deutschland GmbH

#4: Manage Your Metadata with RESTful HTTP

Copyright 2010 innoQ Deutschland GmbH

#5: Ship RESTful client libraries

Copyright 2010 innoQ Deutschland GmbH

#6: Adopt existing infrastructure

Copyright 2010 innoQ Deutschland GmbH

#7: Use WS-* forread/write interactions if

politics or legacy force you

Copyright 2010 innoQ Deutschland GmbH

#8: Draw your own Conclusions Watching

the Adoptionof WS-* vs. RESTful HTTP

Copyright 2010 innoQ Deutschland GmbH

Q&A

Stefan Tilkov, @[email protected]://www.innoq.com/blog/st/Phone: +49 170 471 2625

Web Services Standards Overview

Vers

ion

3.0*

· Fe

brua

ry 2

007

This

post

er is

not

to b

e re

prod

uced

or t

rans

mitt

ed in

any

form

or f

or a

ny p

urpo

se w

ithou

t the

exp

ress

per

miss

ion

of in

noQ

Deut

schl

and

GmbH

.Co

pyrig

ht ©

inno

Q De

utsc

hlan

d Gm

bH.

All R

ight

s Res

erve

d. T

he p

oste

r may

also

con

tain

refe

renc

es to

oth

er c

ompa

ny, o

rgan

isatio

n, b

rand

and

pro

duct

nam

es.

Thes

e co

mpa

ny, o

rgan

isatio

n, b

rand

and

pro

duct

nam

es a

re u

sed

here

in fo

r ide

ntifi

catio

npur

pose

s onl

y an

d m

ay b

e th

e tr

adem

arks

of t

heir

resp

ectiv

e ow

ners

.

InteroperabilityIssues

Basic Profile1.1

WS-IFinal Specification

Basic Profile1.2

WS-IWorking Group Draft

Basic Profile2.0

WS-IWorking Group Draft

Basic Security Profile1.0

WS-IBoard Approval Draft

REL Token Profile1.0

WS-IWorking Group Draft

SAML Token Profile1.0

WS-IWorking Group Draft

Conformance Claim Attachment Mechanism

(CCAM)1.0

WS-IFinal Specification

Reliable AsynchronousMessaging Profile (RAMP)

1.0WS-I

Working Draft

Attachments Profile1.0

WS-IFinal Specification

Simple SOAPBinding Profile

1.0 · WS-IFinal Specification

Business Process ExecutionLanguage for Web Services 1.1(BPEL4WS) · 1.1 · BEA Systems, IBM,

Microsoft, SAP, Siebel SystemsOASIS-Standard

WS-Choreography ModelOverview1.0 · W3C

Working Draft

Web Service ChoreographyInterface (WSCI)

1.0 · W3CSun Microsystems, SAP, BEA Systems

and Intalio · Note

Business Process Specifications

Business Process ExecutionLanguage for Web Services 2.0

(BPEL4WS) · 2.0OASIS, BEA Systems, IBM, Microsoft,

SAP, Siebel Systems · Committee Draft

Business Process Management Language (BPML)

1.1BPMI.org

Final Draft

Web Service ChoreographyDescription Language (CDL4WS)

1.0W3C

Candidate Recommendation

XML Process Definition Language (XPDL)

2.0Final

WS-Policy1.5

W3CWorking Draft

WS-PolicyAssertions1.1

BEA Systems, IBM, Microsoft, SAP

Public Draft

Metadata Specifications

WS-PolicyAttachment1.2

W3CW3C Member Submission

WS-DiscoveryMicrosoft, BEA Systems, Canon,

Intel and webMethodsDraft

WS-MetadataExchange1.1

BEA Systems, Computer Associates, IBM, Microsoft, SAP, Sun

Microsystems and webMethodsPublic Draft

Universal Description,Discovery and Integration

(UDDI)3.0.2

OASISOASIS-Standard

Web Service DescriptionLanguage 2.0 SOAP Binding

2.0W3C · Working Draft

Web Service Description Language 2.0 Core

2.0W3C

Candidate Recommendation

Web Service DescriptionLanguage 1.1

1.1W3CNote

WS-Security1.1

OASISOASIS-Standard

WS-SecurityPolicy1.1

IBM, Microsoft, RSA Security, VeriSign

Public Draft

Security Specifications

WS-Security: SOAP Message Security

1.1OASIS

Public Review Draft

WS-Security: Username Token Profile

1.1OASIS

Public Review Draft

WS-Security:Kerberos Binding

1.0Microsoft, IBM, OASIS

Working Draft

WS-Federation1.0

IBM, Microsoft, BEA Systems, RSA Security, and VeriSign

Initial Draft

WS-Security: SAML Token Profile

1.1OASIS

Public Review Draft

WS-TrustBEA Systems, Computer Associates,

IBM, Layer 7 Technologies, Microsoft,Netegrity, Oblix, OpenNetwork, Ping

Identity Corp., Reactivity, RSASecurity, VeriSign and Westbridge

Technology · Initial Draft

WS-SecureConversationBEA Systems, Computer Associates,

IBM, Layer 7 Technologies, Microsoft,Netegrity, Oblix, OpenNetwork, Ping

Identity Corp., Reactivity, RSASecurity, VeriSign and Westbridge

Technology · Public Draft

WS-Security: X.509Certificate Token Profile

1.1OASIS

Public Review Draft

WS-ReliableMessaging1.1

OASISCommittee Draft

Reliability Specifications

WS-Reliable Messaging Policy Assertion (WS-RM Policy)

1.1OASIS

Committee Draft

WS-Reliability1.1

OASISOASIS-Standard

WS-Coordination1.1

OASISWorking Draft

WS-Business Activity1.1

OASISWorking Draft

WS-Atomic Transaction1.1

OASISCommittee Draft

WS-Composite ApplicationFramework (WS-CAF)

1.0 · ArjunaTechnologies, Fujitsu, IONA, Oracleand Sun Microsyst. · Committee Specification

WS-Context (WS-CTX)1.0 · Arjuna Technologies, Fujitsu,

IONA, Oracle and SunMicrosystems · Committee Draft

TransactionSpecifications

ResourceSpecifications

Management Using Web Services (WSDM-MUWS)

1.0OASIS

OASIS-Standard

Management Of Web Services (WSDM-MOWS)

1.0OASIS

OASIS-Standard

Management Specifications

WS-ManagementAMD, Dell, Intel, Microsoft and Sun

MicrosystemsPublished Specification

Service Modeling LanguageIBM, BEA, BMC, Cisco,

Dell, HP, Intel, Microsoft, SunDraft Specification

Web Services for Remote Portlets (WSRP)

2.0OASIS

Committee Draft

PresentationSpecifications

Web Services Resource Framework (WSRF)

1.2 · OASIS · OASIS-Standard

WS-BaseFaults (WSRF)1.2

OASISWorking Draft

WS-ServiceGroup (WSRF)1.2

OASISWorking Draft

WS-ResourceProperties1.2

OASISWorking Draft

WS-ResourceLifetime1.2

OASISWorking Draft

WS-TransferW3C

W3C Member Submission

Resource RepresentationSOAP Header Block (RRSHB)

W3C · Recommendation

WS-Coordination Framework (WS-CF)

1.0 · ArjunaTechnologies, Fujitsu, IONA, Oracleand Sun Microsystems · Committee Draft

WS-Transaction Management (WS-TXM)

1.0 · ArjunaTechnologies, Fujitsu, IONA, Oracleand Sun Microsystems · Committee Draft

innoQ Deutschland GmbH innoQ Schweiz GmbHHalskestraße 17 Gewerbestrasse 11D-40880 Ratingen CH-6330 ChamPhone +49 2102 77162-100 Phone +41 41 743 [email protected] · www.innoq.com

SOAP Message Transmission Optimization

Mechanism (MTOM)1.0 · W3C

Recommendation

SOAP1.2

W3CRecommendation

SOAP1.1

W3CNote

WS-Addressing – Core1.0

W3CRecommendation

WS-EventingW3C

Public Draft

WS-Addressing – WSDLBinding

1.0W3C

Candidate Recommendation

WS-Addressing – SOAP Binding

1.0W3C

Recommendation

WS-EnumerationSystinet, Microsoft, Sonic Software,

BEA Systems and Computer Associates

Public Draft

WS-Notification1.3

OASISOASIS-Standard

WS-BaseNotification1.3

OASISOASIS-Standard

WS-Topics1.3

OASISOASIS-Standard

WS-BrokeredNotification1.3

OASISOASIS-Standard

XML 1.11.1

W3CRecommendation

XML 1.01.0

W3CRecommendation

Namespaces in XML1.1

W3CRecommendation

XML Information Set1.0

W3CRecommendation

XML Schema1.1

W3CWorking Draft

XML binary Optimized Packaging (XOP)

1.0W3C

Recommendation

Describing Media Content ofBinary Data in XML (DMCBDX)

W3CNote

XML Specifications

Messaging Specifications SOAP

*HINWEIS: Dies ist eineim Informationsgehalt reduzierte Version des WS-Standards-Posters voninnoQ. Sie finden die Vollversion zum Downloadim PDF-Format unter:www.innoq.com/resources/ws-standards-poster/.Dort können Sie auch dasausgedruckte Poster imDIN A0 Format bestellen.