SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewShahed Chowdhuri
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1Kumar S
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryKaren Broughton-Mabbitt
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - CoreDzmitry Naskou
 
Meetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React TestingMeetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React TestingAugusto Lazaro
 
REST-API overview / concepts
REST-API overview / conceptsREST-API overview / concepts
REST-API overview / conceptsPatrick Savalle
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaEdureka!
 
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈Amazon Web Services Korea
 
API_Testing_with_Postman
API_Testing_with_PostmanAPI_Testing_with_Postman
API_Testing_with_PostmanMithilesh Singh
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewShahed Chowdhuri
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical ApproachMadhaiyan Muthu
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample applicationAntoine Rey
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web APIBrad Genereaux
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with ExamplesGabriele Lana
 
Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인
Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인
Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인Amazon Web Services Korea
 

Tendances (20)

ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
 
RESTful API - Best Practices
RESTful API - Best PracticesRESTful API - Best Practices
RESTful API - Best Practices
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Meetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React TestingMeetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React Testing
 
REST-API overview / concepts
REST-API overview / conceptsREST-API overview / concepts
REST-API overview / concepts
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
 
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
 
API_Testing_with_Postman
API_Testing_with_PostmanAPI_Testing_with_Postman
API_Testing_with_Postman
 
Node.js Basics
Node.js Basics Node.js Basics
Node.js Basics
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web API
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
 
Asp.net web api
Asp.net web apiAsp.net web api
Asp.net web api
 
Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인
Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인
Amazon Dynamo DB 활용하기 - 강민석 :: AWS Database Modernization Day 온라인
 
IIS 7.0 Architecture And Integration With Asp.Net
IIS 7.0 Architecture And Integration With Asp.NetIIS 7.0 Architecture And Integration With Asp.Net
IIS 7.0 Architecture And Integration With Asp.Net
 

En vedette

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
 
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
 

En vedette (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
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
 
REST vs SOAP
REST vs SOAPREST vs SOAP
REST vs SOAP
 
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?
 
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!
 
Load testing with Blitz
Load testing with BlitzLoad testing with Blitz
Load testing with Blitz
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Dernier (20)

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
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...
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

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