SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
REST vs. SOAP:
              Making the Right
            Architectural Decision
                      Cesare Pautasso
                     Faculty of Informatics
            University of Lugano (USI), Switzerland
                  http://www.pautasso.info


7.10.2008           SOA Symposium 2008, Amsterdam     1
                        ©2008 Cesare Pautasso
Agenda
  1. Motivation: A short history of Web Services
  2. Comparing REST vs. SOAP/WS-*
  3. Architectural Decision Modeling
  4. Conceptual Comparison
  5. Technology Comparison
  6. How to measure the “complexity” of WS-*
     or the “simplicity” of REST?
  7. Conclusion: Making the right Architectural
     Decision
7.10.2008        SOA Symposium 2008, Amsterdam     2
                     ©2008 Cesare Pautasso
Web Sites (1992)


        Web              HTML                    Web
      Browser            HTTP                   Server

 WS-* Web Services (2000)

                         SOAP                   WSDL
            Client        XML                   Server
7.10.2008
                          (HTTP) Amsterdam
                     SOA Symposium 2008,                 3
                        ©2008 Cesare Pautasso
RESTful Web Services (2006)




                              PO-XML
                      JSON


                                       RSS
                                                 WADL
                                                  Web
            Client
                             HTTP                Server

 WS-* Web Services (2000)

                          SOAP                   WSDL
            Client           XML                 Server
7.10.2008
                           (HTTP) Amsterdam
                      SOA Symposium 2008,                 4
                         ©2008 Cesare Pautasso
7.10.2008   SOA Symposium 2008, Amsterdam   5
                ©2008 Cesare Pautasso
RESTful
                  RSS


                  XML          JSON


                       MIME


            URI         HTTP


                         SSL
7.10.2008    SOA Symposium 2008, Amsterdam   6
                 ©2008 Cesare Pautasso
Is REST being used?




                                            Slide from Paul Downey, BT
7.10.2008   SOA Symposium 2008, Amsterdam                                7
                ©2008 Cesare Pautasso
Can we really compare
                   WS-* vs. REST?




            WS-*                                    REST




7.10.2008           SOA Symposium 2008, Amsterdam          8
                        ©2008 Cesare Pautasso
Can we really compare
                     WS-* vs. REST?




             WS-*                                     REST

        SOA Middleware                            Architectural
         Interoperability                           style for
            Standards                               the Web



7.10.2008             SOA Symposium 2008, Amsterdam               9
                          ©2008 Cesare Pautasso
How to compare?



                     Arch itectural
                   Decision  Modeling                   REST

            WS-*                                     Architectural
                                                       style for
 SOA Middleware                                        the Web
  Interoperability
     Standards

7.10.2008            SOA Symposium 2008, Amsterdam                   10
                         ©2008 Cesare Pautasso
Architectural Decisions
• Architectural decisions             Architectural Decision:
  capture the main design             Communication Protocol
  issues and the rationale
  behind a chosen technical           Architecture Alternatives:
  solution                            1. TCP
• The choice between REST             2. SMTP
  vs. WS-* is an important            3. HTTP
  architectural decision for          4. MQ
  integration projects                5. BEEP
• Architectural decisions             6. CORBA IIOP
  affect one another                  7. …

                                      Rationale
7.10.2008           SOA Symposium 2008, Amsterdam                  11
                        ©2008 Cesare Pautasso
Application Integration Styles


  Shared            Remote            Message Bus       File
 Database          Procedure                          Transfer
                      Call




            REST                WS-*


     Integration Technology Platform
7.10.2008             SOA Symposium 2008, Amsterdam              12
                          ©2008 Cesare Pautasso
Related Decisions (WS-*)


  Shared            Remote            Message Bus       File
 Database          Procedure                          Transfer
                      Call




            REST                WS-*




7.10.2008             SOA Symposium 2008, Amsterdam              13
                          ©2008 Cesare Pautasso
Related Decisions (RPC)


  Shared            Remote            Message Bus       File
 Database          Procedure                          Transfer
                      Call




            REST                WS-*




7.10.2008             SOA Symposium 2008, Amsterdam              14
                          ©2008 Cesare Pautasso
Decision Space Overview




7.10.2008    SOA Symposium 2008, Amsterdam   15
                 ©2008 Cesare Pautasso
Decision Space Summary
 21 Decisions and 64 alternatives
 Classified by level of abstraction:
 • 3 Architectural Principles
 • 9 Conceptual Decisions
 • 9 Technology-level Decisions


             Decisions help us to measure the
            complexity implied by the choice of
                      REST or WS-*
7.10.2008            SOA Symposium 2008, Amsterdam   16
                         ©2008 Cesare Pautasso
Architectural Principles


      1. Protocol Layering
            • HTTP = Application-level Protocol (REST)
            • HTTP = Transport-level Protocol      (WS-*)
      2. Dealing with Heterogeneity
      3. Loose Coupling



7.10.2008             SOA Symposium 2008, Amsterdam         17
                          ©2008 Cesare Pautasso
RESTful Web Service Example

      HTTP Client                 Web Server               Database
    (Web Browser)

                                                 SELECT *
             GET /book?ISBN=222                 FROM books
                                               WHERE isbn=222

                 POST /order                         INSERT
                                                   INTO orders
            301 Location: /order/612


               PUT /order/612                    UPDATE orders
                                                 WHERE id=612
7.10.2008                 SOA Symposium 2008, Amsterdam               18
                              ©2008 Cesare Pautasso
Big Web Service Example
                      (from REST perspective)
                                                         Web Service
      HTTP Client               Web Server
                                                        Implementation
     (Stub Object)


            POST /soap/endpoint
                                           return getBook(222)

            POST /soap/endpoint
                                             return new Order()

            POST /soap/endpoint
                                           order.setCustomer(x)


7.10.2008               SOA Symposium 2008, Amsterdam                    19
                            ©2008 Cesare Pautasso
Protocol Layering
• “The Web is the universe of globally       • “The Web is the universal (tunneling)
  accessible information”                      transport for messages”
  (Tim Berners Lee)                              – Applications get a chance to
   – Applications should publish their             interact but they remain
     data on the Web (through URI)                 “outside of the Web”


   POX       RSS        JSON         …                        SOAP (WS-*)

  HTTP       HTTP      HTTP      HTTP                            HTTP
                                                    SMTP                     MQ…
  GET        POST      PUT       DEL                             POST

            Resource URI                                      Endpoint URI

              Application                                     Application
7.10.2008                     SOA Symposium 2008, Amsterdam                            20
                                  ©2008 Cesare Pautasso
Dealing with Heterogeneity

• Web Applications                  • Enterprise Computing




                                                             Picture from Eric Newcomer, IONA
             HTTP


                                                     CICS
                                                      IMS


 7.10.2008           SOA Symposium 2008, Amsterdam                21
                         ©2008 Cesare Pautasso
Conceptual Comparison




                            Note: this table
                             will scroll up
                            during the talk


7.10.2008    SOA Symposium 2008, Amsterdam     22
                 ©2008 Cesare Pautasso
Technology Comparison




                                Note: this table
                                 will scroll up
                                during the talk




7.10.2008    SOA Symposium 2008, Amsterdam         23
                 ©2008 Cesare Pautasso
Measuring Complexity
• Architectural Decisions give a
  quantitative measure of the complexity
  of an architectural design space:
      – Total number of decisions
      – For each decision, number of alternative options
      – For each alternative option, estimate the effort
                               REST                     WS-*
      Decisions                 17                       14
      Alternatives              27                       35
             Decisions with 1 or more alternative options
7.10.2008               SOA Symposium 2008, Amsterdam          24
                            ©2008 Cesare Pautasso
Measuring Complexity

                              REST                      WS-*
     Decisions                 5                         12
     Alternatives              16                        32
            Decisions with more than 1 alternative options

                               REST                     WS-*
      Decisions                 17                       14
      Alternatives              27                       35
             Decisions with 1 or more alternative options
7.10.2008               SOA Symposium 2008, Amsterdam          25
                            ©2008 Cesare Pautasso
Measuring Complexity

                              REST                      WS-*
     Decisions                 5                         12
     Alternatives              16                        32
            Decisions with more than 1 alternative options

                 • URI Design
                 • Resource Interaction Semantics
                 • Payload Format
                 • Service Description
                 • Service Composition
7.10.2008               SOA Symposium 2008, Amsterdam          26
                            ©2008 Cesare Pautasso
Measuring Complexity

                              REST                      WS-*
     Decisions                 5                         12
     Alternatives              16                        32
            Decisions with more than 1 alternative options

                              REST                      WS-*
      Decisions                12                        2
            Decisions with only 1 alternative option

7.10.2008               SOA Symposium 2008, Amsterdam          27
                            ©2008 Cesare Pautasso
Measuring Complexity


                            • Payload Format
                            • Data Representation Modeling



                              REST                      WS-*
      Decisions                12                        2
            Decisions with only 1 alternative option

7.10.2008               SOA Symposium 2008, Amsterdam          28
                            ©2008 Cesare Pautasso
Measuring Effort

                              REST                      WS-*
    Do-it-yourself             5                         0
    Alternatives
             Decisions with only do-it-yourself alternatives

                              REST                      WS-*
      Decisions                12                        2
            Decisions with only 1 alternative option

7.10.2008               SOA Symposium 2008, Amsterdam          29
                            ©2008 Cesare Pautasso
Measuring Effort

                             REST                      WS-*
    Do-it-yourself            5                         0
    Alternatives
            Decisions with only do-it-yourself alternatives

               • Resource Identification
               • Resource Relationship
               • Reliability
               • Transactions
               • Service Discovery
7.10.2008              SOA Symposium 2008, Amsterdam          30
                           ©2008 Cesare Pautasso
Freedom of Choice
            Freedom from Choice




7.10.2008   SOA Symposium 2008, Amsterdam   31
                ©2008 Cesare Pautasso
Comparison Summary
• Architectural Decisions measure complexity implied
  by alternative technologies

• REST simplicity = freedom from choice
    – 5 decisions require to choose among 16 alternatives
    – 12 decisions are already taken (but 5 are do-it-yourself)


• WS-* complexity = freedom of choice
    – 12 decisions require to choose among 32 alternatives
    – 2 decisions are already taken (SOAP, WSDL+XSD)
7.10.2008              SOA Symposium 2008, Amsterdam              32
                           ©2008 Cesare Pautasso
Conclusion
• You should focus on whatever solution gets the job
  done and try to avoid being religious about any
  specific architectures or technologies.
• WS-* has strengths and weaknesses and will be
  highly suitable to some applications and positively
  terrible for others. Likewise with REST.
• The decision of which to use depends entirely on the
  application requirements and constraints.
• We hope this comparison will help you make the right
  choice.
7.10.2008         SOA Symposium 2008, Amsterdam      33
                      ©2008 Cesare Pautasso
References
• Cesare Pautasso, Olaf Zimmermann, Frank Leymann,
  RESTful Web Services vs. Big Web Services: Making the Right
  Architectural Decision, Proc. of the 17th International World Wide
  Web Conference (WWW2008), Bejing, China, April 2008.

• Cesare Pautasso, BPEL for REST, Proc. of the 6th International
  Conference on Business Process Management (BPM 2008), Milan,
  Italy, September 2008.

• Cesare Pautasso, Gustavo Alonso: From Web Service Composition
  to Megaprogramming In: Proceedings of the 5th VLDB Workshop on
  Technologies for E-Services (TES-04), Toronto, Canada, August 29-
  30, 2004.

7.10.2008               SOA Symposium 2008, Amsterdam                  34
                            ©2008 Cesare Pautasso
REST vs. SOAP:
              Making the Right
            Architectural Decision
                      Cesare Pautasso
                     Faculty of Informatics
            University of Lugano (USI), Switzerland
                  http://www.pautasso.info


7.10.2008           SOA Symposium 2008, Amsterdam     35
                        ©2008 Cesare Pautasso
Backup Material
                   on REST

                      Cesare Pautasso
                     Faculty of Informatics
            University of Lugano (USI), Switzerland
                  http://www.pautasso.info


7.10.2008           SOA Symposium 2008, Amsterdam     36
                        ©2008 Cesare Pautasso
REST in one Slide
• REpresentational State Transfer defines the architectural
   style of the World Wide Web
• Its four principles can explain the success and the
   scalability of the HTTP protocol implementing them
1. Resource Identification through URI
2. Uniform Interface for all resources:
     GET (Query the state, idempotent, can be cached)
     POST (Update a resource or create child resource)
     PUT (Transfer the state on existing/new resource)
     DELETE (Delete a resource)
3. “Self-Descriptive” Message representations
4. Hyperlinks to define relationships between resources
   and valid state transitions of the service interaction
7.10.2008           SOA Symposium 2008, Amsterdam         37
                        ©2008 Cesare Pautasso
URI: Uniform Resource Identifier

• Internet Standard for resource naming and identification
  (originally from 1994, revised until 2005)
• Examples:
                 http://tools.ietf.org/html/rfc3986

             URI Scheme     Authority             Path
            https://www.google.ch/search?q=rest&start=10#1

                                                          Query   Fragment
• REST advocates the use of “nice” URIs
• In most HTTP stacks URIs cannot have arbitrary length (4Kb)

7.10.2008                 SOA Symposium 2008, Amsterdam                38
                              ©2008 Cesare Pautasso
What is a “nice” URI?
                                                  Prefer Nouns to Verbs
http://map.search.ch/lugano                            Keep them Short
                                      http://maps.google.com/lugano




              http://maps.google.com/maps?f=q&hl=en&q=lugano,
            +switzerland&layer=&ie=UTF8&z=12&om=1&iwloc=addr

7.10.2008              SOA Symposium 2008, Amsterdam                      39
                           ©2008 Cesare Pautasso
Uniform Interface Principle
              (CRUD Example)
      CRUD        REST
                                         Initialize the state of a
     CREATE    POST/PUT                        new resource
                                             at the given URI
                                          Retrieve the current
       READ         GET                   state of the resource
                                             Modify the state
     UPDATE         PUT                        of a resource
                                            Clear a resource,
     DELETE      DELETE                    after the URI is no
                                                longer valid
7.10.2008      SOA Symposium 2008, Amsterdam                         40
                   ©2008 Cesare Pautasso
POST vs. GET

• GET is a read-only operation.
  It can be repeated without
  affecting the state of the
  resource (idem-potent)
• POST is a read-write
  operation and may change
  the state of the resource
  and provoke side effects on
  the server.
  Web browsers warn
  you when refreshing
  a page generated
  with POST


7.10.2008             SOA Symposium 2008, Amsterdam   41
                          ©2008 Cesare Pautasso
RESTful Web Services Design
1. Identify resources to be exposed as




                                                                                 DELETE
   services (e.g., yearly risk report, book




                                                                          POST
   catalog, purchase order, open bugs)




                                                              GET
                                                                    PUT
2. Define “nice” URLs to address them
3. Understand what it means to do a GET,           /loan
   POST, PUT, DELETE on a given resource
   URI                                             /balance         X     X       X
4. Design and document resource                    /client                        ?
   representations (payload formats)
5. Model relationships (e.g., containment,         /book
   reference, state transitions) between           /order                 ?       ?
   resources with hyperlinks that can be
   followed to get more details
6. Implement and deploy on Web server
                                                   /soap      X     X             X
7. Test with a Web browser
7.10.2008                  SOA Symposium 2008, Amsterdam                          42
                               ©2008 Cesare Pautasso
Resource Representation
                      Formats: XML vs JSON
• XML                                • JavaScript Object Notation (JSON)
   – PO-XML                          • Wire format introduced for AJAX
   – SOAP (WS-*)                       Web applications (Browser-
   – RSS, ATOM                         Web Server communication)
• Standard textual syntax for        • Textual syntax for serialization of
  semi-structured data                 non-recurrent data structures
• Many tools available:              • Supported in most languages
  XML Schema, DOM, SAX, XPath,         (not only JavaScript)
  XSLT, XQuery                       • Not extensible
• Everyone can parse it                (does not need to be)
  (not necessarily understand it)    • “JSON has become the X in Ajax”
• Slow and Verbose


7.10.2008               SOA Symposium 2008, Amsterdam                    43
                            ©2008 Cesare Pautasso

Más contenido relacionado

La actualidad más candente

Design Patterns for mobile apps
Design Patterns for mobile appsDesign Patterns for mobile apps
Design Patterns for mobile appsIvano Malavolta
 
Internet and World Wide Web How To Program (5th Edition)
Internet and World Wide Web How To Program (5th Edition)Internet and World Wide Web How To Program (5th Edition)
Internet and World Wide Web How To Program (5th Edition)hengoofga
 
Service Oriented Architecture (SOA)
Service Oriented Architecture (SOA)Service Oriented Architecture (SOA)
Service Oriented Architecture (SOA)Biniam Asnake
 
Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Zhe Li
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 
Presentation about html5 css3
Presentation about html5 css3Presentation about html5 css3
Presentation about html5 css3Gopi A
 
Back to the Basics - 1 - Introduction to Web Development
Back to the Basics - 1 - Introduction to Web DevelopmentBack to the Basics - 1 - Introduction to Web Development
Back to the Basics - 1 - Introduction to Web DevelopmentClint LaForest
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...Edureka!
 
Adbms 16 object definition language
Adbms 16 object definition languageAdbms 16 object definition language
Adbms 16 object definition languageVaibhav Khanna
 
Next.js Introduction
Next.js IntroductionNext.js Introduction
Next.js IntroductionSaray Chak
 

La actualidad más candente (20)

URI handlers
URI handlersURI handlers
URI handlers
 
Design Patterns for mobile apps
Design Patterns for mobile appsDesign Patterns for mobile apps
Design Patterns for mobile apps
 
REST vs SOAP
REST vs SOAPREST vs SOAP
REST vs SOAP
 
WCF
WCFWCF
WCF
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
Internet and World Wide Web How To Program (5th Edition)
Internet and World Wide Web How To Program (5th Edition)Internet and World Wide Web How To Program (5th Edition)
Internet and World Wide Web How To Program (5th Edition)
 
MSDN - ASP.NET MVC
MSDN - ASP.NET MVCMSDN - ASP.NET MVC
MSDN - ASP.NET MVC
 
Service Oriented Architecture (SOA)
Service Oriented Architecture (SOA)Service Oriented Architecture (SOA)
Service Oriented Architecture (SOA)
 
Rest api with node js and express
Rest api with node js and expressRest api with node js and express
Rest api with node js and express
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
Presentation about html5 css3
Presentation about html5 css3Presentation about html5 css3
Presentation about html5 css3
 
Back to the Basics - 1 - Introduction to Web Development
Back to the Basics - 1 - Introduction to Web DevelopmentBack to the Basics - 1 - Introduction to Web Development
Back to the Basics - 1 - Introduction to Web Development
 
Angular overview
Angular overviewAngular overview
Angular overview
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 
Adbms 16 object definition language
Adbms 16 object definition languageAdbms 16 object definition language
Adbms 16 object definition language
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
Next.js Introduction
Next.js IntroductionNext.js Introduction
Next.js Introduction
 
React workshop
React workshopReact workshop
React workshop
 

Destacado

Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTPradeep Kumar
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSam Brannen
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Peter R. Egli
 
Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentationguest0df6b0
 
Soap vs. rest - which is right web service protocol for your need?
Soap vs. rest -  which is right web service protocol for your need?Soap vs. rest -  which is right web service protocol for your need?
Soap vs. rest - which is right web service protocol for your need?Vijay Prasad Gupta
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical ApproachMadhaiyan Muthu
 
Layer 7 & Oracle: Cyber Defense for SOA & REST
Layer 7 & Oracle: Cyber Defense for SOA & RESTLayer 7 & Oracle: Cyber Defense for SOA & REST
Layer 7 & Oracle: Cyber Defense for SOA & RESTCA API Management
 
The Rest Architectural Style
The Rest Architectural StyleThe Rest Architectural Style
The Rest Architectural StyleRobert Wilson
 
6 Reasons Why APIs Are Reshaping Your Business
6 Reasons Why APIs Are Reshaping Your Business6 Reasons Why APIs Are Reshaping Your Business
6 Reasons Why APIs Are Reshaping Your BusinessFabernovel
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
Web geliştirmeye başlamak
Web geliştirmeye başlamakWeb geliştirmeye başlamak
Web geliştirmeye başlamakMurat Yüksel
 
Rest vs soap
Rest vs soapRest vs soap
Rest vs soapNaseers
 
S: a Scripting Language for High-Performance RESTful Web Services
S: a Scripting Language for High-Performance RESTful Web ServicesS: a Scripting Language for High-Performance RESTful Web Services
S: a Scripting Language for High-Performance RESTful Web ServicesAchille Peternier
 
Understanding REST-Based Services: Simple, Scalable, and Platform Independent
Understanding REST-Based Services: Simple, Scalable, and Platform IndependentUnderstanding REST-Based Services: Simple, Scalable, and Platform Independent
Understanding REST-Based Services: Simple, Scalable, and Platform IndependentCharles Knight
 
Scalable Reliable Secure REST
Scalable Reliable Secure RESTScalable Reliable Secure REST
Scalable Reliable Secure RESTguestb2ed5f
 
Web components, so close!
Web components, so close!Web components, so close!
Web components, so close!Aleks Zinevych
 

Destacado (20)

SOAP vs REST
SOAP vs RESTSOAP vs REST
SOAP vs REST
 
Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and REST
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)
 
Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentation
 
Soap vs. rest - which is right web service protocol for your need?
Soap vs. rest -  which is right web service protocol for your need?Soap vs. rest -  which is right web service protocol for your need?
Soap vs. rest - which is right web service protocol for your need?
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
 
Layer 7 & Oracle: Cyber Defense for SOA & REST
Layer 7 & Oracle: Cyber Defense for SOA & RESTLayer 7 & Oracle: Cyber Defense for SOA & REST
Layer 7 & Oracle: Cyber Defense for SOA & REST
 
Soap Vs Rest
Soap Vs RestSoap Vs Rest
Soap Vs Rest
 
The Rest Architectural Style
The Rest Architectural StyleThe Rest Architectural Style
The Rest Architectural Style
 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
 
6 Reasons Why APIs Are Reshaping Your Business
6 Reasons Why APIs Are Reshaping Your Business6 Reasons Why APIs Are Reshaping Your Business
6 Reasons Why APIs Are Reshaping Your Business
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Web geliştirmeye başlamak
Web geliştirmeye başlamakWeb geliştirmeye başlamak
Web geliştirmeye başlamak
 
Rest vs soap
Rest vs soapRest vs soap
Rest vs soap
 
S: a Scripting Language for High-Performance RESTful Web Services
S: a Scripting Language for High-Performance RESTful Web ServicesS: a Scripting Language for High-Performance RESTful Web Services
S: a Scripting Language for High-Performance RESTful Web Services
 
Understanding REST-Based Services: Simple, Scalable, and Platform Independent
Understanding REST-Based Services: Simple, Scalable, and Platform IndependentUnderstanding REST-Based Services: Simple, Scalable, and Platform Independent
Understanding REST-Based Services: Simple, Scalable, and Platform Independent
 
Scalable Reliable Secure REST
Scalable Reliable Secure RESTScalable Reliable Secure REST
Scalable Reliable Secure REST
 
Web components, so close!
Web components, so close!Web components, so close!
Web components, so close!
 

Similar a REST vs. SOAP

Cesare Pautasso R E S T V1
Cesare  Pautasso    R E S T V1Cesare  Pautasso    R E S T V1
Cesare Pautasso R E S T V1SOA Symposium
 
Soa amsterdam-restws-pautasso-talk
Soa amsterdam-restws-pautasso-talkSoa amsterdam-restws-pautasso-talk
Soa amsterdam-restws-pautasso-talkAravindharamanan S
 
WS-* vs. RESTful Services
WS-* vs. RESTful ServicesWS-* vs. RESTful Services
WS-* vs. RESTful ServicesCesare Pautasso
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registrydeimos
 
Building+restful+webservice
Building+restful+webserviceBuilding+restful+webservice
Building+restful+webservicelonegunman
 
Umit Yalcinalp Enterprise Mashupsfor S O A
Umit  Yalcinalp    Enterprise Mashupsfor S O AUmit  Yalcinalp    Enterprise Mashupsfor S O A
Umit Yalcinalp Enterprise Mashupsfor S O ASOA Symposium
 
Next Generation_WVI
Next Generation_WVINext Generation_WVI
Next Generation_WVIPrasad Kapu
 
RESTful Service Composition with JOpera
RESTful Service Composition with JOperaRESTful Service Composition with JOpera
RESTful Service Composition with JOperaCesare Pautasso
 
Radovan Janecek R E S Tor S O A Pv1
Radovan  Janecek    R E S Tor S O A Pv1Radovan  Janecek    R E S Tor S O A Pv1
Radovan Janecek R E S Tor S O A Pv1SOA Symposium
 
200211 Fielding Apachecon
200211 Fielding Apachecon200211 Fielding Apachecon
200211 Fielding ApacheconDaniel Parker
 
Restful web services by Sreeni Inturi
Restful web services by Sreeni InturiRestful web services by Sreeni Inturi
Restful web services by Sreeni InturiSreeni I
 
CMIS Round Table
CMIS Round TableCMIS Round Table
CMIS Round TableNuxeo
 
Stratos and PaaS for London Java Community
Stratos and PaaS for London Java CommunityStratos and PaaS for London Java Community
Stratos and PaaS for London Java CommunityPaul Fremantle
 

Similar a REST vs. SOAP (20)

Cesare Pautasso R E S T V1
Cesare  Pautasso    R E S T V1Cesare  Pautasso    R E S T V1
Cesare Pautasso R E S T V1
 
Soa amsterdam-restws-pautasso-talk
Soa amsterdam-restws-pautasso-talkSoa amsterdam-restws-pautasso-talk
Soa amsterdam-restws-pautasso-talk
 
Www2008 Restws Pautasso Talk
Www2008 Restws Pautasso TalkWww2008 Restws Pautasso Talk
Www2008 Restws Pautasso Talk
 
WS-* vs. RESTful Services
WS-* vs. RESTful ServicesWS-* vs. RESTful Services
WS-* vs. RESTful Services
 
Bicocca Restws Pautasso Talk
Bicocca Restws Pautasso TalkBicocca Restws Pautasso Talk
Bicocca Restws Pautasso Talk
 
SOA with REST
SOA with RESTSOA with REST
SOA with REST
 
BPM with REST
BPM with RESTBPM with REST
BPM with REST
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registry
 
SOA2010 SOA with REST
SOA2010 SOA with RESTSOA2010 SOA with REST
SOA2010 SOA with REST
 
Building+restful+webservice
Building+restful+webserviceBuilding+restful+webservice
Building+restful+webservice
 
Umit Yalcinalp Enterprise Mashupsfor S O A
Umit  Yalcinalp    Enterprise Mashupsfor S O AUmit  Yalcinalp    Enterprise Mashupsfor S O A
Umit Yalcinalp Enterprise Mashupsfor S O A
 
Next Generation_WVI
Next Generation_WVINext Generation_WVI
Next Generation_WVI
 
Www2008 Restws Pautasso Zimmermann Leymann
Www2008 Restws Pautasso Zimmermann LeymannWww2008 Restws Pautasso Zimmermann Leymann
Www2008 Restws Pautasso Zimmermann Leymann
 
RESTful Service Composition with JOpera
RESTful Service Composition with JOperaRESTful Service Composition with JOpera
RESTful Service Composition with JOpera
 
Radovan Janecek R E S Tor S O A Pv1
Radovan  Janecek    R E S Tor S O A Pv1Radovan  Janecek    R E S Tor S O A Pv1
Radovan Janecek R E S Tor S O A Pv1
 
200211 Fielding Apachecon
200211 Fielding Apachecon200211 Fielding Apachecon
200211 Fielding Apachecon
 
Restful web services by Sreeni Inturi
Restful web services by Sreeni InturiRestful web services by Sreeni Inturi
Restful web services by Sreeni Inturi
 
CMIS Round Table
CMIS Round TableCMIS Round Table
CMIS Round Table
 
Soa limitations
Soa limitationsSoa limitations
Soa limitations
 
Stratos and PaaS for London Java Community
Stratos and PaaS for London Java CommunityStratos and PaaS for London Java Community
Stratos and PaaS for London Java Community
 

Más de Murat Çakal

Scaling web applications with cassandra presentation
Scaling web applications with cassandra presentationScaling web applications with cassandra presentation
Scaling web applications with cassandra presentationMurat Çakal
 
Mongodb open source_high_performance_database
Mongodb open source_high_performance_databaseMongodb open source_high_performance_database
Mongodb open source_high_performance_databaseMurat Çakal
 
Building web applications with mongo db presentation
Building web applications with mongo db presentationBuilding web applications with mongo db presentation
Building web applications with mongo db presentationMurat Çakal
 
Trouble with nosql_dbs
Trouble with nosql_dbsTrouble with nosql_dbs
Trouble with nosql_dbsMurat Çakal
 

Más de Murat Çakal (9)

Cassandra NoSQL
Cassandra NoSQLCassandra NoSQL
Cassandra NoSQL
 
Scaling web applications with cassandra presentation
Scaling web applications with cassandra presentationScaling web applications with cassandra presentation
Scaling web applications with cassandra presentation
 
Mongodb open source_high_performance_database
Mongodb open source_high_performance_databaseMongodb open source_high_performance_database
Mongodb open source_high_performance_database
 
Building web applications with mongo db presentation
Building web applications with mongo db presentationBuilding web applications with mongo db presentation
Building web applications with mongo db presentation
 
Wmware NoSQL
Wmware NoSQLWmware NoSQL
Wmware NoSQL
 
Trouble with nosql_dbs
Trouble with nosql_dbsTrouble with nosql_dbs
Trouble with nosql_dbs
 
NoSql databases
NoSql databasesNoSql databases
NoSql databases
 
RDBMS vs NoSQL
RDBMS vs NoSQLRDBMS vs NoSQL
RDBMS vs NoSQL
 
No sql
No sqlNo sql
No sql
 

Último

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Último (20)

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

REST vs. SOAP

  • 1. REST vs. SOAP: Making the Right Architectural Decision Cesare Pautasso Faculty of Informatics University of Lugano (USI), Switzerland http://www.pautasso.info 7.10.2008 SOA Symposium 2008, Amsterdam 1 ©2008 Cesare Pautasso
  • 2. Agenda 1. Motivation: A short history of Web Services 2. Comparing REST vs. SOAP/WS-* 3. Architectural Decision Modeling 4. Conceptual Comparison 5. Technology Comparison 6. How to measure the “complexity” of WS-* or the “simplicity” of REST? 7. Conclusion: Making the right Architectural Decision 7.10.2008 SOA Symposium 2008, Amsterdam 2 ©2008 Cesare Pautasso
  • 3. Web Sites (1992) Web HTML Web Browser HTTP Server WS-* Web Services (2000) SOAP WSDL Client XML Server 7.10.2008 (HTTP) Amsterdam SOA Symposium 2008, 3 ©2008 Cesare Pautasso
  • 4. RESTful Web Services (2006) PO-XML JSON RSS WADL Web Client HTTP Server WS-* Web Services (2000) SOAP WSDL Client XML Server 7.10.2008 (HTTP) Amsterdam SOA Symposium 2008, 4 ©2008 Cesare Pautasso
  • 5. 7.10.2008 SOA Symposium 2008, Amsterdam 5 ©2008 Cesare Pautasso
  • 6. RESTful RSS XML JSON MIME URI HTTP SSL 7.10.2008 SOA Symposium 2008, Amsterdam 6 ©2008 Cesare Pautasso
  • 7. Is REST being used? Slide from Paul Downey, BT 7.10.2008 SOA Symposium 2008, Amsterdam 7 ©2008 Cesare Pautasso
  • 8. Can we really compare WS-* vs. REST? WS-* REST 7.10.2008 SOA Symposium 2008, Amsterdam 8 ©2008 Cesare Pautasso
  • 9. Can we really compare WS-* vs. REST? WS-* REST SOA Middleware Architectural Interoperability style for Standards the Web 7.10.2008 SOA Symposium 2008, Amsterdam 9 ©2008 Cesare Pautasso
  • 10. How to compare? Arch itectural Decision Modeling REST WS-* Architectural style for SOA Middleware the Web Interoperability Standards 7.10.2008 SOA Symposium 2008, Amsterdam 10 ©2008 Cesare Pautasso
  • 11. Architectural Decisions • Architectural decisions Architectural Decision: capture the main design Communication Protocol issues and the rationale behind a chosen technical Architecture Alternatives: solution 1. TCP • The choice between REST 2. SMTP vs. WS-* is an important 3. HTTP architectural decision for 4. MQ integration projects 5. BEEP • Architectural decisions 6. CORBA IIOP affect one another 7. … Rationale 7.10.2008 SOA Symposium 2008, Amsterdam 11 ©2008 Cesare Pautasso
  • 12. Application Integration Styles Shared Remote Message Bus File Database Procedure Transfer Call REST WS-* Integration Technology Platform 7.10.2008 SOA Symposium 2008, Amsterdam 12 ©2008 Cesare Pautasso
  • 13. Related Decisions (WS-*) Shared Remote Message Bus File Database Procedure Transfer Call REST WS-* 7.10.2008 SOA Symposium 2008, Amsterdam 13 ©2008 Cesare Pautasso
  • 14. Related Decisions (RPC) Shared Remote Message Bus File Database Procedure Transfer Call REST WS-* 7.10.2008 SOA Symposium 2008, Amsterdam 14 ©2008 Cesare Pautasso
  • 15. Decision Space Overview 7.10.2008 SOA Symposium 2008, Amsterdam 15 ©2008 Cesare Pautasso
  • 16. Decision Space Summary 21 Decisions and 64 alternatives Classified by level of abstraction: • 3 Architectural Principles • 9 Conceptual Decisions • 9 Technology-level Decisions Decisions help us to measure the complexity implied by the choice of REST or WS-* 7.10.2008 SOA Symposium 2008, Amsterdam 16 ©2008 Cesare Pautasso
  • 17. Architectural Principles 1. Protocol Layering • HTTP = Application-level Protocol (REST) • HTTP = Transport-level Protocol (WS-*) 2. Dealing with Heterogeneity 3. Loose Coupling 7.10.2008 SOA Symposium 2008, Amsterdam 17 ©2008 Cesare Pautasso
  • 18. RESTful Web Service Example HTTP Client Web Server Database (Web Browser) SELECT * GET /book?ISBN=222 FROM books WHERE isbn=222 POST /order INSERT INTO orders 301 Location: /order/612 PUT /order/612 UPDATE orders WHERE id=612 7.10.2008 SOA Symposium 2008, Amsterdam 18 ©2008 Cesare Pautasso
  • 19. Big Web Service Example (from REST perspective) Web Service HTTP Client Web Server Implementation (Stub Object) POST /soap/endpoint return getBook(222) POST /soap/endpoint return new Order() POST /soap/endpoint order.setCustomer(x) 7.10.2008 SOA Symposium 2008, Amsterdam 19 ©2008 Cesare Pautasso
  • 20. Protocol Layering • “The Web is the universe of globally • “The Web is the universal (tunneling) accessible information” transport for messages” (Tim Berners Lee) – Applications get a chance to – Applications should publish their interact but they remain data on the Web (through URI) “outside of the Web” POX RSS JSON … SOAP (WS-*) HTTP HTTP HTTP HTTP HTTP SMTP MQ… GET POST PUT DEL POST Resource URI Endpoint URI Application Application 7.10.2008 SOA Symposium 2008, Amsterdam 20 ©2008 Cesare Pautasso
  • 21. Dealing with Heterogeneity • Web Applications • Enterprise Computing Picture from Eric Newcomer, IONA HTTP CICS IMS 7.10.2008 SOA Symposium 2008, Amsterdam 21 ©2008 Cesare Pautasso
  • 22. Conceptual Comparison Note: this table will scroll up during the talk 7.10.2008 SOA Symposium 2008, Amsterdam 22 ©2008 Cesare Pautasso
  • 23. Technology Comparison Note: this table will scroll up during the talk 7.10.2008 SOA Symposium 2008, Amsterdam 23 ©2008 Cesare Pautasso
  • 24. Measuring Complexity • Architectural Decisions give a quantitative measure of the complexity of an architectural design space: – Total number of decisions – For each decision, number of alternative options – For each alternative option, estimate the effort REST WS-* Decisions 17 14 Alternatives 27 35 Decisions with 1 or more alternative options 7.10.2008 SOA Symposium 2008, Amsterdam 24 ©2008 Cesare Pautasso
  • 25. Measuring Complexity REST WS-* Decisions 5 12 Alternatives 16 32 Decisions with more than 1 alternative options REST WS-* Decisions 17 14 Alternatives 27 35 Decisions with 1 or more alternative options 7.10.2008 SOA Symposium 2008, Amsterdam 25 ©2008 Cesare Pautasso
  • 26. Measuring Complexity REST WS-* Decisions 5 12 Alternatives 16 32 Decisions with more than 1 alternative options • URI Design • Resource Interaction Semantics • Payload Format • Service Description • Service Composition 7.10.2008 SOA Symposium 2008, Amsterdam 26 ©2008 Cesare Pautasso
  • 27. Measuring Complexity REST WS-* Decisions 5 12 Alternatives 16 32 Decisions with more than 1 alternative options REST WS-* Decisions 12 2 Decisions with only 1 alternative option 7.10.2008 SOA Symposium 2008, Amsterdam 27 ©2008 Cesare Pautasso
  • 28. Measuring Complexity • Payload Format • Data Representation Modeling REST WS-* Decisions 12 2 Decisions with only 1 alternative option 7.10.2008 SOA Symposium 2008, Amsterdam 28 ©2008 Cesare Pautasso
  • 29. Measuring Effort REST WS-* Do-it-yourself 5 0 Alternatives Decisions with only do-it-yourself alternatives REST WS-* Decisions 12 2 Decisions with only 1 alternative option 7.10.2008 SOA Symposium 2008, Amsterdam 29 ©2008 Cesare Pautasso
  • 30. Measuring Effort REST WS-* Do-it-yourself 5 0 Alternatives Decisions with only do-it-yourself alternatives • Resource Identification • Resource Relationship • Reliability • Transactions • Service Discovery 7.10.2008 SOA Symposium 2008, Amsterdam 30 ©2008 Cesare Pautasso
  • 31. Freedom of Choice Freedom from Choice 7.10.2008 SOA Symposium 2008, Amsterdam 31 ©2008 Cesare Pautasso
  • 32. Comparison Summary • Architectural Decisions measure complexity implied by alternative technologies • REST simplicity = freedom from choice – 5 decisions require to choose among 16 alternatives – 12 decisions are already taken (but 5 are do-it-yourself) • WS-* complexity = freedom of choice – 12 decisions require to choose among 32 alternatives – 2 decisions are already taken (SOAP, WSDL+XSD) 7.10.2008 SOA Symposium 2008, Amsterdam 32 ©2008 Cesare Pautasso
  • 33. Conclusion • You should focus on whatever solution gets the job done and try to avoid being religious about any specific architectures or technologies. • WS-* has strengths and weaknesses and will be highly suitable to some applications and positively terrible for others. Likewise with REST. • The decision of which to use depends entirely on the application requirements and constraints. • We hope this comparison will help you make the right choice. 7.10.2008 SOA Symposium 2008, Amsterdam 33 ©2008 Cesare Pautasso
  • 34. References • Cesare Pautasso, Olaf Zimmermann, Frank Leymann, RESTful Web Services vs. Big Web Services: Making the Right Architectural Decision, Proc. of the 17th International World Wide Web Conference (WWW2008), Bejing, China, April 2008. • Cesare Pautasso, BPEL for REST, Proc. of the 6th International Conference on Business Process Management (BPM 2008), Milan, Italy, September 2008. • Cesare Pautasso, Gustavo Alonso: From Web Service Composition to Megaprogramming In: Proceedings of the 5th VLDB Workshop on Technologies for E-Services (TES-04), Toronto, Canada, August 29- 30, 2004. 7.10.2008 SOA Symposium 2008, Amsterdam 34 ©2008 Cesare Pautasso
  • 35. REST vs. SOAP: Making the Right Architectural Decision Cesare Pautasso Faculty of Informatics University of Lugano (USI), Switzerland http://www.pautasso.info 7.10.2008 SOA Symposium 2008, Amsterdam 35 ©2008 Cesare Pautasso
  • 36. Backup Material on REST Cesare Pautasso Faculty of Informatics University of Lugano (USI), Switzerland http://www.pautasso.info 7.10.2008 SOA Symposium 2008, Amsterdam 36 ©2008 Cesare Pautasso
  • 37. REST in one Slide • REpresentational State Transfer defines the architectural style of the World Wide Web • Its four principles can explain the success and the scalability of the HTTP protocol implementing them 1. Resource Identification through URI 2. Uniform Interface for all resources: GET (Query the state, idempotent, can be cached) POST (Update a resource or create child resource) PUT (Transfer the state on existing/new resource) DELETE (Delete a resource) 3. “Self-Descriptive” Message representations 4. Hyperlinks to define relationships between resources and valid state transitions of the service interaction 7.10.2008 SOA Symposium 2008, Amsterdam 37 ©2008 Cesare Pautasso
  • 38. URI: Uniform Resource Identifier • Internet Standard for resource naming and identification (originally from 1994, revised until 2005) • Examples: http://tools.ietf.org/html/rfc3986 URI Scheme Authority Path https://www.google.ch/search?q=rest&start=10#1 Query Fragment • REST advocates the use of “nice” URIs • In most HTTP stacks URIs cannot have arbitrary length (4Kb) 7.10.2008 SOA Symposium 2008, Amsterdam 38 ©2008 Cesare Pautasso
  • 39. What is a “nice” URI? Prefer Nouns to Verbs http://map.search.ch/lugano Keep them Short http://maps.google.com/lugano http://maps.google.com/maps?f=q&hl=en&q=lugano, +switzerland&layer=&ie=UTF8&z=12&om=1&iwloc=addr 7.10.2008 SOA Symposium 2008, Amsterdam 39 ©2008 Cesare Pautasso
  • 40. Uniform Interface Principle (CRUD Example) CRUD REST Initialize the state of a CREATE POST/PUT new resource at the given URI Retrieve the current READ GET state of the resource Modify the state UPDATE PUT of a resource Clear a resource, DELETE DELETE after the URI is no longer valid 7.10.2008 SOA Symposium 2008, Amsterdam 40 ©2008 Cesare Pautasso
  • 41. POST vs. GET • GET is a read-only operation. It can be repeated without affecting the state of the resource (idem-potent) • POST is a read-write operation and may change the state of the resource and provoke side effects on the server. Web browsers warn you when refreshing a page generated with POST 7.10.2008 SOA Symposium 2008, Amsterdam 41 ©2008 Cesare Pautasso
  • 42. RESTful Web Services Design 1. Identify resources to be exposed as DELETE services (e.g., yearly risk report, book POST catalog, purchase order, open bugs) GET PUT 2. Define “nice” URLs to address them 3. Understand what it means to do a GET, /loan POST, PUT, DELETE on a given resource URI /balance X X X 4. Design and document resource /client ? representations (payload formats) 5. Model relationships (e.g., containment, /book reference, state transitions) between /order ? ? resources with hyperlinks that can be followed to get more details 6. Implement and deploy on Web server /soap X X X 7. Test with a Web browser 7.10.2008 SOA Symposium 2008, Amsterdam 42 ©2008 Cesare Pautasso
  • 43. Resource Representation Formats: XML vs JSON • XML • JavaScript Object Notation (JSON) – PO-XML • Wire format introduced for AJAX – SOAP (WS-*) Web applications (Browser- – RSS, ATOM Web Server communication) • Standard textual syntax for • Textual syntax for serialization of semi-structured data non-recurrent data structures • Many tools available: • Supported in most languages XML Schema, DOM, SAX, XPath, (not only JavaScript) XSLT, XQuery • Not extensible • Everyone can parse it (does not need to be) (not necessarily understand it) • “JSON has become the X in Ajax” • Slow and Verbose 7.10.2008 SOA Symposium 2008, Amsterdam 43 ©2008 Cesare Pautasso