belgian java user group presents - innoq... speaker’s qualifications architecting mission-critical...
TRANSCRIPT
![Page 1: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/1.jpg)
ENTERPRISE SOA CONFERENCE2 4 O c t o b e r 2 0 0 6 , D e M o n t i l , A f f l i g e m
BELGIAN JAVA USER GROUP PRESENTS
www.bejug.org
![Page 2: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/2.jpg)
REST - the Better Web Services Model
Stefan TilkovFounder & Principal ConsultantinnoQ Deutschland GmbH
![Page 3: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/3.jpg)
www.bejug.org
Overall presentation goal
Understand the value of REST and its use for building scalable systems
![Page 4: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/4.jpg)
www.bejug.org
Speaker’s Qualifications
Architecting mission-critical systems since 1995
Background with C/DCE, C++/CORBA, Java/J2EE
SOA Community editor at InfoQ (www.infoq.com)
Numerous articles and presentations on SOA, Web services, and architecture
See: http://www.innoq.com/blog/st/
![Page 5: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/5.jpg)
www.bejug.org
REST as an Alternative to Web Services
If your goal is to create a loosely-coupled, evolvable, distributed system architecture based on standards and accessible to as many people as possible, you might think
Web services are the best option.
![Page 6: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/6.jpg)
www.bejug.org
REST as an Alternative to Web Services
If your goal is to create a loosely-coupled, evolvable, distributed system architecture based on standards and accessible to as many people as possible, you might think
Web services are the best option.
You would be wrong.
![Page 7: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/7.jpg)
www.bejug.org
Agenda
Introducing REST REST vs. Web services Advanced use cases Summary
![Page 8: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/8.jpg)
www.bejug.org
Agenda
Introducing REST REST vs. Web services Advanced use cases Summary
![Page 9: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/9.jpg)
www.bejug.org
What is REST?
REpresentational State Transfer Described by Roy Fielding in his dissertation One of a number of “architectural styles” Architectural principles underlying HTTP,
defined a posteriori
See: http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
![Page 10: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/10.jpg)
www.bejug.org
REST and HTTP
REST is an abstraction that could be implemented with any technology
Best-known implementation of REST is HTTP
Bear this in mind when HTTP is used to illustrate REST in the rest of this talk
http://savas.parastatidis.name/2005/03/12/505b74f7-d5d3-4b94-95d4-65129ce2bf2b.aspx
![Page 11: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/11.jpg)
www.bejug.org
REST Key Principles
Identifiable resources Uniform interface Stateless communication Resource representations Hypermedia
![Page 12: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/12.jpg)
www.bejug.org
Identifiable resources
A resource represents a real or virtual entity - a customer, vehicle fleet, shopping cart ...
On the Web, resources are identified by URIs
Each URI adds value to the Net as a whole Imagine Amazom.com without URIs!
![Page 13: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/13.jpg)
www.bejug.org
Uniform interface
Once you a know a resource’s ID, you can interact with it using a single standard interface
Limited set of operations (verbs) in HTTP: GET, PUT, POST, DELETE (+ some more)
Pre-defined semantics allow for optimization (e.g. caching)
![Page 14: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/14.jpg)
www.bejug.org
Resource representations
Resources are always accessed through a representation
There can be more than one e.g. HTML, PDF, XML
HTTP provides content types and content negotiation
If possible, resources should be represented using well-known (ideally: standardized) content types
![Page 15: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/15.jpg)
www.bejug.org
Stateless communication
A server does not need to maintain state for each client
Massive advantages in terms of scalability Enforces loose coupling (no shared session
knowledge)
![Page 16: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/16.jpg)
www.bejug.org
Hypermedia
Possible (client) state transitions are made explicit through links
Enable following of part-whole, detail, belongs-to and arbitrary other connections
Links are (ideally) always provided by the server, not created by the client
Enables seamless evolution and distribution
![Page 17: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/17.jpg)
www.bejug.org
REST Approach
A single generic (uniform) interface for everything
Generic verbs mapped to resource semantics
A standard application protocol (e.g. HTTP)
![Page 18: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/18.jpg)
www.bejug.org
Contribution to the Net’s Value
1 URL for each resource - possibly millions every customer every order
4-7 supported methods per resource GET, PUT, POST, DELETE TRACE, OPTIONS, HEAD
Cacheable, addressable, linkable, ...
![Page 19: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/19.jpg)
www.bejug.org
Designing a RESTful application
Identify resources & design URIs Select formats (or create new ones) Identify method semantics Select response codes
See: http://bitworking.org/news/How_to_create_a_REST_Protocol
![Page 20: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/20.jpg)
www.bejug.org
RESTful HTTP Advantages
Universal support (programming languages, operating systems, servers, ...)
Proven scalability Support for redirect, caching, different
representations, resource identification, ... “Real” web integration for machine-2-machine
communication Support for XML, but also other formats
![Page 21: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/21.jpg)
www.bejug.org
Agenda
Introducing REST REST vs. Web services Advanced use cases Summary
![Page 22: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/22.jpg)
www.bejug.org
Distributed Objects Approach
A separate interface (façade) for each purpose
As known CORBA, DCOM, RMI/EJB
Often used for SOA (“CORBA w/ angle brackets)
Application-specific protocol
![Page 23: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/23.jpg)
www.bejug.org
Web Services and the Web
WSDL/SOAP-based Web services are “protocol independent”
Examples: Microsoft supports SOAP over TCP Many Java implementations allow for SOAP
with proprietary JMS implementations HTTP is just one more “transport protocol”
![Page 24: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/24.jpg)
www.bejug.org
Contribution to the Net’s Value
2 URLs http://example.com/customerservice http://example.com/orderservice
1 method POST
![Page 25: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/25.jpg)
www.bejug.org
$ 64,000 Question:
So how can one use HTTP’s features with SOAP Web services?
![Page 26: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/26.jpg)
www.bejug.org
Some HTTP features
Verbs (in order of popularity): GET, POST PUT, DELETE HEAD, OPTIONS, TRACE
Standardized (& meaningful) response codes Content negotiation Redirection Caching (incl. validation/expiry) Compression Chunking
![Page 27: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/27.jpg)
www.bejug.org
$ 64,000 Answer
![Page 28: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/28.jpg)
www.bejug.org
$ 64,000 Answer
So how can one use HTTP’s features with SOAP Web services?
![Page 29: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/29.jpg)
www.bejug.org
$ 64,000 Answer
So how can one use HTTP’s features with SOAP Web services? Not at all. At least not without breaking protocol
independence.
![Page 30: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/30.jpg)
www.bejug.org
$ 64,000 Answer
So how can one use HTTP’s features with SOAP Web services? Not at all. At least not without breaking protocol
independence. HTTP is not a “dumb” transport protocol, but
an application protocol
![Page 31: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/31.jpg)
www.bejug.org
Web Services Issues
![Page 32: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/32.jpg)
www.bejug.org
Web Services Issues
![Page 33: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/33.jpg)
www.bejug.org
Web Services Issues
see http://www.innoq.com/soa/ws-standards/poster
![Page 34: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/34.jpg)
www.bejug.org
Web Services Issues
![Page 35: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/35.jpg)
www.bejug.org
Web Services Issues
![Page 36: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/36.jpg)
www.bejug.org
Web Services Issues
See http://www.loudthinking.com/arc/000585.html
![Page 37: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/37.jpg)
www.bejug.org
Web Services Issues
“No matter how hard I try, I still think the WS-* stack is bloated, opaque, and insanely complex. I think it is going to be hard to understand, hard to implement, hard to interoperate, and hard to secure.”
![Page 38: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/38.jpg)
www.bejug.org
Web Services Issues
“No matter how hard I try, I still think the WS-* stack is bloated, opaque, and insanely complex. I think it is going to be hard to understand, hard to implement, hard to interoperate, and hard to secure.”
Tim Bray, co-inventor of XML
![Page 39: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/39.jpg)
www.bejug.org
Web Services Issues
“No matter how hard I try, I still think the WS-* stack is bloated, opaque, and insanely complex. I think it is going to be hard to understand, hard to implement, hard to interoperate, and hard to secure.”
http://www.tbray.org/ongoing/When/200x/2004/09/18/WS-OppoTim Bray, co-inventor of XML
![Page 40: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/40.jpg)
www.bejug.org
Web Services Issues
“Show me the interoperable, full and free implementations of WS-* in Python, Perl, Ruby and PHP. You won’t see them, because there’s no intrinsic value in WS-* unless you’re trying to suck money out of your customers. Its complexity serves as a barrier to entry at the same time that it creates “value” that can be sold.”
![Page 41: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/41.jpg)
www.bejug.org
Web Services Issues
“Show me the interoperable, full and free implementations of WS-* in Python, Perl, Ruby and PHP. You won’t see them, because there’s no intrinsic value in WS-* unless you’re trying to suck money out of your customers. Its complexity serves as a barrier to entry at the same time that it creates “value” that can be sold.”
Mark Nottingham, formerly BEA,
![Page 42: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/42.jpg)
www.bejug.org
Web Services Issues
“Show me the interoperable, full and free implementations of WS-* in Python, Perl, Ruby and PHP. You won’t see them, because there’s no intrinsic value in WS-* unless you’re trying to suck money out of your customers. Its complexity serves as a barrier to entry at the same time that it creates “value” that can be sold.”
Mark Nottingham, formerly BEA,former chair of the WS-Addressing WG
![Page 43: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/43.jpg)
www.bejug.org
Web Services Issues
“Show me the interoperable, full and free implementations of WS-* in Python, Perl, Ruby and PHP. You won’t see them, because there’s no intrinsic value in WS-* unless you’re trying to suck money out of your customers. Its complexity serves as a barrier to entry at the same time that it creates “value” that can be sold.”
http://www.mnot.net/blog/2006/05/10/vendors
Mark Nottingham, formerly BEA,former chair of the WS-Addressing WG
![Page 44: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/44.jpg)
www.bejug.org
Web Services Issues
Web services and WS-* stack are supposed to create a new ubiquitous protocol stack on top of another ubiquitous protocol stack
WS-* tends to ignore the web Abstractions “leak”, anyway Protocol independence is a bug, not a
feature
![Page 45: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/45.jpg)
www.bejug.org
Web Services Issues (contd.)
The Web and the Internet architecture is based on standard protocols
Not only HTTP, but also SMTP, FTP, DNS, ...
If web services are supposed to work on Internet scale, they should be inspired by the Web, not by Distributed Objects
![Page 46: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/46.jpg)
www.bejug.org
Agenda
Introducing REST REST vs. Web services Advanced use cases Summary
![Page 47: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/47.jpg)
www.bejug.org
Asynchronous Communication
HTTP is always synchronous request/response
For lengthy interactions, the server should return 202 Accepted and a URI for the result
Poll or pass a URI to be notified WS-Addressing is just URIs used badly
![Page 48: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/48.jpg)
www.bejug.org
Reliable Messaging w/ HTTP
First question: What does “reliable” mean? Often solved at the application level Existing proposals:
Bill de hÓra’s HTTPLR Yaron Goland’s SOA-Reliability (“SOA-Rity”)
![Page 49: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/49.jpg)
www.bejug.org
2-Phase-Commit Transactions
The Holy Grail of Applied Computer Science In practice, not used as often as you think
“It hurts when I do that, Doctor.” – ”Then don’t do that!” 2PC and loose coupling don’t work together very
well Compensating transactions are business logic
anyway A light-weight protocol could be created, but no
one has cared so far
![Page 50: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/50.jpg)
www.bejug.org
Resource Access
![Page 51: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/51.jpg)
www.bejug.org
Resource Access
WS-Transfer This specification defines a mechanism for acquiring
XML-based representations of entities using the Web service infrastructure. [...] Specifically, it defines two operations for sending and receiving the representation of a given resource and two operations for creating and deleting a resource and its corresponding representation.
![Page 52: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/52.jpg)
www.bejug.org
Resource Access
WS-Transfer This specification defines a mechanism for acquiring
XML-based representations of entities using the Web service infrastructure. [...] Specifically, it defines two operations for sending and receiving the representation of a given resource and two operations for creating and deleting a resource and its corresponding representation.
Sounds familiar?
![Page 53: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/53.jpg)
www.bejug.org
Resource Access
WS-Transfer This specification defines a mechanism for acquiring
XML-based representations of entities using the Web service infrastructure. [...] Specifically, it defines two operations for sending and receiving the representation of a given resource and two operations for creating and deleting a resource and its corresponding representation.
Sounds familiar? HTTP-over-SOAP-over-HTTP
![Page 54: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/54.jpg)
www.bejug.org
Layers, we’ve got Layers
![Page 55: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/55.jpg)
www.bejug.org
UDDI
420-page specification Finding and maintaining (meta-)model objects
Publication save_binding save_business save_service save_tModel delete_binding delete_business delete_publisherAssertions delete_service delete_tModel add_publisherAssertions set_publisherAssertions get_assertionStatusReport get_publisherAssertions get_registeredInfo
Inquiry find_binding find_business find_relatedBusinesses find_service find_tModel get_bindingDetail get_businessDetail get_operationalInfo get_serviceDetail get_tModelDetail
![Page 56: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/56.jpg)
www.bejug.org
UDDI (contd.)
UDDI could be greatly simplified by using plain HTTP
It would no longer be protocol-independent Who cares?
Atom (Syndication Format & Protocol) would be a great match
See: http://www.xml.com/pub/a/ws/2002/02/06/rest.html?page=2
![Page 57: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/57.jpg)
www.bejug.org
Binary Attachments
In the WS-* world: SOAP with Attachments (MIME) DIME (supported by Microsoft) XOP/MTOM
In a RESTful HTTP application: Use a link or provide an alternative representation
![Page 58: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/58.jpg)
www.bejug.org
Security
Web services security is message-based HTTP relies on
transport level security (SSL/TLS) basic and digest authentication access control based on resources and
methods WSS concepts would be a great value-add
for HTTP-based systems
![Page 59: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/59.jpg)
www.bejug.org
Agenda
Introducing REST REST vs. Web services Advanced use cases Summary
![Page 60: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/60.jpg)
www.bejug.org
Summary
REST is the architecture of the world’s most successful distributed system
Web Services don’t use the Web, they abuse it HTTP is not a transport protocol Very often, “Just use HTTP” is the best advice Understanding REST will help you build better
Web-based systems
![Page 61: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/61.jpg)
www.bejug.org
If You Only Remember One Thing…
HTTP is Good Enough.
![Page 62: BELGIAN JAVA USER GROUP PRESENTS - INNOQ... Speaker’s Qualifications Architecting mission-critical systems since 1995 Background with C/DCE, C++/CORBA, Java/J2EE SOA Community editor](https://reader033.vdocuments.mx/reader033/viewer/2022042219/5ec5442e2ce9c46c4f07035f/html5/thumbnails/62.jpg)
Q&A