using rest for soa - qconsf.com · using rest for soa stefan tilkov, qcon sf 2010. copyright 2010...
TRANSCRIPT
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
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 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
Well-known architectural principles, applied at different
scale
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
“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
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
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
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
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
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
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
Distributed Call Stack
Assumed Success Probability: 99.6%98%?90%?
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
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
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
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
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
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
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 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
“My Internet is bigger than your enterprise.”
Paraphrasing Dare Obasanjo,see http://tinyurl.com/dare-enterprise
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
#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.