SlideShare a Scribd company logo
1 of 85
Download to read offline
Service Oriented
        Architectures
        and Web Services
Prof. Cesare Pautasso
Faculty of Informatics
University of Lugano

c.pautasso@ieee.org
http://www.pautasso.info
@pautasso
Prof. Cesare Pautasso
       Ph.D. at ETH Zürich (2004)
       Post-Doc at ETH Zürich in the Systems (IKS) Group
       Researcher at IBM Zurich Research Lab (2007)
       Assistant Professor at the new Faculty of Informatics,
        University of Lugano (USI), Switzerland (since September 2007)

       Research Interests:
             Software Architecture and Software Composition
             Business Process Management
             Service Oriented Architectures and Web Services
             Web 2.0 Mashups and RESTful Web Services
             Autonomic Computing
             Grid Computing (Scientific Workflow Management)

       More Information: http://www.pautasso.info/
       Follow me on: http://twitter.com/pautasso/

©2010 - Cesare Pautasso                                                  2
Marcin Nowak
Dr. Achille Peternier
 Daniele Bonetta
                        Saeed Aghaee
Master Software Design

                      III         Software Design and Evolution


                          II     Software Architecture and Design


                          I           Software Engineering

©2010 - Cesare Pautasso                                             4
Once upon a time




©2010 - Cesare Pautasso   5
Once upon a time



                          Software
                          used to
                          come in
                          boxes


©2010 - Cesare Pautasso              6
Once upon a time




     Today, software runs in
     the clouds
©2010 - Cesare Pautasso        7
Once upon a time
Cloud Operating System?




©2010 - Cesare Pautasso   8
Once upon a time
Cloud Operating System?




©2010 - Cesare Pautasso   9
Today’s plan

            Software                 The Web
           Architecture               (REST)

                          SOA & WS

          Components             Connectors
           vs. Services        and Integration
©2010 - Cesare Pautasso                          10
Context
        Databases
        Networking              How to build
                                 applications
        Software Engineering    from scratch
        Programming Languages


        Service Oriented
         Architectures           How to reuse and compose two
                                 or more existing applications
        Web Services




©2010 - Cesare Pautasso                                          11
What is the problem?   Operations


                          Vermarktung                                    Angebotserstellung&                      Leistungserbringung                          Fakturierung
                                                                         Leistungsbereitstellung                 (Assurance)                                   (Billing)
                                                                        (Fulfillment)

                                                                                               OTTO, Windows , Lotus Notes

                                                                              SIF    MQ
                                   ORCA
                                                                             OMS
                                                                           extern FX
                                                                                                                                                                                 CORBA

                                    MQ
                                                                                                   PeP


                                                                                                           LSM          Insight                                                  esBill
                                              PA, zLinux

                                                                                                                                                                                      PA          FTP

                                                                                                                      TTS ARS                 TOPM
                                                 SCHON
                                                  Notes
                           CORBA




                                                                                            ESW OPM                                                   MERS
                                                                                                                                                                                  FTP
                                      CORBA




                                                      FTP
                                                                                                                                                                    FTP

                                                                                                                                                         FTP
                                                                                                                                                 CORBA
                                                                              CSS
                                                                                                           TIS IPP+
                                    FTP




                                                                                             FTP
                                                                               Tuco                                               FTP     BASKAI FX
                                                                                                           MIDAS


                                                                                                                  TIS
                                                                                                                                                                              CORBA




                                                                                    Direx          Peris                                SAP                         BDM
                                                                                                                                                                                         TTS
                                                                                                                            DWH                BW
                                                                                                                                                                                      extern FX
                                   BSK                      ES Archiv                              AD



©2010 - Cesare Pautasso                                                                                                                                                                           12
Integration (by hand…)




©2010 - Cesare Pautasso   13
Once upon a hand…)
Integration (by time




©2010 - Cesare Pautasso   14
Integration (…with SOA)




©2010 - Cesare Pautasso   15
Integration Example




©2010 - Cesare Pautasso                         16
Integration (… with JOpera)




©2009-2010 - Cesare Pautasso, Erik Wilde   17
De Architectura
 firmitatis utilitatis venustatis

Durability:
    the building should last for a
    long time without falling down on
    the people inside it
Utility:
    the building should be useful for
    the people living in it
Beauty:
    the building should look good
    and raise the spirits of its
    inhabitants


     Vitruvio, De Architectura, 23BC
Software Architecture

   As the size and complexity
   of a software system
   increase, the principal
   design decisions and the
   global structure of a system
   become more important
   than the selection of
   specific algorithms and
   data structures in order to
   determine its quality.
©2010 - Cesare Pautasso           19
Large Software Project
   Lines of code: 50 Million
   Number of developers: 2000
   Time to compile: 24 hours
   Time to ship: 5 years (from previous release)

                                     60
                   Millions of LOC




                                     40

                                     20

                                     0
                                     1990 1995 2000 2005 2010
©2010 - Cesare Pautasso                                         20
Abstraction Layers


                            Application


                          Operating System



                             Hardware

©2010 - Cesare Pautasso                      21
Software
            as a Service
                             Application
                                              Platform
                                                as a
                           Operating System   Service

           Infrastructure
            as a Service
                              Hardware

©2010 - Cesare Pautasso                                  22
Layered Architectural Style




   Infrastructure
    as a Service
                    Hardware
Platform
                                 as a
            Operating System   Service

Infrastructure
 as a Service
                 Hardware
Component
   Reusable              unit of composition


                                                Made out of smaller
                                                components



          Can be composed
          into larger systems




©2010 - Cesare Pautasso                                               25
Connector
   Generic               enabler of composition


             Plug into
             matching
             component
             ports


                                                   Transfer signals
                                                   (data, control)
                                                   between ports


©2010 - Cesare Pautasso                                               26
New Abstraction Levels

                                       Web Services
                           Services       XML
                                          REST
                          Components      J2EE
                                          .NET
                                         Eclipse
                            Objects
                                          C++
                                          Java
                                           C#



©2010 - Cesare Pautasso                               27
Component vs. Service: Example
                 Map Drawing Component

    Map getMap(lat, long, zoom)

       (lat, long) centers the map on
        any location on the planet Earth and
        zoom can show details up to 1m
        precision

       What is the “size” of this
        component?
       How to deliver the component to
        customers so that it can be reused
        in their own applications?

©2010 - Cesare Pautasso                        28
Component vs. Service:
            Business Model
        How to sell a component?             How to sell a service?
           Component developers                 Service providers can
            charge on a per-                      charge on a per-call basis:
            deployment basis:                     each time an existing
            whenever a new client                 client interacts with a
            downloads the component.              service by exchanging a
           Component upgrades may                new message.
            be sold separately to                Service providers can
            generate a revenue stream             charge a monthly/yearly
           Components can be                     flat access fee
            licensed to be redistributed         Services can be made
            within larger systems and             available for free and
            developers can demand                 providers can support
            royalties from the revenue            them with advertising
            of the final product                  revenue


©2010 - Cesare Pautasso                                                         29
IT as a “manufacturing” industry
    (ship software components)

                               IT as a “service” industry
                          (publish software on the Web)


©2010 - Cesare Pautasso                                 30
Correctness & Verification

           function f(x)
           {
           …                while(true)
           return y;        {
           }                …
                            }

   Will it terminate?
                           Will it run forever?

©2010 - Cesare Pautasso                           31
Service Lifecycle

          Change (Functional              Refactor
          Non-Functional)                  Design
                                           System
                                           Architecture
  Run,
                                            Define
  Manage,
                                            Interface
  Operate
                                            Contracts
                          Deploy
                                          Build
                                   Test   Services
©2009 - Cesare Pautasso                                   32
More than 500 million active users

                          30 billion pieces of content

                      20 million applications installed
                                  every day

                          Launched February 2004


©2010 - Cesare Pautasso                                   33
Around the year 2010…

   Google                answers 5 billion API queries every day

   Amazon                 S3 stores over 100 billion objects

   75%      of all the traffic (3 billion calls/day) of
        Twitter goes through its API




                                                                    From Tomas Vitvar, Mashups 2010 Keynote
©2010 - Cesare Pautasso                                             34
Component vs. Service: Technology
        To be used a component must:             To be used a service must:
            be packaged to be deployed              be published on the Web
             as part of some larger                    (once)
             application system                      advertise its description and
            fit with the existing framework           location to potential clients
             used to develop the system                across the Web so that they
        There are many component                      can access it using standard
         frameworks available for building             protocols
         distributed systems (e.g., J2EE,         Like components, services can be
         DCOM, .NET, CORBA).                       reused, composed into larger
        The problem is: they are not              systems and (of course) they can
         compatible (as an exercise try to         be found on the Web.
         use a .NET assembly to make an           Unlike components, services do
         Eclipse plug-in and see what              not have to be downloaded and
         happens)                                  deployed in order to be used by
                                                   clients. Instead, a client may
                                                   discover and access their
                                                   functionality by using standard
                                                   protocols (WSDL, SOAP, UDDI)
                                                   based on XML standards.

©2010 - Cesare Pautasso                                                                35
What is Integration?

       Application 1                Application 2

            Display
              Logic
               State
                          +            Display
                                        Logic
                                         State
                                                     =?
      New applications are built out of the composition of existing ones

      Prefer to reuse, extend, and recombine existing systems as opposed
       to develop new ones from scratch


©2010 - Cesare Pautasso                                                     36
Why integration matters
        Useful information systems evolve over time by growing in size and by
         incorporating functionality of existing standalone systems.
         Applications originally intended to operate separately, are required to
         interoperate with others later on.
        Technology change affects all layers, legacy does not go away so easily.
        The architecture of the enterprise information system depends on
         constraints related to the technology but also to the organization.
            In the case of B2B, each company owns its information system and
             will not open it up more than strictly necessary as it is part of their
             competitive advantage. For example, not all business processes are
             going to be shared, as business processes are mostly kept secret.
            Within an enterprise, each department may have its own IT
             infrastructure, systems and databases which are maintained
             independently. Integrating them may bring additional value through
             cost reduction to the company.
            Mergers, acquisitions and spin-offs leave a long lasting trace in the
             information systems of the corresponding companies
©2010 - Cesare Pautasso                                                                37
Challenges of Integration
        Many problems to be addressed in Enterprise Application Integration
         stem from having to integrate standalone applications which have been
         developed independently, operate autonomously, and were not originally
         indended to be integrated with one another.
        Heterogeneous – each application implements its own data model.
         Concepts may be shared, but representation mismatches are to be
         expected. Mappings and transformations are required.
        Autonomous – applications update their state independently without
         coordinating with each other. The systems to be integrated are
         maintained independently and upgraded at different times.
        Distributed – in the worst case, every application runs on a completely
         separate environment, e.g., database storage is not shared among
         applications. Message-based communication through the network is the
         only possibility to exchange information.

                                               This part is taken from C. Bussler, B2B Integration, Springer, 2004
©2010 - Cesare Pautasso                                                                                              38
Integration is bottom up

      How to mix
      software not
      designed to
      be integrated?
©2010 - Cesare Pautasso    39
Integration Techniques
       Given two (or more)         Examples:
        existing applications,         Manual Data Transfer
        how can you compose            Manual (with Copy & Paste)
        them?                          File based integration (Hot Folder)
       It depends on whether          API extraction and publishing
        you can change the             Command line scripting
        applications to make           Wrap existing software
        them talk together.            Screen Scraping
       How much integration           Data transformation and conversion
        can be done                    Message based integration
        automatically?                 Point to Point
                                       Centralized, Peer to Peer
                                       Mashup



©2010 - Cesare Pautasso                                                       40
Layers as integration points
     Integration at the presentation layer (screen scraping) is
     always possible, but the least recommended.




                                      UI
                                                          Well designed
                                                          applications
                               Application                have an API
  It is also possible                                     that we can call
  to bypass the                                           directly.
  application and
  directly access                   DB
  its database

©2010 - Cesare Pautasso                                                 41
Connectors
RPC



                          Call
                                                 Remote Procedure Call

             Procedure/Function Calls are the easiest to program with
              connector.
             They take a basic programming language construct and make it
              available across the network (Remote Procedure Call) to connect
              distributed components
             Remote calls are often used within the client/server architectural
              style, but call-backs are also used in event-oriented styles for
              notifications

©2010 - Cesare Pautasso                                                            43
Hot Folder


                   Write
                   Copy           File Transfer
                                  (Hot Folder)


                   Watch      Transferring files does not
                               require to modify components

                   Read
                              A component writes a file,
                               which is then copied on a
                               different host, and fed as input
                               into a different component
                              The transfers can be batched
                               with a certain frequency

©2010 - Cesare Pautasso                                           44
Shared Database


                 Create
                  Read             Shared Database


                 Update      Sharing a common database
                              does not require to modify
                              components, if they all can

                 Delete   
                              support the same schema
                              Components can communicate
                              by creating, updating and
                              reading entries in the
                              database, which can safely
                              handles the concurrency
©2010 - Cesare Pautasso                                     45
Bus


          Publish
         Subscribe
                                                     Message Bus
              A message bus connects a variable number of components,
               which are decoupled from one another.
              Components act as message sources by publishing messages
               into the bus; Components act as message sinks by subscribing to
               message types (or properties based on the actual content)
              The bus can route, queue, buffer, transform and deliver
               messages to one or more recipients
              The “enterprise” service bus is used to implement the SOA style
©2010 - Cesare Pautasso                                                          46
Web (RESTful Web services)

                 Get
                 Put
                Delete
                 Post                                 Web

       The Web is the connector used in the REST (Representational State
        Transfer) architectural style
       Components may reliably transfer state among themselves using the
        GET, PUT, DELETE primitives. POST is used for unsafe interactions.

©2010 - Cesare Pautasso                                                      47
Software Connectors for SOA

                          RPC     ESB




                                        WS-*
                                WWW




                                        REST
©2010 - Cesare Pautasso                        48
Interface Description
Languages (IDL)


                                              WSDL
                                     CORBA     1.0
                          DCOM
         RPC                         IDL
                          MIDL
         IDL
                            Java Interfaces

©2010 - Cesare Pautasso                              49
Component Interoperability
      Due to lack of interoperability, it is not always possible to build
       a distributed system using heterogeneous components



                 Enterprise
                    Java          DCOM
                                                               .NET
                   Beans          Objects
                                                            Assemblies




                                     Web                   Legacy
                   CORBA
                                   Services                COBOL
                   Objects
                                                          Programs


©2010 - Cesare Pautasso                                                      50
Web Services for Interoperability
      If the components are published as Web services, they can
       interoperate across different component frameworks.
       (Interoperability through Wrapping)



                          Java    DCOM               .NET
                          Bean    Object           Assembly




                                  Web               Legacy
                     CORBA                          COBOL
                     Object      Service
                                                   Program


©2010 - Cesare Pautasso                                            51
Interoperability

                 Component        Adapter                Adapter      Component
                 (Platform A)   (Platform A)           (Platform B)   (PlatformB)




                   Components of different platforms can interoperate through
                   adapters mapping the internal message format to a common
                   (standard) representation


©2010 - Cesare Pautasso                                                             52
Is this a Web Service?




©2010 - Cesare Pautasso   53
Web Sites (1992)

               Web        HTML     Web
             Browser      HTTP     Server


     WS-* Web Services (2000)

                          SOAP     WSDL
                 Client   XML      Server
                          (HTTP)
©2010 - Cesare Pautasso                     54
RESTful Web Services (2007)




                                 PO-XML
                                          ATOM
                          JSON
                                                 WADL
                                                 Web
                 Client
                             HTTP                Server

     WS-* Web Services (2000)

                             SOAP                WSDL
                 Client      XML                 Server
                            (HTTP)
©2010 - Cesare Pautasso                                   55
Extending the Web with Services


                     Web Browser                WS Client

                      HTML/HTTP         SOAP, XML or JSON/HTTP

                                   Web Server
                                                     add your
                                    Java      ASP
               CGI           PHP                     favourite
                                   Servlet   .NET      here

                          Back-end Systems and Databases
©2010 - Cesare Pautasso                                          56
Defining Web Services
       W3C defined Web services in the early 2000s as:


           a software application identified by a URI,
           whose interfaces and bindings are capable of
           being defined, described and discovered as
                          XML artifacts.

        A Web service supports direct interactions with
           other software agents using XML-based
            messages exchanged via the Internet


©2010 - Cesare Pautasso                                   57
Properties of Web Services
       The W3C definition emphasizes different aspects:
          In order to be accessed by clients, a Web Service should be
           defined, described and discovered.
          XML is the foundation for all standards that are going to be
           used (SOAP, WSDL, UDDI) to do so.
          Web services are intended to be used as components that
           can be readily integrated into more complex distributed
           applications.

       Web services are meant for software based consumption
        (clients are programs)

       Web-based applications are meant to be used by humans
        equipped with a WWW browser
        (clients are users)


©2010 - Cesare Pautasso                                                   58
Web Services and SOA
       Web Services can also be seen as the technology used to implement
        service oriented architectures (SOA)
       SOA are about building distributed applications out of the
        interconnection of loosely coupled, heterogeneous services.
       To do so, interoperability is paramount and Web services are meant to
        deliver it.
       In a service oriented architecture services are:
          Interoperable – Services seamlessly work with one another and can
            be easily composed into complex applications
          Heterogeneous – Standard service interfaces virtualize the
            underlying mechanisms and protocols of the middleware platform
          Distributed – Services can (in principle) be located across the Web
          Autonomous – Services belong to different organizations and may
            evolve independently of each other
          Loosely Coupled – Services should make very few assumptions
            about one another so that they can be easily moved, replaced and
            even interact without being available at the same time.
©2010 - Cesare Pautasso                                                          59
Web Services Architecture
       A popular interpretation of Web
        services is based on IBM’s Web
        service architecture based on
        three elements:
  1.    Service requester: The potential
        user of a service (the client)
  2.    Service provider: The entity that
        implements the service and
        offers to carry it out on behalf
        of the requester (the server)
  3.    Service registry: A place where
        available services are listed
        and that allows providers to
        advertise their services and
        requesters to lookup and query
        for services

©2010 - Cesare Pautasso                     60
Web Service Architecture

                   Service                     Service                        Service
                  Requester                    Registry                       Provider

                                                             Service
                                                            Description            1. Publish

       2. Lookup




       3. Invoke


                   Clients use the Registry to lookup published service
                   descriptions that will enable them to perform the actual
                   service invocation with the provider


©2010 - Cesare Pautasso                                                                         61
Main Web Services Standards
       The Web service architecture
        proposed by IBM is based on       UDDI
        two key concepts:
           architecture of existing
             synchronous middleware
             platforms
           current specifications of
             SOAP, UDDI and WSDL
       The architecture has a
        remarkable client/server flavor
       It reflects only what can be             SOAP
        done with:
           SOAP (Simple Object
             Access Protocol)
           UDDI (Universal Description
             and Discovery Protocol)
           WSDL (Web Services                     WSDL
             Description Language)
©2010 - Cesare Pautasso                                   62
What is SOAP?
       The W3C started working on SOAP in 1999. The current W3C
        recommendation is Version 1.2
       Originally: Simple Object Access Protocol
       SOAP covers the following main areas:
          Message construct: A message format for one-way communication
            describing how a message can be packed into an XML document
          Processing model: rules for processing a SOAP message and a
            simple classification of the entities involved in processing a SOAP
            message. Which parts of the messages should be read by whom and
            how to react in case the content is not understood
          Extensibility Model: How the basic message construct can be
            extended with application specific constructs
          Protocol binding framework: Allows SOAP messages to be
            transported using different protocols (HTTP, SMTP, …)
             • A concrete binding for HTTP
          Conventions on how to turn an RPC call into a SOAP message and
            back as well as how to implement the RPC style of interaction
©2010 - Cesare Pautasso                                                           63
HTTP Request

SOAP RPC                                 SOAP Envelope
                                            SOAP header
                                                Transactional
                                                  context


                                            SOAP Body
                                              Name of Procedure

                                             Input parameter 1
       SERVICE REQUESTER                                          SERVICE PROVIDER
                                             Input parameter 2

                                                                                Procedure
           RPC call
                          HTTP engine




                                                                  HTTP engine
           SOAP                                                                  SOAP
           engine                                                                engine
                                         HTTP Response
                                         SOAP Envelope
                                            SOAP header
                                                Transactional
                                                  context

                                            SOAP Body

                                              Return parameter




©2010 - Cesare Pautasso                                                                     64
SOAP Request Response XML
  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
     <soap:Body>
          <ns2:sayHi xmlns:ns2="http://test.inf.usi.ch/">
                  <text>World</text>
          </ns2:sayHi>
     </soap:Body>
  </soap:Envelope>


  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
     <soap:Body>
          <ns2:sayHiResponse xmlns:ns2="http://test.inf.usi.ch/">
                  <result>Hello World</result>
          </ns2:sayHiResponse>
     </soap:Body>
  </soap:Envelope>


©2010 - Cesare Pautasso                                                    65
What is WSDL?
       The Web Services Description Language specification is in version
        1.1 (March 2001) and currently under revision (v2.0 is in the
        candidate recommendation stage, Jan 2006)
       WSDL 1.1 discusses how to describe the different parts that
        comprise a Web service interface
           the type system used to describe the service data model (XML
             Schema)
           the messages involved in the interaction with the service
           the individual operations composed of 4 possible message
             exchange patterns
           the sets of operations that constitute a service
           the mapping to a transport protocol for the messages
           the location where the service provider resides
           groups of locations that can be used to access the same service
       It also includes specification indicating how to bind WSDL to the
        SOAP, HTTP (POST/GET) and MIME protocols
©2010 - Cesare Pautasso                                                       66
Elements of WSDL (1.1)
              WSDL document




                                                                                                    Abstract description of the service
                          Types (type information for the document, e.g., XML Schema)


               Message 1       Message 2    Message 3     Message 4       Message 5     Message 6



                          Operation 1              Operation 2                Operation 3



                                           Port Type (abstract service)


                            binding 1      binding 2      binding 3         binding 4




                                                                                                    Concrete description
                                                                                                       of the service
                             port 1          port 2         port 3            port 4

                                          Service (the interface in all
                                        its available implementations)
©2010 - Cesare Pautasso                                                                                                                   67
Hello World WSDL
  <?xml version='1.0' encoding='UTF-8'?>
  <wsdl:definitions name="HelloWorld" targetNamespace="http://test.inf.usi.ch/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.inf.usi.ch/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types> <xs:schema elementFormDefault="unqualified" targetNamespace="http://test.inf.usi.ch/" version="1.0"
       xmlns:tns="http://test.inf.usi.ch/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHi" type="tns:sayHi" />
       <xs:element name="sayHiResponse" type="tns:sayHiResponse" /> <xs:complexType name="sayHi"> <xs:sequence> <xs:element
       minOccurs="0" name="text" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="sayHiResponse">
       <xs:sequence> <xs:element minOccurs="0" name="result" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:schema>
  </wsdl:types>
  <wsdl:message name="sayHiResponse"> <wsdl:part element="tns:sayHiResponse" name="parameters"> </wsdl:part> </wsdl:message>
  <wsdl:message name="sayHi"> <wsdl:part element="tns:sayHi" name="parameters"> </wsdl:part> </wsdl:message>
  <wsdl:portType name="Contract">
        <wsdl:operation name="sayHi">
                  <wsdl:input message="tns:sayHi" name="sayHi"> </wsdl:input>
                  <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"> </wsdl:output>
       </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="HelloWorldSoapBinding" type="tns:Contract">
       <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
       <wsdl:operation name="sayHi">
                  <soap:operation soapAction="" style="document" />
                  <wsdl:input name="sayHi"> <soap:body use="literal" /> </wsdl:input>
                   <wsdl:output name="sayHiResponse"> <soap:body use="literal" /> </wsdl:output>
       </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="HelloWorld">
        <wsdl:port binding="tns:HelloWorldSoapBinding" name="ServicePort">
        <soap:address location="http://localhost:9000/helloWorld" /> </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>



©2010 - Cesare Pautasso                                                                                                                       68
Hello World WSDL
  <?xml version='1.0' encoding='UTF-8'?>
  <wsdl:definitions name="HelloWorld" targetNamespace="http://test.inf.usi.ch/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.inf.usi.ch/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types> <xs:schema elementFormDefault="unqualified" targetNamespace="http://test.inf.usi.ch/" version="1.0"
       xmlns:tns="http://test.inf.usi.ch/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHi" type="tns:sayHi" />

      Types (type information for the document, e.g., XML Schema)
       <xs:element name="sayHiResponse" type="tns:sayHiResponse" /> <xs:complexType name="sayHi"> <xs:sequence> <xs:element
       minOccurs="0" name="text" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="sayHiResponse">
       <xs:sequence> <xs:element minOccurs="0" name="result" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:schema>
  </wsdl:types>
                                                   Request and Response Messages
  <wsdl:message name="sayHiResponse"> <wsdl:part element="tns:sayHiResponse" name="parameters"> </wsdl:part> </wsdl:message>
  <wsdl:message name="sayHi"> <wsdl:part element="tns:sayHi" name="parameters"> </wsdl:part> </wsdl:message>
  <wsdl:portType name="Contract">
        <wsdl:operation name="sayHi">

                                  Abstract Port Type and Operations
                  <wsdl:input message="tns:sayHi" name="sayHi"> </wsdl:input>
                  <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"> </wsdl:output>
       </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="HelloWorldSoapBinding" type="tns:Contract">
       <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
       <wsdl:operation name="sayHi">

                                      Concrete SOAP Binding
                  <soap:operation soapAction="" style="document" />
                  <wsdl:input name="sayHi"> <soap:body use="literal" /> </wsdl:input>
                   <wsdl:output name="sayHiResponse"> <soap:body use="literal" /> </wsdl:output>
       </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="HelloWorld">
        <wsdl:port binding="tns:HelloWorldSoapBinding" name="ServicePort">
                                                  Service HTTP Endpoint
        <soap:address location="http://localhost:9000/helloWorld" /> </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>



©2010 - Cesare Pautasso                                                                                                                       69
Hello World WSDL
  <?xml version='1.0' encoding='UTF-8'?>
  <wsdl:definitions name="HelloWorld" targetNamespace="http://test.inf.usi.ch/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.inf.usi.ch/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types> <xs:schema elementFormDefault="unqualified" targetNamespace="http://test.inf.usi.ch/" version="1.0"
       xmlns:tns="http://test.inf.usi.ch/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHi" type="tns:sayHi" />
       <xs:element name="sayHiResponse" type="tns:sayHiResponse" /> <xs:complexType name="sayHi"> <xs:sequence> <xs:element
       minOccurs="0" name="text" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="sayHiResponse">
       <xs:sequence> <xs:element minOccurs="0" name="result" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:schema>
  </wsdl:types>
  <wsdl:message name="sayHiResponse"> <wsdl:part element="tns:sayHiResponse" name="parameters"> </wsdl:part> </wsdl:message>
  <wsdl:message name="sayHi"> <wsdl:part element="tns:sayHi" name="parameters"> </wsdl:part> </wsdl:message>
  <wsdl:portType name="Contract">
        <wsdl:operation name="sayHi">
                  <wsdl:input message="tns:sayHi" name="sayHi"> </wsdl:input>
                  <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"> </wsdl:output>
       </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="HelloWorldSoapBinding" type="tns:Contract">
       <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
       <wsdl:operation name="sayHi">
                  <soap:operation soapAction="" style="document" />
                  <wsdl:input name="sayHi"> <soap:body use="literal" /> </wsdl:input>
                   <wsdl:output name="sayHiResponse"> <soap:body use="literal" /> </wsdl:output>
       </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="HelloWorld">




                          result = sayHi(text)
        <wsdl:port binding="tns:HelloWorldSoapBinding" name="ServicePort">
        <soap:address location="http://localhost:9000/helloWorld" /> </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>



©2010 - Cesare Pautasso                                                                                                                       70
WSDL as an IDL
       WSDL can be best understood when we approach it as an XML version of
        an IDL that also covers the aspects related to integration through the
        Internet and the added complexity of Web services
       An IDL in conventional middleware and enterprise application integration
        platforms has several purposes:
          description of the interfaces of the services provided (e.g., RPC)
          serve as an intermediate representation for bridging heterogeneity by
            providing a mapping of the native data types to the intermediate
            representation associated to the IDL in question
          serve as the basis for development through an IDL compiler that
            produces stubs and libraries that can be use to develop the
            application
       A conventional IDL does not include information such as:
          location of the service (implicit in the platform and found through
            static or dynamic binding)
          different bindings (typically an IDL is bound to a transport protocol)
          sets of operations (since an interface defines a single access point
            and there is no such a thing as a sequence of operations involved in
            the same service)
©2010 - Cesare Pautasso                                                             71
What is UDDI?
       Universal Description, Discovery       Originally, UDDI was conceived as an
        and Integration                         “Universal Business Registry” similar
       Services offered through the            to search engines (e.g., Google) which
        Internet to other companies             will be used as the main mechanism
        require much more information           to find electronic services provided by
        than a typical middleware service       companies worldwide. This triggered
       In many middleware and EAI              a significant amount of activity
        efforts, the same people develop        around very advanced and complex
        the service and the application         scenarios (Semantic Web, dynamic
        using the service                       binding to partners, automatic
       This is obviously no longer the         partner selection at runtime, etc.)
        case and, therefore, using a           Nowadays UDDI is far more pragmatic
        service requires much more              and recognizes the realities of B2B
        information than is typically           interactions: it presents itself as
        available for internal company          name and directory service (i.e.,
        services                                binder in RPC) applied to Web
       This documentation has three            services and mostly used in
        aspects to it:                          constrained environments (internally
          basic information                    within a company or among a
                                                predefined set of business partners)
          categorization
          technical data
©2010 - Cesare Pautasso                                                                   72
WS Technology Design Space
                              Representations
          WS-*
           REST                         Many Message Formats
                                        (XML, JSON, ATOM, HTML, CSV, …)



                                        1 Message Format (SOAP)
                   1 Communication
                   “Endpoint”
                                 4 HTTP Verbs
  Many URIs                      (GET, PUT, POST, DELETE)
                                     Many Operations (WSDL)
                                                                  Interface
Resources

©2010 - Cesare Pautasso                                                   73
Architectural Decision Modeling
                                      Design Issue



                                          Architecture Alternatives


                   1 Communication
                   “Endpoint”
                                 4 HTTP Verbs
  Many URIs                      (GET, PUT, POST, DELETE)

                                             Many Operations (WSDL)

©2010 - Cesare Pautasso                                               74
REST Richardson Maturity Model
   0. HTTP as an RPC Protocol
        (Tunnel POST+POX or POST+JSON)
   I. Multiple Resource URIs
        (Fine-Grained Global Addressability)
   II. Uniform HTTP Verbs
        (Contract Standardization)
   III. Hypermedia
        (Protocol Discoverability)
        (Decentralized Service Discovery by
        Referral)


©2009-2010 - Cesare Pautasso, Erik Wilde       75
RESTful Web Service Example

                                              Web Server
            HTTP Client                                           Database
                                           Application Server
         (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

©2009-2010 - Cesare Pautasso, Erik Wilde                                     76
WS-* Service Example
(from REST perspective)
                                              Web Server         Web Service
            HTTP Client
                                           Application Server   Implementation
           (Stub Object)


                   POST /soap/endpoint
                                                      return getBook(222)

                   POST /soap/endpoint
                                                       return new Order()

                   POST /soap/endpoint
                                                     order.setCustomer(x)



©2009-2010 - Cesare Pautasso, Erik Wilde                                         77
Protocol Layering
      “The Web is the universe of          “The Web is the universal
      globally accessible information”     (tunneling) transport for
      (Tim Berners Lee)                    messages”
        Applications should publish         Applications get a chance
         their data on the Web                 to interact but they remain
         (through URI)                         “outside of the Web”


        AtomPub JSON POX …                         SOAP (WS-*)

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

            (Many) Resource URI                  1 Endpoint URI

                        Application                Application

©2009-2010 - Cesare Pautasso, Erik Wilde                                     78
Is REST really used?
                                                      Atom, 2%
                                                       Gdata, 1%
                                       XMPP, 0%
                                                           JavaScript, 6%
                                     XML-RPC, 2%
                          SOAP, 17%                         JSON-RPC, 0%


                                SMS,                                        2000+ APIs
                                 0%
                           RSS, 1%
                                                                   ProgrammableWeb.com
                                                                            Summer 2010
                                                   REST,
                                                   71%

©2010 - Cesare Pautasso                                                                   79
Today’s plan

            Software                 The Web
           Architecture               (REST)

                          SOA & WS

          Components             Connectors
           vs. Services        and Integration
©2010 - Cesare Pautasso                          80
Looking Back


                                                          You don’t
        What is a          What is                         have a
        Web site?                             Why do        Web
                          your Web           you need a
                            site?                           API?!?
                                              Web API?




                                                                      From Tomas Vitvar, Mashups 2010 Keynote
           The                        Web
          WWW                        Services
           1992                       2000                 2010



©2010 - Cesare Pautasso                                               81
Richard N. Taylor,
            Nenad Medvidovic,
              Eric M. Dashofy,
         Software Architecture:
      Foundations, Theory and
                      Practice,
                   John-Wiley,
                January 2009,
       ISBN 9780470167748




©2010 - Cesare Pautasso           82
Gustavo Alonso,
                          Fabio Casati,
                          Harumi Kuno, Vijay
                          Machiraju,
                          Web Services:
                          Concepts, Architectures,
                          and Applications
                          Springer,
                          September 2004,
                          ISBN 3-540-44008-9




©2010 - Cesare Pautasso                              83
More References
  Christopher Alexander, The Timeless Way of Building, Oxford University
     Press 1979
  Grady Booch, Handbook of Software Architecture,
     http://booch.com/architecture/
  Stewart Brand, How Buildings Learn, Penguin 1987
  Thomas Erl, SOA Principles of Service Design, Prentice Hall, 200
  Thomas Erl, SOA Design Patterns, Prentice Hall, 2009
  Ian Gordon, Essential Software Architecture, Springer 2004
  Nicolai M. Josuttis, SOA in Practice: The Art of Distributed System
     Design, O’Reilly, 2007
  Cesare Pautasso, Olaf Zimmermann, Frank Leymann, RESTful web
     services vs. "big"' web services: making the right architectural
     decision, WWW 2008
  Eberhardt Rechtin, Systems Architecting: Creating and Building Complex
     Systems, Prentice Hall 1991
  Process Support for More Than Web Services: www.jopera.org

©2010 - Cesare Pautasso                                                    84
©2010 Cesare Pautasso   85

More Related Content

What's hot

3.1 tuple relational_calculus
3.1 tuple relational_calculus3.1 tuple relational_calculus
3.1 tuple relational_calculusUtkarsh De
 
Protecting the Network From Yourself Using Defense in Depth
Protecting the Network From Yourself Using Defense in DepthProtecting the Network From Yourself Using Defense in Depth
Protecting the Network From Yourself Using Defense in DepthPECB
 
Presentation on dbms(relational calculus)
Presentation on dbms(relational calculus)Presentation on dbms(relational calculus)
Presentation on dbms(relational calculus)yourbookworldanil
 
Overview of computing paradigm
Overview of computing paradigmOverview of computing paradigm
Overview of computing paradigmRipal Ranpara
 
Firewall & its configurations
Firewall & its configurationsFirewall & its configurations
Firewall & its configurationsStudent
 
Transaction management DBMS
Transaction  management DBMSTransaction  management DBMS
Transaction management DBMSMegha Patel
 
Chapter-7 Relational Calculus
Chapter-7 Relational CalculusChapter-7 Relational Calculus
Chapter-7 Relational CalculusKunal Anand
 
Networking Technologies Basic's complete notes
Networking Technologies Basic's complete notesNetworking Technologies Basic's complete notes
Networking Technologies Basic's complete notesIndrajaMeghavathula
 
Concurrency Control Techniques
Concurrency Control TechniquesConcurrency Control Techniques
Concurrency Control TechniquesRaj vardhan
 
Control Structures in Visual Basic
Control Structures in  Visual BasicControl Structures in  Visual Basic
Control Structures in Visual BasicTushar Jain
 
Virtual private networks (vpn)
Virtual private networks (vpn)Virtual private networks (vpn)
Virtual private networks (vpn)Avinash Nath
 
ARTIFICIAL INTELLIGENCE
ARTIFICIAL INTELLIGENCEARTIFICIAL INTELLIGENCE
ARTIFICIAL INTELLIGENCESabique Khan
 
Virtualization security
Virtualization securityVirtualization security
Virtualization securityAhmed Nour
 
Lab practice 1 configuring basic routing and switching (with answer)
Lab practice 1   configuring basic routing and switching (with answer) Lab practice 1   configuring basic routing and switching (with answer)
Lab practice 1 configuring basic routing and switching (with answer) Arz Sy
 

What's hot (20)

3.1 tuple relational_calculus
3.1 tuple relational_calculus3.1 tuple relational_calculus
3.1 tuple relational_calculus
 
Protecting the Network From Yourself Using Defense in Depth
Protecting the Network From Yourself Using Defense in DepthProtecting the Network From Yourself Using Defense in Depth
Protecting the Network From Yourself Using Defense in Depth
 
Presentation on dbms(relational calculus)
Presentation on dbms(relational calculus)Presentation on dbms(relational calculus)
Presentation on dbms(relational calculus)
 
Message passing in Distributed Computing Systems
Message passing in Distributed Computing SystemsMessage passing in Distributed Computing Systems
Message passing in Distributed Computing Systems
 
Overview of computing paradigm
Overview of computing paradigmOverview of computing paradigm
Overview of computing paradigm
 
Firewall & its configurations
Firewall & its configurationsFirewall & its configurations
Firewall & its configurations
 
Transaction management DBMS
Transaction  management DBMSTransaction  management DBMS
Transaction management DBMS
 
Chapter-7 Relational Calculus
Chapter-7 Relational CalculusChapter-7 Relational Calculus
Chapter-7 Relational Calculus
 
Networking Technologies Basic's complete notes
Networking Technologies Basic's complete notesNetworking Technologies Basic's complete notes
Networking Technologies Basic's complete notes
 
Concurrency Control Techniques
Concurrency Control TechniquesConcurrency Control Techniques
Concurrency Control Techniques
 
Relational Calculus
Relational CalculusRelational Calculus
Relational Calculus
 
Csma
CsmaCsma
Csma
 
Control Structures in Visual Basic
Control Structures in  Visual BasicControl Structures in  Visual Basic
Control Structures in Visual Basic
 
Virtual private networks (vpn)
Virtual private networks (vpn)Virtual private networks (vpn)
Virtual private networks (vpn)
 
ARTIFICIAL INTELLIGENCE
ARTIFICIAL INTELLIGENCEARTIFICIAL INTELLIGENCE
ARTIFICIAL INTELLIGENCE
 
Concurrency control
Concurrency controlConcurrency control
Concurrency control
 
Telnet ppt
Telnet pptTelnet ppt
Telnet ppt
 
Virtualization security
Virtualization securityVirtualization security
Virtualization security
 
Lab practice 1 configuring basic routing and switching (with answer)
Lab practice 1   configuring basic routing and switching (with answer) Lab practice 1   configuring basic routing and switching (with answer)
Lab practice 1 configuring basic routing and switching (with answer)
 
Virtual LAN
Virtual LANVirtual LAN
Virtual LAN
 

Viewers also liked

SOA - From Webservices to APIs
SOA - From Webservices to APIsSOA - From Webservices to APIs
SOA - From Webservices to APIsHolger Reinhardt
 
Learn REST in 18 Slides
Learn REST in 18 SlidesLearn REST in 18 Slides
Learn REST in 18 SlidesSuraj Gupta
 
Introduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIvano Malavolta
 
External Data Access with jQuery
External Data Access with jQueryExternal Data Access with jQuery
External Data Access with jQueryDoncho Minkov
 
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Martin Necasky
 
Basic introduction to SOA
Basic introduction to SOABasic introduction to SOA
Basic introduction to SOAJoaquin Rincon
 
Monetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital AssetsMonetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital AssetsApigee | Google Cloud
 
JSON: The Basics
JSON: The BasicsJSON: The Basics
JSON: The BasicsJeff Fox
 
Rest & RESTful WebServices
Rest & RESTful WebServicesRest & RESTful WebServices
Rest & RESTful WebServicesPrateek Tandon
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Peter R. Egli
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding RESTNitin Pande
 
Real World API Business Models That Worked
Real World API Business Models That WorkedReal World API Business Models That Worked
Real World API Business Models That WorkedProgrammableWeb
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented ArchitectureRobert Sim
 
API Frenzy: API Strategy 101
API Frenzy: API Strategy 101API Frenzy: API Strategy 101
API Frenzy: API Strategy 101Akana
 

Viewers also liked (20)

SOA - From Webservices to APIs
SOA - From Webservices to APIsSOA - From Webservices to APIs
SOA - From Webservices to APIs
 
Web services
Web servicesWeb services
Web services
 
Web services
Web servicesWeb services
Web services
 
Learn REST in 18 Slides
Learn REST in 18 SlidesLearn REST in 18 Slides
Learn REST in 18 Slides
 
Introduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTURE
 
REST Presentation
REST PresentationREST Presentation
REST Presentation
 
External Data Access with jQuery
External Data Access with jQueryExternal Data Access with jQuery
External Data Access with jQuery
 
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)
 
Web Services
Web ServicesWeb Services
Web Services
 
Basic introduction to SOA
Basic introduction to SOABasic introduction to SOA
Basic introduction to SOA
 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
 
Monetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital AssetsMonetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital Assets
 
JSON: The Basics
JSON: The BasicsJSON: The Basics
JSON: The Basics
 
Rest & RESTful WebServices
Rest & RESTful WebServicesRest & RESTful WebServices
Rest & RESTful WebServices
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
Real World API Business Models That Worked
Real World API Business Models That WorkedReal World API Business Models That Worked
Real World API Business Models That Worked
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecture
 
API Frenzy: API Strategy 101
API Frenzy: API Strategy 101API Frenzy: API Strategy 101
API Frenzy: API Strategy 101
 

Similar to Service Oriented Architectures and Web Services Prof. Cesare Pautasso

open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?
open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?
open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?Francois Letellier
 
Plutext Alfresco Tech Talk
Plutext Alfresco Tech TalkPlutext Alfresco Tech Talk
Plutext Alfresco Tech Talkquyong2000
 
Jeremy Spring Source Blaze Ds
Jeremy Spring Source Blaze DsJeremy Spring Source Blaze Ds
Jeremy Spring Source Blaze DsSkills Matter
 
Foreman presentation at NYC puppet users
Foreman presentation at NYC puppet usersForeman presentation at NYC puppet users
Foreman presentation at NYC puppet usersohadlevy
 
Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010Cominvent AS
 
Cisco SOA appliance positioning & strategy paper
Cisco SOA appliance positioning & strategy paperCisco SOA appliance positioning & strategy paper
Cisco SOA appliance positioning & strategy paperLakshmana Kattula
 
PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?Tonny Madsen
 
Spring integration integration, but not only...
Spring integration integration, but not only...Spring integration integration, but not only...
Spring integration integration, but not only...Artem Bilan
 

Similar to Service Oriented Architectures and Web Services Prof. Cesare Pautasso (11)

open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?
open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?
open innovation : Comment l'ouverture peut-être un atout pour l'innovation ?
 
Plutext Alfresco Tech Talk
Plutext Alfresco Tech TalkPlutext Alfresco Tech Talk
Plutext Alfresco Tech Talk
 
Jeremy Spring Source Blaze Ds
Jeremy Spring Source Blaze DsJeremy Spring Source Blaze Ds
Jeremy Spring Source Blaze Ds
 
VO Course 04: VO architecture
VO Course 04: VO architectureVO Course 04: VO architecture
VO Course 04: VO architecture
 
Foreman presentation at NYC puppet users
Foreman presentation at NYC puppet usersForeman presentation at NYC puppet users
Foreman presentation at NYC puppet users
 
Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010
 
Cisco SOA appliance positioning & strategy paper
Cisco SOA appliance positioning & strategy paperCisco SOA appliance positioning & strategy paper
Cisco SOA appliance positioning & strategy paper
 
PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?
 
Semantic Web Services Framework for Computational Interoperability
Semantic Web Services Framework for Computational InteroperabilitySemantic Web Services Framework for Computational Interoperability
Semantic Web Services Framework for Computational Interoperability
 
The Eclipse SOA Initiative
The Eclipse SOA InitiativeThe Eclipse SOA Initiative
The Eclipse SOA Initiative
 
Spring integration integration, but not only...
Spring integration integration, but not only...Spring integration integration, but not only...
Spring integration integration, but not only...
 

More from Cesare Pautasso

Beautiful APIs - SOSE2021 Keynote
Beautiful APIs - SOSE2021 KeynoteBeautiful APIs - SOSE2021 Keynote
Beautiful APIs - SOSE2021 KeynoteCesare Pautasso
 
How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?Cesare Pautasso
 
Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?Cesare Pautasso
 
Disaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC TheoremDisaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC TheoremCesare Pautasso
 
The Blockchain as a Software Connector
The Blockchain as a Software ConnectorThe Blockchain as a Software Connector
The Blockchain as a Software ConnectorCesare Pautasso
 
Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...Cesare Pautasso
 
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...Cesare Pautasso
 
Push-Enabling RESTful Business Processes
Push-Enabling RESTful Business ProcessesPush-Enabling RESTful Business Processes
Push-Enabling RESTful Business ProcessesCesare Pautasso
 
Atomic Transactions for the REST of us
Atomic Transactions for the REST of usAtomic Transactions for the REST of us
Atomic Transactions for the REST of usCesare Pautasso
 
Exploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process ExecutionExploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process ExecutionCesare Pautasso
 
Real-time Mashups di Web Service Geografici
Real-time Mashups di Web Service GeograficiReal-time Mashups di Web Service Geografici
Real-time Mashups di Web Service GeograficiCesare Pautasso
 
Towards Scalable Service Composition on Multicores
Towards Scalable Service Composition on MulticoresTowards Scalable Service Composition on Multicores
Towards Scalable Service Composition on MulticoresCesare Pautasso
 
WS-* vs. RESTful Services
WS-* vs. RESTful ServicesWS-* vs. RESTful Services
WS-* vs. RESTful ServicesCesare Pautasso
 
RESTful Service Composition with JOpera
RESTful Service Composition with JOperaRESTful Service Composition with JOpera
RESTful Service Composition with JOperaCesare Pautasso
 
USI SCUBE Associate Member
USI SCUBE Associate MemberUSI SCUBE Associate Member
USI SCUBE Associate MemberCesare Pautasso
 
Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)Cesare Pautasso
 

More from Cesare Pautasso (20)

Beautiful APIs - SOSE2021 Keynote
Beautiful APIs - SOSE2021 KeynoteBeautiful APIs - SOSE2021 Keynote
Beautiful APIs - SOSE2021 Keynote
 
How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?
 
Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?
 
Disaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC TheoremDisaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC Theorem
 
The Blockchain as a Software Connector
The Blockchain as a Software ConnectorThe Blockchain as a Software Connector
The Blockchain as a Software Connector
 
Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...
 
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
 
Push-Enabling RESTful Business Processes
Push-Enabling RESTful Business ProcessesPush-Enabling RESTful Business Processes
Push-Enabling RESTful Business Processes
 
BPMN for REST
BPMN for RESTBPMN for REST
BPMN for REST
 
SOA with REST
SOA with RESTSOA with REST
SOA with REST
 
Atomic Transactions for the REST of us
Atomic Transactions for the REST of usAtomic Transactions for the REST of us
Atomic Transactions for the REST of us
 
Exploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process ExecutionExploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process Execution
 
Real-time Mashups di Web Service Geografici
Real-time Mashups di Web Service GeograficiReal-time Mashups di Web Service Geografici
Real-time Mashups di Web Service Geografici
 
Towards Scalable Service Composition on Multicores
Towards Scalable Service Composition on MulticoresTowards Scalable Service Composition on Multicores
Towards Scalable Service Composition on Multicores
 
BPM with REST
BPM with RESTBPM with REST
BPM with REST
 
WS-* vs. RESTful Services
WS-* vs. RESTful ServicesWS-* vs. RESTful Services
WS-* vs. RESTful Services
 
RESTful Service Composition with JOpera
RESTful Service Composition with JOperaRESTful Service Composition with JOpera
RESTful Service Composition with JOpera
 
SOA2010 SOA with REST
SOA2010 SOA with RESTSOA2010 SOA with REST
SOA2010 SOA with REST
 
USI SCUBE Associate Member
USI SCUBE Associate MemberUSI SCUBE Associate Member
USI SCUBE Associate Member
 
Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)
 

Recently uploaded

How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
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
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 

Recently uploaded (20)

How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
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
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 

Service Oriented Architectures and Web Services Prof. Cesare Pautasso

  • 1. Service Oriented Architectures and Web Services Prof. Cesare Pautasso Faculty of Informatics University of Lugano c.pautasso@ieee.org http://www.pautasso.info @pautasso
  • 2. Prof. Cesare Pautasso  Ph.D. at ETH Zürich (2004)  Post-Doc at ETH Zürich in the Systems (IKS) Group  Researcher at IBM Zurich Research Lab (2007)  Assistant Professor at the new Faculty of Informatics, University of Lugano (USI), Switzerland (since September 2007)  Research Interests:  Software Architecture and Software Composition  Business Process Management  Service Oriented Architectures and Web Services  Web 2.0 Mashups and RESTful Web Services  Autonomic Computing  Grid Computing (Scientific Workflow Management)  More Information: http://www.pautasso.info/  Follow me on: http://twitter.com/pautasso/ ©2010 - Cesare Pautasso 2
  • 3. Marcin Nowak Dr. Achille Peternier Daniele Bonetta Saeed Aghaee
  • 4. Master Software Design III Software Design and Evolution II Software Architecture and Design I Software Engineering ©2010 - Cesare Pautasso 4
  • 5. Once upon a time ©2010 - Cesare Pautasso 5
  • 6. Once upon a time Software used to come in boxes ©2010 - Cesare Pautasso 6
  • 7. Once upon a time Today, software runs in the clouds ©2010 - Cesare Pautasso 7
  • 8. Once upon a time Cloud Operating System? ©2010 - Cesare Pautasso 8
  • 9. Once upon a time Cloud Operating System? ©2010 - Cesare Pautasso 9
  • 10. Today’s plan Software The Web Architecture (REST) SOA & WS Components Connectors vs. Services and Integration ©2010 - Cesare Pautasso 10
  • 11. Context  Databases  Networking How to build applications  Software Engineering from scratch  Programming Languages  Service Oriented Architectures How to reuse and compose two or more existing applications  Web Services ©2010 - Cesare Pautasso 11
  • 12. What is the problem? Operations Vermarktung Angebotserstellung& Leistungserbringung Fakturierung Leistungsbereitstellung (Assurance) (Billing) (Fulfillment) OTTO, Windows , Lotus Notes SIF MQ ORCA OMS extern FX CORBA MQ PeP LSM Insight esBill PA, zLinux PA FTP TTS ARS TOPM SCHON Notes CORBA ESW OPM MERS FTP CORBA FTP FTP FTP CORBA CSS TIS IPP+ FTP FTP Tuco FTP BASKAI FX MIDAS TIS CORBA Direx Peris SAP BDM TTS DWH BW extern FX BSK ES Archiv AD ©2010 - Cesare Pautasso 12
  • 13. Integration (by hand…) ©2010 - Cesare Pautasso 13
  • 14. Once upon a hand…) Integration (by time ©2010 - Cesare Pautasso 14
  • 15. Integration (…with SOA) ©2010 - Cesare Pautasso 15
  • 16. Integration Example ©2010 - Cesare Pautasso 16
  • 17. Integration (… with JOpera) ©2009-2010 - Cesare Pautasso, Erik Wilde 17
  • 18. De Architectura firmitatis utilitatis venustatis Durability: the building should last for a long time without falling down on the people inside it Utility: the building should be useful for the people living in it Beauty: the building should look good and raise the spirits of its inhabitants Vitruvio, De Architectura, 23BC
  • 19. Software Architecture As the size and complexity of a software system increase, the principal design decisions and the global structure of a system become more important than the selection of specific algorithms and data structures in order to determine its quality. ©2010 - Cesare Pautasso 19
  • 20. Large Software Project  Lines of code: 50 Million  Number of developers: 2000  Time to compile: 24 hours  Time to ship: 5 years (from previous release) 60 Millions of LOC 40 20 0 1990 1995 2000 2005 2010 ©2010 - Cesare Pautasso 20
  • 21. Abstraction Layers Application Operating System Hardware ©2010 - Cesare Pautasso 21
  • 22. Software as a Service Application Platform as a Operating System Service Infrastructure as a Service Hardware ©2010 - Cesare Pautasso 22
  • 23. Layered Architectural Style Infrastructure as a Service Hardware
  • 24. Platform as a Operating System Service Infrastructure as a Service Hardware
  • 25. Component  Reusable unit of composition Made out of smaller components Can be composed into larger systems ©2010 - Cesare Pautasso 25
  • 26. Connector  Generic enabler of composition Plug into matching component ports Transfer signals (data, control) between ports ©2010 - Cesare Pautasso 26
  • 27. New Abstraction Levels Web Services Services XML REST Components J2EE .NET Eclipse Objects C++ Java C# ©2010 - Cesare Pautasso 27
  • 28. Component vs. Service: Example Map Drawing Component Map getMap(lat, long, zoom)  (lat, long) centers the map on any location on the planet Earth and zoom can show details up to 1m precision  What is the “size” of this component?  How to deliver the component to customers so that it can be reused in their own applications? ©2010 - Cesare Pautasso 28
  • 29. Component vs. Service: Business Model  How to sell a component?  How to sell a service?  Component developers  Service providers can charge on a per- charge on a per-call basis: deployment basis: each time an existing whenever a new client client interacts with a downloads the component. service by exchanging a  Component upgrades may new message. be sold separately to  Service providers can generate a revenue stream charge a monthly/yearly  Components can be flat access fee licensed to be redistributed  Services can be made within larger systems and available for free and developers can demand providers can support royalties from the revenue them with advertising of the final product revenue ©2010 - Cesare Pautasso 29
  • 30. IT as a “manufacturing” industry (ship software components) IT as a “service” industry (publish software on the Web) ©2010 - Cesare Pautasso 30
  • 31. Correctness & Verification function f(x) { … while(true) return y; { } … } Will it terminate? Will it run forever? ©2010 - Cesare Pautasso 31
  • 32. Service Lifecycle Change (Functional Refactor Non-Functional) Design System Architecture Run, Define Manage, Interface Operate Contracts Deploy Build Test Services ©2009 - Cesare Pautasso 32
  • 33. More than 500 million active users 30 billion pieces of content 20 million applications installed every day Launched February 2004 ©2010 - Cesare Pautasso 33
  • 34. Around the year 2010…  Google answers 5 billion API queries every day  Amazon S3 stores over 100 billion objects  75% of all the traffic (3 billion calls/day) of Twitter goes through its API From Tomas Vitvar, Mashups 2010 Keynote ©2010 - Cesare Pautasso 34
  • 35. Component vs. Service: Technology  To be used a component must:  To be used a service must:  be packaged to be deployed  be published on the Web as part of some larger (once) application system  advertise its description and  fit with the existing framework location to potential clients used to develop the system across the Web so that they  There are many component can access it using standard frameworks available for building protocols distributed systems (e.g., J2EE,  Like components, services can be DCOM, .NET, CORBA). reused, composed into larger  The problem is: they are not systems and (of course) they can compatible (as an exercise try to be found on the Web. use a .NET assembly to make an  Unlike components, services do Eclipse plug-in and see what not have to be downloaded and happens) deployed in order to be used by clients. Instead, a client may discover and access their functionality by using standard protocols (WSDL, SOAP, UDDI) based on XML standards. ©2010 - Cesare Pautasso 35
  • 36. What is Integration? Application 1 Application 2 Display Logic State + Display Logic State =?  New applications are built out of the composition of existing ones  Prefer to reuse, extend, and recombine existing systems as opposed to develop new ones from scratch ©2010 - Cesare Pautasso 36
  • 37. Why integration matters  Useful information systems evolve over time by growing in size and by incorporating functionality of existing standalone systems. Applications originally intended to operate separately, are required to interoperate with others later on.  Technology change affects all layers, legacy does not go away so easily.  The architecture of the enterprise information system depends on constraints related to the technology but also to the organization.  In the case of B2B, each company owns its information system and will not open it up more than strictly necessary as it is part of their competitive advantage. For example, not all business processes are going to be shared, as business processes are mostly kept secret.  Within an enterprise, each department may have its own IT infrastructure, systems and databases which are maintained independently. Integrating them may bring additional value through cost reduction to the company.  Mergers, acquisitions and spin-offs leave a long lasting trace in the information systems of the corresponding companies ©2010 - Cesare Pautasso 37
  • 38. Challenges of Integration  Many problems to be addressed in Enterprise Application Integration stem from having to integrate standalone applications which have been developed independently, operate autonomously, and were not originally indended to be integrated with one another.  Heterogeneous – each application implements its own data model. Concepts may be shared, but representation mismatches are to be expected. Mappings and transformations are required.  Autonomous – applications update their state independently without coordinating with each other. The systems to be integrated are maintained independently and upgraded at different times.  Distributed – in the worst case, every application runs on a completely separate environment, e.g., database storage is not shared among applications. Message-based communication through the network is the only possibility to exchange information. This part is taken from C. Bussler, B2B Integration, Springer, 2004 ©2010 - Cesare Pautasso 38
  • 39. Integration is bottom up How to mix software not designed to be integrated? ©2010 - Cesare Pautasso 39
  • 40. Integration Techniques  Given two (or more)  Examples: existing applications,  Manual Data Transfer how can you compose  Manual (with Copy & Paste) them?  File based integration (Hot Folder)  It depends on whether  API extraction and publishing you can change the  Command line scripting applications to make  Wrap existing software them talk together.  Screen Scraping  How much integration  Data transformation and conversion can be done  Message based integration automatically?  Point to Point  Centralized, Peer to Peer  Mashup ©2010 - Cesare Pautasso 40
  • 41. Layers as integration points Integration at the presentation layer (screen scraping) is always possible, but the least recommended. UI Well designed applications Application have an API It is also possible that we can call to bypass the directly. application and directly access DB its database ©2010 - Cesare Pautasso 41
  • 43. RPC Call Remote Procedure Call  Procedure/Function Calls are the easiest to program with connector.  They take a basic programming language construct and make it available across the network (Remote Procedure Call) to connect distributed components  Remote calls are often used within the client/server architectural style, but call-backs are also used in event-oriented styles for notifications ©2010 - Cesare Pautasso 43
  • 44. Hot Folder Write Copy File Transfer (Hot Folder) Watch  Transferring files does not require to modify components Read  A component writes a file, which is then copied on a different host, and fed as input into a different component  The transfers can be batched with a certain frequency ©2010 - Cesare Pautasso 44
  • 45. Shared Database Create Read Shared Database Update  Sharing a common database does not require to modify components, if they all can Delete  support the same schema Components can communicate by creating, updating and reading entries in the database, which can safely handles the concurrency ©2010 - Cesare Pautasso 45
  • 46. Bus Publish Subscribe Message Bus  A message bus connects a variable number of components, which are decoupled from one another.  Components act as message sources by publishing messages into the bus; Components act as message sinks by subscribing to message types (or properties based on the actual content)  The bus can route, queue, buffer, transform and deliver messages to one or more recipients  The “enterprise” service bus is used to implement the SOA style ©2010 - Cesare Pautasso 46
  • 47. Web (RESTful Web services) Get Put Delete Post Web  The Web is the connector used in the REST (Representational State Transfer) architectural style  Components may reliably transfer state among themselves using the GET, PUT, DELETE primitives. POST is used for unsafe interactions. ©2010 - Cesare Pautasso 47
  • 48. Software Connectors for SOA RPC ESB WS-* WWW REST ©2010 - Cesare Pautasso 48
  • 49. Interface Description Languages (IDL) WSDL CORBA 1.0 DCOM RPC IDL MIDL IDL Java Interfaces ©2010 - Cesare Pautasso 49
  • 50. Component Interoperability  Due to lack of interoperability, it is not always possible to build a distributed system using heterogeneous components Enterprise Java DCOM .NET Beans Objects Assemblies Web Legacy CORBA Services COBOL Objects Programs ©2010 - Cesare Pautasso 50
  • 51. Web Services for Interoperability  If the components are published as Web services, they can interoperate across different component frameworks. (Interoperability through Wrapping) Java DCOM .NET Bean Object Assembly Web Legacy CORBA COBOL Object Service Program ©2010 - Cesare Pautasso 51
  • 52. Interoperability Component Adapter Adapter Component (Platform A) (Platform A) (Platform B) (PlatformB) Components of different platforms can interoperate through adapters mapping the internal message format to a common (standard) representation ©2010 - Cesare Pautasso 52
  • 53. Is this a Web Service? ©2010 - Cesare Pautasso 53
  • 54. Web Sites (1992) Web HTML Web Browser HTTP Server WS-* Web Services (2000) SOAP WSDL Client XML Server (HTTP) ©2010 - Cesare Pautasso 54
  • 55. RESTful Web Services (2007) PO-XML ATOM JSON WADL Web Client HTTP Server WS-* Web Services (2000) SOAP WSDL Client XML Server (HTTP) ©2010 - Cesare Pautasso 55
  • 56. Extending the Web with Services Web Browser WS Client HTML/HTTP SOAP, XML or JSON/HTTP Web Server add your Java ASP CGI PHP favourite Servlet .NET here Back-end Systems and Databases ©2010 - Cesare Pautasso 56
  • 57. Defining Web Services  W3C defined Web services in the early 2000s as: a software application identified by a URI, whose interfaces and bindings are capable of being defined, described and discovered as XML artifacts. A Web service supports direct interactions with other software agents using XML-based messages exchanged via the Internet ©2010 - Cesare Pautasso 57
  • 58. Properties of Web Services  The W3C definition emphasizes different aspects:  In order to be accessed by clients, a Web Service should be defined, described and discovered.  XML is the foundation for all standards that are going to be used (SOAP, WSDL, UDDI) to do so.  Web services are intended to be used as components that can be readily integrated into more complex distributed applications.  Web services are meant for software based consumption (clients are programs)  Web-based applications are meant to be used by humans equipped with a WWW browser (clients are users) ©2010 - Cesare Pautasso 58
  • 59. Web Services and SOA  Web Services can also be seen as the technology used to implement service oriented architectures (SOA)  SOA are about building distributed applications out of the interconnection of loosely coupled, heterogeneous services.  To do so, interoperability is paramount and Web services are meant to deliver it.  In a service oriented architecture services are:  Interoperable – Services seamlessly work with one another and can be easily composed into complex applications  Heterogeneous – Standard service interfaces virtualize the underlying mechanisms and protocols of the middleware platform  Distributed – Services can (in principle) be located across the Web  Autonomous – Services belong to different organizations and may evolve independently of each other  Loosely Coupled – Services should make very few assumptions about one another so that they can be easily moved, replaced and even interact without being available at the same time. ©2010 - Cesare Pautasso 59
  • 60. Web Services Architecture  A popular interpretation of Web services is based on IBM’s Web service architecture based on three elements: 1. Service requester: The potential user of a service (the client) 2. Service provider: The entity that implements the service and offers to carry it out on behalf of the requester (the server) 3. Service registry: A place where available services are listed and that allows providers to advertise their services and requesters to lookup and query for services ©2010 - Cesare Pautasso 60
  • 61. Web Service Architecture Service Service Service Requester Registry Provider Service Description 1. Publish 2. Lookup 3. Invoke Clients use the Registry to lookup published service descriptions that will enable them to perform the actual service invocation with the provider ©2010 - Cesare Pautasso 61
  • 62. Main Web Services Standards  The Web service architecture proposed by IBM is based on UDDI two key concepts:  architecture of existing synchronous middleware platforms  current specifications of SOAP, UDDI and WSDL  The architecture has a remarkable client/server flavor  It reflects only what can be SOAP done with:  SOAP (Simple Object Access Protocol)  UDDI (Universal Description and Discovery Protocol)  WSDL (Web Services WSDL Description Language) ©2010 - Cesare Pautasso 62
  • 63. What is SOAP?  The W3C started working on SOAP in 1999. The current W3C recommendation is Version 1.2  Originally: Simple Object Access Protocol  SOAP covers the following main areas:  Message construct: A message format for one-way communication describing how a message can be packed into an XML document  Processing model: rules for processing a SOAP message and a simple classification of the entities involved in processing a SOAP message. Which parts of the messages should be read by whom and how to react in case the content is not understood  Extensibility Model: How the basic message construct can be extended with application specific constructs  Protocol binding framework: Allows SOAP messages to be transported using different protocols (HTTP, SMTP, …) • A concrete binding for HTTP  Conventions on how to turn an RPC call into a SOAP message and back as well as how to implement the RPC style of interaction ©2010 - Cesare Pautasso 63
  • 64. HTTP Request SOAP RPC SOAP Envelope SOAP header Transactional context SOAP Body Name of Procedure Input parameter 1 SERVICE REQUESTER SERVICE PROVIDER Input parameter 2 Procedure RPC call HTTP engine HTTP engine SOAP SOAP engine engine HTTP Response SOAP Envelope SOAP header Transactional context SOAP Body Return parameter ©2010 - Cesare Pautasso 64
  • 65. SOAP Request Response XML <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:sayHi xmlns:ns2="http://test.inf.usi.ch/"> <text>World</text> </ns2:sayHi> </soap:Body> </soap:Envelope> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:sayHiResponse xmlns:ns2="http://test.inf.usi.ch/"> <result>Hello World</result> </ns2:sayHiResponse> </soap:Body> </soap:Envelope> ©2010 - Cesare Pautasso 65
  • 66. What is WSDL?  The Web Services Description Language specification is in version 1.1 (March 2001) and currently under revision (v2.0 is in the candidate recommendation stage, Jan 2006)  WSDL 1.1 discusses how to describe the different parts that comprise a Web service interface  the type system used to describe the service data model (XML Schema)  the messages involved in the interaction with the service  the individual operations composed of 4 possible message exchange patterns  the sets of operations that constitute a service  the mapping to a transport protocol for the messages  the location where the service provider resides  groups of locations that can be used to access the same service  It also includes specification indicating how to bind WSDL to the SOAP, HTTP (POST/GET) and MIME protocols ©2010 - Cesare Pautasso 66
  • 67. Elements of WSDL (1.1) WSDL document Abstract description of the service Types (type information for the document, e.g., XML Schema) Message 1 Message 2 Message 3 Message 4 Message 5 Message 6 Operation 1 Operation 2 Operation 3 Port Type (abstract service) binding 1 binding 2 binding 3 binding 4 Concrete description of the service port 1 port 2 port 3 port 4 Service (the interface in all its available implementations) ©2010 - Cesare Pautasso 67
  • 68. Hello World WSDL <?xml version='1.0' encoding='UTF-8'?> <wsdl:definitions name="HelloWorld" targetNamespace="http://test.inf.usi.ch/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.inf.usi.ch/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xs:schema elementFormDefault="unqualified" targetNamespace="http://test.inf.usi.ch/" version="1.0" xmlns:tns="http://test.inf.usi.ch/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHi" type="tns:sayHi" /> <xs:element name="sayHiResponse" type="tns:sayHiResponse" /> <xs:complexType name="sayHi"> <xs:sequence> <xs:element minOccurs="0" name="text" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="sayHiResponse"> <xs:sequence> <xs:element minOccurs="0" name="result" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="sayHiResponse"> <wsdl:part element="tns:sayHiResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="sayHi"> <wsdl:part element="tns:sayHi" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="Contract"> <wsdl:operation name="sayHi"> <wsdl:input message="tns:sayHi" name="sayHi"> </wsdl:input> <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorldSoapBinding" type="tns:Contract"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sayHi"> <soap:operation soapAction="" style="document" /> <wsdl:input name="sayHi"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="sayHiResponse"> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorld"> <wsdl:port binding="tns:HelloWorldSoapBinding" name="ServicePort"> <soap:address location="http://localhost:9000/helloWorld" /> </wsdl:port> </wsdl:service> </wsdl:definitions> ©2010 - Cesare Pautasso 68
  • 69. Hello World WSDL <?xml version='1.0' encoding='UTF-8'?> <wsdl:definitions name="HelloWorld" targetNamespace="http://test.inf.usi.ch/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.inf.usi.ch/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xs:schema elementFormDefault="unqualified" targetNamespace="http://test.inf.usi.ch/" version="1.0" xmlns:tns="http://test.inf.usi.ch/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHi" type="tns:sayHi" /> Types (type information for the document, e.g., XML Schema) <xs:element name="sayHiResponse" type="tns:sayHiResponse" /> <xs:complexType name="sayHi"> <xs:sequence> <xs:element minOccurs="0" name="text" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="sayHiResponse"> <xs:sequence> <xs:element minOccurs="0" name="result" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> Request and Response Messages <wsdl:message name="sayHiResponse"> <wsdl:part element="tns:sayHiResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="sayHi"> <wsdl:part element="tns:sayHi" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="Contract"> <wsdl:operation name="sayHi"> Abstract Port Type and Operations <wsdl:input message="tns:sayHi" name="sayHi"> </wsdl:input> <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorldSoapBinding" type="tns:Contract"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sayHi"> Concrete SOAP Binding <soap:operation soapAction="" style="document" /> <wsdl:input name="sayHi"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="sayHiResponse"> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorld"> <wsdl:port binding="tns:HelloWorldSoapBinding" name="ServicePort"> Service HTTP Endpoint <soap:address location="http://localhost:9000/helloWorld" /> </wsdl:port> </wsdl:service> </wsdl:definitions> ©2010 - Cesare Pautasso 69
  • 70. Hello World WSDL <?xml version='1.0' encoding='UTF-8'?> <wsdl:definitions name="HelloWorld" targetNamespace="http://test.inf.usi.ch/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.inf.usi.ch/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xs:schema elementFormDefault="unqualified" targetNamespace="http://test.inf.usi.ch/" version="1.0" xmlns:tns="http://test.inf.usi.ch/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHi" type="tns:sayHi" /> <xs:element name="sayHiResponse" type="tns:sayHiResponse" /> <xs:complexType name="sayHi"> <xs:sequence> <xs:element minOccurs="0" name="text" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="sayHiResponse"> <xs:sequence> <xs:element minOccurs="0" name="result" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="sayHiResponse"> <wsdl:part element="tns:sayHiResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="sayHi"> <wsdl:part element="tns:sayHi" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="Contract"> <wsdl:operation name="sayHi"> <wsdl:input message="tns:sayHi" name="sayHi"> </wsdl:input> <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorldSoapBinding" type="tns:Contract"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sayHi"> <soap:operation soapAction="" style="document" /> <wsdl:input name="sayHi"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="sayHiResponse"> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorld"> result = sayHi(text) <wsdl:port binding="tns:HelloWorldSoapBinding" name="ServicePort"> <soap:address location="http://localhost:9000/helloWorld" /> </wsdl:port> </wsdl:service> </wsdl:definitions> ©2010 - Cesare Pautasso 70
  • 71. WSDL as an IDL  WSDL can be best understood when we approach it as an XML version of an IDL that also covers the aspects related to integration through the Internet and the added complexity of Web services  An IDL in conventional middleware and enterprise application integration platforms has several purposes:  description of the interfaces of the services provided (e.g., RPC)  serve as an intermediate representation for bridging heterogeneity by providing a mapping of the native data types to the intermediate representation associated to the IDL in question  serve as the basis for development through an IDL compiler that produces stubs and libraries that can be use to develop the application  A conventional IDL does not include information such as:  location of the service (implicit in the platform and found through static or dynamic binding)  different bindings (typically an IDL is bound to a transport protocol)  sets of operations (since an interface defines a single access point and there is no such a thing as a sequence of operations involved in the same service) ©2010 - Cesare Pautasso 71
  • 72. What is UDDI?  Universal Description, Discovery  Originally, UDDI was conceived as an and Integration “Universal Business Registry” similar  Services offered through the to search engines (e.g., Google) which Internet to other companies will be used as the main mechanism require much more information to find electronic services provided by than a typical middleware service companies worldwide. This triggered  In many middleware and EAI a significant amount of activity efforts, the same people develop around very advanced and complex the service and the application scenarios (Semantic Web, dynamic using the service binding to partners, automatic  This is obviously no longer the partner selection at runtime, etc.) case and, therefore, using a  Nowadays UDDI is far more pragmatic service requires much more and recognizes the realities of B2B information than is typically interactions: it presents itself as available for internal company name and directory service (i.e., services binder in RPC) applied to Web  This documentation has three services and mostly used in aspects to it: constrained environments (internally  basic information within a company or among a predefined set of business partners)  categorization  technical data ©2010 - Cesare Pautasso 72
  • 73. WS Technology Design Space Representations WS-* REST Many Message Formats (XML, JSON, ATOM, HTML, CSV, …) 1 Message Format (SOAP) 1 Communication “Endpoint” 4 HTTP Verbs Many URIs (GET, PUT, POST, DELETE) Many Operations (WSDL) Interface Resources ©2010 - Cesare Pautasso 73
  • 74. Architectural Decision Modeling Design Issue Architecture Alternatives 1 Communication “Endpoint” 4 HTTP Verbs Many URIs (GET, PUT, POST, DELETE) Many Operations (WSDL) ©2010 - Cesare Pautasso 74
  • 75. REST Richardson Maturity Model 0. HTTP as an RPC Protocol (Tunnel POST+POX or POST+JSON) I. Multiple Resource URIs (Fine-Grained Global Addressability) II. Uniform HTTP Verbs (Contract Standardization) III. Hypermedia (Protocol Discoverability) (Decentralized Service Discovery by Referral) ©2009-2010 - Cesare Pautasso, Erik Wilde 75
  • 76. RESTful Web Service Example Web Server HTTP Client Database Application Server (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 ©2009-2010 - Cesare Pautasso, Erik Wilde 76
  • 77. WS-* Service Example (from REST perspective) Web Server Web Service HTTP Client Application Server Implementation (Stub Object) POST /soap/endpoint return getBook(222) POST /soap/endpoint return new Order() POST /soap/endpoint order.setCustomer(x) ©2009-2010 - Cesare Pautasso, Erik Wilde 77
  • 78. Protocol Layering “The Web is the universe of “The Web is the universal globally accessible information” (tunneling) transport for (Tim Berners Lee) messages”  Applications should publish  Applications get a chance their data on the Web to interact but they remain (through URI) “outside of the Web” AtomPub JSON POX … SOAP (WS-*) HTTP HTTP HTTP HTTP HTTP SMTP MQ… GET POST PUT DEL POST (Many) Resource URI 1 Endpoint URI Application Application ©2009-2010 - Cesare Pautasso, Erik Wilde 78
  • 79. Is REST really used? Atom, 2% Gdata, 1% XMPP, 0% JavaScript, 6% XML-RPC, 2% SOAP, 17% JSON-RPC, 0% SMS, 2000+ APIs 0% RSS, 1% ProgrammableWeb.com Summer 2010 REST, 71% ©2010 - Cesare Pautasso 79
  • 80. Today’s plan Software The Web Architecture (REST) SOA & WS Components Connectors vs. Services and Integration ©2010 - Cesare Pautasso 80
  • 81. Looking Back You don’t What is a What is have a Web site? Why do Web your Web you need a site? API?!? Web API? From Tomas Vitvar, Mashups 2010 Keynote The Web WWW Services 1992 2000 2010 ©2010 - Cesare Pautasso 81
  • 82. Richard N. Taylor, Nenad Medvidovic, Eric M. Dashofy, Software Architecture: Foundations, Theory and Practice, John-Wiley, January 2009, ISBN 9780470167748 ©2010 - Cesare Pautasso 82
  • 83. Gustavo Alonso, Fabio Casati, Harumi Kuno, Vijay Machiraju, Web Services: Concepts, Architectures, and Applications Springer, September 2004, ISBN 3-540-44008-9 ©2010 - Cesare Pautasso 83
  • 84. More References Christopher Alexander, The Timeless Way of Building, Oxford University Press 1979 Grady Booch, Handbook of Software Architecture, http://booch.com/architecture/ Stewart Brand, How Buildings Learn, Penguin 1987 Thomas Erl, SOA Principles of Service Design, Prentice Hall, 200 Thomas Erl, SOA Design Patterns, Prentice Hall, 2009 Ian Gordon, Essential Software Architecture, Springer 2004 Nicolai M. Josuttis, SOA in Practice: The Art of Distributed System Design, O’Reilly, 2007 Cesare Pautasso, Olaf Zimmermann, Frank Leymann, RESTful web services vs. "big"' web services: making the right architectural decision, WWW 2008 Eberhardt Rechtin, Systems Architecting: Creating and Building Complex Systems, Prentice Hall 1991 Process Support for More Than Web Services: www.jopera.org ©2010 - Cesare Pautasso 84