SlideShare a Scribd company logo
1 of 41
Download to read offline
Building Asynchronous
Services with SCA

Mike Edwards
Raymond Feng
Luciano Resende
Agenda
>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
What SCA is
  >   executable model for assembling services
       ●   composites provide language to compose and
           configure service components
       ●   handles service dependencies
  >   Simplified component programming model for
      implementing services
       ●   BPEL processes, JavaTM POJOs, EJBs, COBOL,
           PHP scripts, C++ apps, JavaScript & AJAX, XSLT…
  >   Late binding of policy and communication
      methods, with distributed deployment model
SCA Overview
Service Interface                                                                           Reference Interface
 - Java                                                 Property                              - Java
 - WSDL                                                                                       - WSDL


              Composite A
                                          property setting



                              Component                            Component
         Service                  A                                    B                 Reference




                    promote                      wire                          promote




 Service Binding               Implementation                                            Reference Binding
  Web Service                    Java                                                     Web Service
  JMS                            BPEL                                                     JMS
  SLSB                           PHP                                                      SLSB
  Rest                           SCA composite                                            Rest
  JSONRPC                        spring                                                   JSONRPC
  JCA                            EJB module                                               JCA
  …                              …                                                        …
Why SCA makes life simpler
  >   One way to look at SCA is that it takes details of
       ●   access methods and endpoints
       ●   implementations and configuration
       ●   policy such as encryption, authentication
  >   …and moves them into middleware layer
  >   Application developers write business logic:
      code that actually builds value
       ●   details of using services handled by SCA
       ●   late binding: as details change, applications (and
           developers who wrote them) aren’t affected
       ●   "no plumbing in the code"
Why SCA makes life simpler
  >   SCA gives developers
      single programming model for using services
      for all aspects of service lifecycle:
      –   Construction
      –   Assembly
      –   Deployment


  >   As your SOA gets more complex, developers have to
      learn more and more interfaces
      ●   In JavaTM alone: EJBs, RMI, JCA, JAX-WS, JMS...
Service Component Architecture (SCA):
Simplified Programming Model for SOA
 >   model for:
 >   building service components
 >   assembling components into applications
 >   deploying to (distributed) runtime environments
       - Service components built from new or existing code
         using SOA principles
       - vendor-neutral – supported across the industry
       - language-neutral – components written using any
         language
       - technology-neutral – use any communication
         protocols and infrastructure to link components
Agenda
>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
Asynchronous interactions
  >   Typical in business processes
  >   …not everything happens immediately
  >   …a single request can result in a
      sequence of responses over time
  >   …a client probably does not want to wait
      while all steps are completed
Synchronous Processing
                            Price of IBM stock?



           IBM = $121.50


                            Price of AT&T stock?



            AT&T = $38.72
  Client                                           Provider
Asynchronous Processing
                     Order Books X, Y, Z



           Acknowledge, OrderID = 3824




           OrderID = 3824 Expect dispatch = 12/06/2008


  Client                                                    Provider
           OrderID = 3824 Books X,Y dispatched 10/06/2008
           Package ID = 478842110


           OrderID = 3824 Books Z dispatched 13/06/2008
           Package ID = 479567736
Why Asynchronous Services?
>   Business processes involve long running
    multi-step sequences
>   Clients & Services cannot afford to wait
    on long request/response operations
     ●   impact on processing resources,
         memory, communication resources
Agenda

>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
Synchronous Services
>   plenty of support for synchronous
    programming
>   call-and-return typical for most
    programming languages
         SearchResponse search(SearchRequest searchRequest);


>   most service frameworks support this -
    for clients & service providers
Asynchronous Services
>   Facilities less common
     ●   JavaTM concurrency classes
     ●   JAX-WS asynchronous client
     ●   JMS messaging
     ●   BPEL
JAX-WS Async Client API
    SearchResponse search(SearchRequest sRequest );




    Future<?> searchAsync(SearchRequest oRequest,
               AsyncHandler<SearchResponse> responseHandler );

                               +
class SearchResponseHandler
      implements AsyncHandler<SearchResponse> {

    public void handleResponse( Response<SearchResponse> theResponse )
    {
       SearchResponse orderResponse = theResponse.get();
    }
}
JMS/Messaging
>   Supports async clients and async services



          Client                                                    Service



     a.send( message1 )                                    message1 = x.receive( )
            .                                                       .
            .                                                       .
            .                                                       .

    message2 = b.receive( )                                  y.send( message2 )




                   + messageListener onMessage listener interface
BPEL and Async Processing
>   BPEL designed to handle:
     ●   long running processes
     ●   with asynchrony
     ●   multiple partner relationships
Agenda

>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
SCA Service Interaction

                                                          AccountData
   TripCataclog                                                 Flight
                                                          Service
   Component                                                 Component
                                                          Component




                              Callback (optional)

                  Reference                         Service



       Synchronous or Asynchronous interaction styles supported
       - depends on the interface definition
SCA Callbacks
>   SCA supports Async services using Callbacks
     ●   service has regular forward call interface
     ●   + callback interface on which service makes calls
         back to clients
          ●   clients implement the callback interface
●   SCA callbacks are part of the business
●   Forward calls and callbacks can use different
    styles such as:
     ●   Oneway + Req/Res
     ●   Req/Res + Req/Res
     ●   Req/Res + Oneway
     ●   Oneway + Oneway
Sync and Async Interfaces
public interface SyncSearchService {
    public SearchResponse search( SearchRequest sRequest );
}



public interface AsyncSearchService {
        public void search( SearchRequest sRequest );
}


public interface AsyncSearchCallback {
        public void searchResponse( SearchResponse sResponse );
}
Callback Interfaces
>   Callback interface
     ●   may have multiple operations/methods
     ●   operations may be called at any time
         after initial forward call to service
     ●   number and sequence of callback
         operations for given forward call is
         variable (0, 1, many…)
Bidirectional Service Interaction
•   The reference creates a callback endpoint to
    receive callbacks
•   The service establishes a “callback” reference to
    the caller
•   The forward call can use different binding than the
    callback
        Callback
        endpoint for
        reference               flightSearch
                       Search                               Flight

                                           binding



                                         Callback binding
Agenda

>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
Bidirectional Interface
•   Forward Interface
        @Remotable
        @Callback(SearchCallback.class)
        public interface Search {
            TripItem[] searchSynch(TripLeg tripLeg);
            @OneWay
            void searchAsynch(TripLeg tripLeg);
        }

•   Callback Interface
        @Remotable
        public interface SearchCallback {
            void searchResults(TripItem[] items);
        }
Trip Async Search
                                                 AccountData
                           Callback                  Flight
                                                 Service
                                                  Component
                                                 Component

       Trip
     Cataclog
    Component                         Callback
                                                   AccountData
                                                       Hotel
                                                   Service
                                                    Component
                                                   Component




                           Callback               AccountData
                                                       Car
                                                  Service
                                                   Component
                Callback                          Component
                             AccountData
                               Packages
                             Service
                              Component
                             Component
Flight Service implementation
import org.osoa.sca.annotations.*;
public class FlightImpl implements Search, Book {

    @Callback
    protected SearchCallback searchCallback;

    ……….

    public void searchAsynch(TripLeg tripLeg) {

        ……….

        // return available flights
        searchCallback.searchResults(searchSynch(tripLeg));
    }
}
Catalog client application
 import org.osoa.sca.annotations.*;
 public class TravelCatalogImpl implements TravelCatalogSearch, SearchCallback{

     @Reference
     protected Search flightSearch;
     ……

  public TripItem[] search(TripLeg tripLeg) {
     flightSearch.searchAsynch(tripLeg);
      ……
  }

  public void searchResults(TripItem[] items){
    if (items != null) {
         for(int i = 0; i < items.length; i++ ){
           searchResults.add(items[i]);
         }
     }
    ……
  }

 }
Composite
<component name="TravelCatalogComponent">
        <implementation.java class="scatours.travelcatalog.TravelCatalogImpl"/>
        <reference name="flightSearch">
            <interface.java interface="scatours.common.Search"
                            callbackInterface="scatours.common.SearchCallback"/>
            <binding.ws uri="http://localhost:8080/Flight/Search"/>
            <callback>
                <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
            </callback>
        </reference>
</component>

<component name="FlightComponent">                                       forward interface
        <implementation.java class="scatours.flight.FlightImpl"/>
        <service name="Search">
            <interface.java interface="scatours.common.Search"
                            callbackInterface="scatours.common.SearchCallback"/>
            <binding.ws uri="http://localhost:8080/Flight/Search"/>
            <tuscany:binding.jsonrpc/>
            <callback>                                                  callback interface
                <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
            </callback>
        </service>
        <service name="Book"/>
</component>                                                             callback binding
"under the hood"
>   How do the callbacks work in practice?
     ●   implemented using suitable
         communication methods, such as:

     ●   JMS messaging
     ●   Web services using WS-Addressing
Agenda

>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
Asynchrony & Events
>   Another way to handle asynchrony is to
    use events
>   components communicate by producing
    and consuming events
     ●   these are one-way
     ●   asychronous
     ●   arbitrary sequences

>   eg JMS messages
Events or Callbacks
>   Both allow asynchrony
>   Calls target single specific service
>   Callbacks ensure responses go back to
    original requester
>   Event handling is more flexible
     ●   pub/sub, broadcasting of events
     ●   no guarantee that anyone listens
Agenda

>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
SCA Tours
  Online Travel Sample Scenario



http://svn.apache.org/repos/asf/tuscany/sandbox/travelsample




                                                               36
SCA Tours – Asynchronous Search
Services
                                                 fullapp-packagedtrip (8085)


                                                               Trip
                                                               Partner




                                                             Java
          fullapp-frontend (8084)



             TravelCatalog                        fullapp-bespoketrip (8086)
                                    binding.ws
                                                              Hotel
                                                              Partner


                                                                 Java
             Java


                                                              Flight
                                                              Partner

                                                                 Java




                                                               Car
                                                               Partner

                                                                 Java
Agenda

>   Service Component Architecture
>   Why Asynchronous Services?
>   Facilities for Async Services
>   SCA support for service interactions
>   Example Async Service & Client
>   Events and Async Services compared
>   Demo Scenario
>   Summary
Summary
>   Asynchronous services are a fact of life
>   SCA makes providing async services and
    their clients simpler and easier
>   SCA supports this on a range of
    communication methods
Useful links
>   Articles about SCA:
       http://www.infoq.com/articles/setting-out-for-sca
       http://www.osoa.org/display/Main/SCA+Resources

>   Apache Tuscany - Open Source implementation of SCA:
       http://tuscany.apache.org/

>   SCA Specifications in OASIS:
       http://www.oasis-opencsa.org/
Mike Edwards
mike_edwards@uk.ibm.com
Raymond Feng
rfeng@us.ibm.com
Luciano Resende
luciano_resende@us.ibm.com

More Related Content

What's hot

Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbWen Zhu
 
Introduction and Advanced Concepts of BPEL
Introduction and Advanced Concepts of BPELIntroduction and Advanced Concepts of BPEL
Introduction and Advanced Concepts of BPELDenis Weerasiri
 
6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-s6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-sIBM
 
(ATS3-PLAT01) Recent developments in Pipeline Pilot
(ATS3-PLAT01) Recent developments in Pipeline Pilot(ATS3-PLAT01) Recent developments in Pipeline Pilot
(ATS3-PLAT01) Recent developments in Pipeline PilotBIOVIA
 
Connected Applications using WF and WCF
Connected Applications using WF and WCFConnected Applications using WF and WCF
Connected Applications using WF and WCFmaddinapudi
 
Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...
Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...
Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...slashn
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]Ryan Cuprak
 
Service Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service BusService Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service BusIMC Institute
 
DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0
DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0
DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0Mark Diggory
 
Cognos Technical Super Session 2012
Cognos Technical Super Session 2012Cognos Technical Super Session 2012
Cognos Technical Super Session 2012barnaby1502
 
Whats new in WCF 4.0
Whats new in WCF 4.0Whats new in WCF 4.0
Whats new in WCF 4.0Eyal Vardi
 
Innovations in Grid Computing with Oracle Coherence
Innovations in Grid Computing with Oracle CoherenceInnovations in Grid Computing with Oracle Coherence
Innovations in Grid Computing with Oracle CoherenceBob Rhubart
 
Where and when to use the Oracle Service Bus (OSB)
Where and when to use the Oracle Service Bus (OSB)Where and when to use the Oracle Service Bus (OSB)
Where and when to use the Oracle Service Bus (OSB)Guido Schmutz
 
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUGThe Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUGArun Gupta
 
Birds Of The Same Feather   Biz Talk Server And Wcf
Birds Of The Same Feather    Biz Talk Server And WcfBirds Of The Same Feather    Biz Talk Server And Wcf
Birds Of The Same Feather   Biz Talk Server And Wcfrsnarayanan
 

What's hot (19)

Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an Esb
 
Introduction and Advanced Concepts of BPEL
Introduction and Advanced Concepts of BPELIntroduction and Advanced Concepts of BPEL
Introduction and Advanced Concepts of BPEL
 
6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-s6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-s
 
(ATS3-PLAT01) Recent developments in Pipeline Pilot
(ATS3-PLAT01) Recent developments in Pipeline Pilot(ATS3-PLAT01) Recent developments in Pipeline Pilot
(ATS3-PLAT01) Recent developments in Pipeline Pilot
 
oracle-osb
oracle-osboracle-osb
oracle-osb
 
Connected Applications using WF and WCF
Connected Applications using WF and WCFConnected Applications using WF and WCF
Connected Applications using WF and WCF
 
Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...
Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...
Slash n: Tech Talk Track 2 – Distributed Transactions in SOA - Yogi Kulkarni,...
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Windows Communication Foundation
Windows Communication FoundationWindows Communication Foundation
Windows Communication Foundation
 
BlazeDS
BlazeDSBlazeDS
BlazeDS
 
Service Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service BusService Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
 
DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0
DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0
DDSUG 2009 Back-porting DSpace 2.0 Services to DSpace 1.6.0
 
Cognos Technical Super Session 2012
Cognos Technical Super Session 2012Cognos Technical Super Session 2012
Cognos Technical Super Session 2012
 
Whats new in WCF 4.0
Whats new in WCF 4.0Whats new in WCF 4.0
Whats new in WCF 4.0
 
Innovations in Grid Computing with Oracle Coherence
Innovations in Grid Computing with Oracle CoherenceInnovations in Grid Computing with Oracle Coherence
Innovations in Grid Computing with Oracle Coherence
 
C S S1
C S S1C S S1
C S S1
 
Where and when to use the Oracle Service Bus (OSB)
Where and when to use the Oracle Service Bus (OSB)Where and when to use the Oracle Service Bus (OSB)
Where and when to use the Oracle Service Bus (OSB)
 
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUGThe Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
 
Birds Of The Same Feather   Biz Talk Server And Wcf
Birds Of The Same Feather    Biz Talk Server And WcfBirds Of The Same Feather    Biz Talk Server And Wcf
Birds Of The Same Feather   Biz Talk Server And Wcf
 

Viewers also liked

Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The FactLuciano Resende
 
Building apps with tuscany
Building apps with tuscanyBuilding apps with tuscany
Building apps with tuscanyLuciano Resende
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyLuciano Resende
 
How mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open sourceHow mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open sourceLuciano Resende
 
Building RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSBuilding RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSLuciano Resende
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitionsLuciano Resende
 
How mentoring can help you start contributing to open source
How mentoring can help you start contributing to open sourceHow mentoring can help you start contributing to open source
How mentoring can help you start contributing to open sourceLuciano Resende
 
Luciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conferenceLuciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conferenceLuciano Resende
 
Writing Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache BahirWriting Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache BahirLuciano Resende
 
SystemML - Declarative Machine Learning
SystemML - Declarative Machine LearningSystemML - Declarative Machine Learning
SystemML - Declarative Machine LearningLuciano Resende
 

Viewers also liked (11)

Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The Fact
 
Building apps with tuscany
Building apps with tuscanyBuilding apps with tuscany
Building apps with tuscany
 
SCA Reaches the Cloud
SCA Reaches the CloudSCA Reaches the Cloud
SCA Reaches the Cloud
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
 
How mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open sourceHow mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open source
 
Building RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSBuilding RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RS
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitions
 
How mentoring can help you start contributing to open source
How mentoring can help you start contributing to open sourceHow mentoring can help you start contributing to open source
How mentoring can help you start contributing to open source
 
Luciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conferenceLuciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conference
 
Writing Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache BahirWriting Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache Bahir
 
SystemML - Declarative Machine Learning
SystemML - Declarative Machine LearningSystemML - Declarative Machine Learning
SystemML - Declarative Machine Learning
 

Similar to Building Asynchronous Services with SCA

Sap xi online training
Sap xi online trainingSap xi online training
Sap xi online trainingVenkat reddy
 
Service stack linkedin
Service stack linkedinService stack linkedin
Service stack linkedinRaju Golla
 
Web services in java
Web services in javaWeb services in java
Web services in javamaabujji
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical ApproachMadhaiyan Muthu
 
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...apidays
 
Asynchronous Mobile Web Services:
Asynchronous Mobile Web Services: Asynchronous Mobile Web Services:
Asynchronous Mobile Web Services: Dr. Fahad Aijaz
 
What is new in WCF 4.0?
What is new in WCF 4.0?What is new in WCF 4.0?
What is new in WCF 4.0?Bala Subra
 
Oracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIAOracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIARajesh Raheja
 
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Rajesh Raheja
 
apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...
apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...
apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...apidays
 
apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...
apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...
apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...apidays
 
Oop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXFOop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXFAdrian Trenaman
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop OverviewShubhra Kar
 

Similar to Building Asynchronous Services with SCA (20)

WCF
WCFWCF
WCF
 
Cliser
CliserCliser
Cliser
 
Service Oriented Enterprise Modeling 1.0
Service Oriented Enterprise Modeling 1.0Service Oriented Enterprise Modeling 1.0
Service Oriented Enterprise Modeling 1.0
 
Sap xi online training
Sap xi online trainingSap xi online training
Sap xi online training
 
Service stack linkedin
Service stack linkedinService stack linkedin
Service stack linkedin
 
SOA patterns
SOA patterns SOA patterns
SOA patterns
 
Web services in java
Web services in javaWeb services in java
Web services in java
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
 
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...
 
CV_Pranay
CV_PranayCV_Pranay
CV_Pranay
 
Asynchronous Mobile Web Services:
Asynchronous Mobile Web Services: Asynchronous Mobile Web Services:
Asynchronous Mobile Web Services:
 
What is new in WCF 4.0?
What is new in WCF 4.0?What is new in WCF 4.0?
What is new in WCF 4.0?
 
Oracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIAOracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIA
 
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
 
apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...
apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...
apidays LIVE Singapore 2021 - REST the Events - REST APIs for Event-Driven Ar...
 
apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...
apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...
apidays LIVE India - REST the Events - REST APIs for Event-Driven Architectur...
 
Introducing spring
Introducing springIntroducing spring
Introducing spring
 
Oop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXFOop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXF
 
SAP PI and SOA Overview
SAP PI and SOA OverviewSAP PI and SOA Overview
SAP PI and SOA Overview
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 

More from Luciano Resende

A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfLuciano Resende
 
Using Elyra for COVID-19 Analytics
Using Elyra for COVID-19 AnalyticsUsing Elyra for COVID-19 Analytics
Using Elyra for COVID-19 AnalyticsLuciano Resende
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Luciano Resende
 
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...Luciano Resende
 
Ai pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooksAi pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooksLuciano Resende
 
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise GatewayStrata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise GatewayLuciano Resende
 
Scaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloadsScaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloadsLuciano Resende
 
Jupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway OverviewJupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway OverviewLuciano Resende
 
Inteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for CodeInteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for CodeLuciano Resende
 
IoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache BahirIoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache BahirLuciano Resende
 
Getting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache BahirGetting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache BahirLuciano Resende
 
Open Source AI - News and examples
Open Source AI - News and examplesOpen Source AI - News and examples
Open Source AI - News and examplesLuciano Resende
 
Building analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernelsBuilding analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernelsLuciano Resende
 
Building iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache BahirBuilding iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache BahirLuciano Resende
 
An Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache SparkAn Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache SparkLuciano Resende
 
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017Luciano Resende
 
What's new in Apache SystemML - Declarative Machine Learning
What's new in Apache SystemML  - Declarative Machine LearningWhat's new in Apache SystemML  - Declarative Machine Learning
What's new in Apache SystemML - Declarative Machine LearningLuciano Resende
 
Big analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel GatewayBig analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel GatewayLuciano Resende
 
Jupyter con meetup extended jupyter kernel gateway
Jupyter con meetup   extended jupyter kernel gatewayJupyter con meetup   extended jupyter kernel gateway
Jupyter con meetup extended jupyter kernel gatewayLuciano Resende
 

More from Luciano Resende (20)

A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdf
 
Using Elyra for COVID-19 Analytics
Using Elyra for COVID-19 AnalyticsUsing Elyra for COVID-19 Analytics
Using Elyra for COVID-19 Analytics
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
 
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
 
Ai pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooksAi pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooks
 
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise GatewayStrata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
 
Scaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloadsScaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloads
 
Jupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway OverviewJupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway Overview
 
Inteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for CodeInteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for Code
 
IoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache BahirIoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache Bahir
 
Getting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache BahirGetting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache Bahir
 
Open Source AI - News and examples
Open Source AI - News and examplesOpen Source AI - News and examples
Open Source AI - News and examples
 
Building analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernelsBuilding analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernels
 
Building iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache BahirBuilding iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache Bahir
 
An Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache SparkAn Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
 
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
 
What's new in Apache SystemML - Declarative Machine Learning
What's new in Apache SystemML  - Declarative Machine LearningWhat's new in Apache SystemML  - Declarative Machine Learning
What's new in Apache SystemML - Declarative Machine Learning
 
Big analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel GatewayBig analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel Gateway
 
Jupyter con meetup extended jupyter kernel gateway
Jupyter con meetup   extended jupyter kernel gatewayJupyter con meetup   extended jupyter kernel gateway
Jupyter con meetup extended jupyter kernel gateway
 
Asf icfoss-mentoring
Asf icfoss-mentoringAsf icfoss-mentoring
Asf icfoss-mentoring
 

Recently uploaded

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Building Asynchronous Services with SCA

  • 1. Building Asynchronous Services with SCA Mike Edwards Raymond Feng Luciano Resende
  • 2. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 3. What SCA is > executable model for assembling services ● composites provide language to compose and configure service components ● handles service dependencies > Simplified component programming model for implementing services ● BPEL processes, JavaTM POJOs, EJBs, COBOL, PHP scripts, C++ apps, JavaScript & AJAX, XSLT… > Late binding of policy and communication methods, with distributed deployment model
  • 4. SCA Overview Service Interface Reference Interface - Java Property - Java - WSDL - WSDL Composite A property setting Component Component Service A B Reference promote wire promote Service Binding Implementation Reference Binding Web Service Java Web Service JMS BPEL JMS SLSB PHP SLSB Rest SCA composite Rest JSONRPC spring JSONRPC JCA EJB module JCA … … …
  • 5. Why SCA makes life simpler > One way to look at SCA is that it takes details of ● access methods and endpoints ● implementations and configuration ● policy such as encryption, authentication > …and moves them into middleware layer > Application developers write business logic: code that actually builds value ● details of using services handled by SCA ● late binding: as details change, applications (and developers who wrote them) aren’t affected ● "no plumbing in the code"
  • 6. Why SCA makes life simpler > SCA gives developers single programming model for using services for all aspects of service lifecycle: – Construction – Assembly – Deployment > As your SOA gets more complex, developers have to learn more and more interfaces ● In JavaTM alone: EJBs, RMI, JCA, JAX-WS, JMS...
  • 7. Service Component Architecture (SCA): Simplified Programming Model for SOA > model for: > building service components > assembling components into applications > deploying to (distributed) runtime environments - Service components built from new or existing code using SOA principles - vendor-neutral – supported across the industry - language-neutral – components written using any language - technology-neutral – use any communication protocols and infrastructure to link components
  • 8. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 9. Asynchronous interactions > Typical in business processes > …not everything happens immediately > …a single request can result in a sequence of responses over time > …a client probably does not want to wait while all steps are completed
  • 10. Synchronous Processing Price of IBM stock? IBM = $121.50 Price of AT&T stock? AT&T = $38.72 Client Provider
  • 11. Asynchronous Processing Order Books X, Y, Z Acknowledge, OrderID = 3824 OrderID = 3824 Expect dispatch = 12/06/2008 Client Provider OrderID = 3824 Books X,Y dispatched 10/06/2008 Package ID = 478842110 OrderID = 3824 Books Z dispatched 13/06/2008 Package ID = 479567736
  • 12. Why Asynchronous Services? > Business processes involve long running multi-step sequences > Clients & Services cannot afford to wait on long request/response operations ● impact on processing resources, memory, communication resources
  • 13. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 14. Synchronous Services > plenty of support for synchronous programming > call-and-return typical for most programming languages SearchResponse search(SearchRequest searchRequest); > most service frameworks support this - for clients & service providers
  • 15. Asynchronous Services > Facilities less common ● JavaTM concurrency classes ● JAX-WS asynchronous client ● JMS messaging ● BPEL
  • 16. JAX-WS Async Client API SearchResponse search(SearchRequest sRequest ); Future<?> searchAsync(SearchRequest oRequest, AsyncHandler<SearchResponse> responseHandler ); + class SearchResponseHandler implements AsyncHandler<SearchResponse> { public void handleResponse( Response<SearchResponse> theResponse ) { SearchResponse orderResponse = theResponse.get(); } }
  • 17. JMS/Messaging > Supports async clients and async services Client Service a.send( message1 ) message1 = x.receive( ) . . . . . . message2 = b.receive( ) y.send( message2 ) + messageListener onMessage listener interface
  • 18. BPEL and Async Processing > BPEL designed to handle: ● long running processes ● with asynchrony ● multiple partner relationships
  • 19. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 20. SCA Service Interaction AccountData TripCataclog Flight Service Component Component Component Callback (optional) Reference Service Synchronous or Asynchronous interaction styles supported - depends on the interface definition
  • 21. SCA Callbacks > SCA supports Async services using Callbacks ● service has regular forward call interface ● + callback interface on which service makes calls back to clients ● clients implement the callback interface ● SCA callbacks are part of the business ● Forward calls and callbacks can use different styles such as: ● Oneway + Req/Res ● Req/Res + Req/Res ● Req/Res + Oneway ● Oneway + Oneway
  • 22. Sync and Async Interfaces public interface SyncSearchService { public SearchResponse search( SearchRequest sRequest ); } public interface AsyncSearchService { public void search( SearchRequest sRequest ); } public interface AsyncSearchCallback { public void searchResponse( SearchResponse sResponse ); }
  • 23. Callback Interfaces > Callback interface ● may have multiple operations/methods ● operations may be called at any time after initial forward call to service ● number and sequence of callback operations for given forward call is variable (0, 1, many…)
  • 24. Bidirectional Service Interaction • The reference creates a callback endpoint to receive callbacks • The service establishes a “callback” reference to the caller • The forward call can use different binding than the callback Callback endpoint for reference flightSearch Search Flight binding Callback binding
  • 25. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 26. Bidirectional Interface • Forward Interface @Remotable @Callback(SearchCallback.class) public interface Search { TripItem[] searchSynch(TripLeg tripLeg); @OneWay void searchAsynch(TripLeg tripLeg); } • Callback Interface @Remotable public interface SearchCallback { void searchResults(TripItem[] items); }
  • 27. Trip Async Search AccountData Callback Flight Service Component Component Trip Cataclog Component Callback AccountData Hotel Service Component Component Callback AccountData Car Service Component Callback Component AccountData Packages Service Component Component
  • 28. Flight Service implementation import org.osoa.sca.annotations.*; public class FlightImpl implements Search, Book { @Callback protected SearchCallback searchCallback; ………. public void searchAsynch(TripLeg tripLeg) { ………. // return available flights searchCallback.searchResults(searchSynch(tripLeg)); } }
  • 29. Catalog client application import org.osoa.sca.annotations.*; public class TravelCatalogImpl implements TravelCatalogSearch, SearchCallback{ @Reference protected Search flightSearch; …… public TripItem[] search(TripLeg tripLeg) { flightSearch.searchAsynch(tripLeg); …… } public void searchResults(TripItem[] items){ if (items != null) { for(int i = 0; i < items.length; i++ ){ searchResults.add(items[i]); } } …… } }
  • 30. Composite <component name="TravelCatalogComponent"> <implementation.java class="scatours.travelcatalog.TravelCatalogImpl"/> <reference name="flightSearch"> <interface.java interface="scatours.common.Search" callbackInterface="scatours.common.SearchCallback"/> <binding.ws uri="http://localhost:8080/Flight/Search"/> <callback> <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/> </callback> </reference> </component> <component name="FlightComponent"> forward interface <implementation.java class="scatours.flight.FlightImpl"/> <service name="Search"> <interface.java interface="scatours.common.Search" callbackInterface="scatours.common.SearchCallback"/> <binding.ws uri="http://localhost:8080/Flight/Search"/> <tuscany:binding.jsonrpc/> <callback> callback interface <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/> </callback> </service> <service name="Book"/> </component> callback binding
  • 31. "under the hood" > How do the callbacks work in practice? ● implemented using suitable communication methods, such as: ● JMS messaging ● Web services using WS-Addressing
  • 32. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 33. Asynchrony & Events > Another way to handle asynchrony is to use events > components communicate by producing and consuming events ● these are one-way ● asychronous ● arbitrary sequences > eg JMS messages
  • 34. Events or Callbacks > Both allow asynchrony > Calls target single specific service > Callbacks ensure responses go back to original requester > Event handling is more flexible ● pub/sub, broadcasting of events ● no guarantee that anyone listens
  • 35. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 36. SCA Tours Online Travel Sample Scenario http://svn.apache.org/repos/asf/tuscany/sandbox/travelsample 36
  • 37. SCA Tours – Asynchronous Search Services fullapp-packagedtrip (8085) Trip Partner Java fullapp-frontend (8084) TravelCatalog fullapp-bespoketrip (8086) binding.ws Hotel Partner Java Java Flight Partner Java Car Partner Java
  • 38. Agenda > Service Component Architecture > Why Asynchronous Services? > Facilities for Async Services > SCA support for service interactions > Example Async Service & Client > Events and Async Services compared > Demo Scenario > Summary
  • 39. Summary > Asynchronous services are a fact of life > SCA makes providing async services and their clients simpler and easier > SCA supports this on a range of communication methods
  • 40. Useful links > Articles about SCA: http://www.infoq.com/articles/setting-out-for-sca http://www.osoa.org/display/Main/SCA+Resources > Apache Tuscany - Open Source implementation of SCA: http://tuscany.apache.org/ > SCA Specifications in OASIS: http://www.oasis-opencsa.org/