SlideShare a Scribd company logo
C++ In SOA

         Nandika Jayawardana
         Tech Lead, WSO2, Inc
           nandika@wso2.com
Introduction to SOA in C++
●   In this presentation we will look in to the
    implementation of SOA using Web Services in
    the C/C++ world from a native Web Services
    Stack's point of View.
Why use C++
●   C++ is still widely used in the industry due to
     ● Performance advantage of the native code

     ● Flexibility available from object oriented


       language
     ● Tight control over memory and CPU
Typical applications that use
                 C++
●   Applications which require high performance
    and the ability to handle large volumes of
    data
    ●   Financial Market Applications
    ●   Large E-Commerce applications
    ●   Banking Applications
    ●   Telecommunication Systems
    ●   Data Base Systems
●   Applications which require tight control over
    memory and CPU
    ●   Operating Systems (C/C++)
    ●   Embedded Systems
Some Use cases
●   A legacy C++ system which has been performing
    useful work for a long time. This has remained
    isolated while all other systems in the
    organization evolved and connected together.
●   Need to integrate this system with other
    applications to use its functionality in a broader
    perspective.
●   Options
    ●   Rewrite the system ( Costly )
    ●   Integrate using EAI
    ●   Integrate using a native Web Services Stack
Some Use Cases


                                                SAP
                          .NET


Legacy
System              Secure, Reliable, Binary
            J2EE
                        Web Services



                                               CICS
                   Java
Some Use cases
●   A high performance application is used in an
    organization (Telecommunication, Banking )
●   Need to provide new products and services
    using the system on a regular basis to keep up
    with market competition
●   Difficult to keep changing, adding new
    functionality to the existing system
●   Does a better way exist to cater for the new
    requirements without the hassle of change or
    loosing the performance ?
Some Use cases
●   I need my embedded system (camera, car,
    printer, robot, ... ) to be able to talk to
    external systems which are running
    heterogeneous hardware and software
SOA
●   Decomposing business function into
    reusable, independent components which
    communicate using standard protocols with
    messages and semantics defined by
    contracts.
●   SOA is an Enterprise Architecture
●   The application using a service should be
    independent of the location and
    implementation of any services it uses
SOA
Why SOA
●   SOA simplifies connecting systems
●   Integration is driven by number of factors
    ●   Straight-through-processing
         ●   Handling web transactions without manual
             intervention, leading to greater scalability
    ●   Mergers and De-mergers
         ●   The increasing change in organizational structure is
             making loosely-coupled connections more important
    ●   Partnerships
    ●   Outsourcing
    ●   Time to Value
Native Web Services Stack
●   What would you look from a native web
    services stack to solve the above stated
    problems ?
    ●   Support for Basic Web Services Standards
    ●   Tooling for WSDL
    ●   Portability
    ●   Performance / Low memory foot print
    ●   Security
    ●   Ability to handle binary data
    ●   Interoperability
    ●   Asynchronous communication
Basic Web Service Standards
 ●   SOAP 1.1 , 1.2
 ●   WSDL (Web Services Description Language)
 ●   XML Schema
 ●   HTTP
<soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Header/>
 <soap:Body>
  <getProductDetails
  xmlns="http://warehouse.example.com/ws">
      <productID>827635</productID> </getProductDetails>
  </soap:Body>
</soap:Envelope>
Working with WSDL
●   WSDL (Web Service Description Language)
    ●   defines a service contract
●   Focuses on:
         ●   What the messages are
              ●   Schema
         ●   How they flow (in, in-out, etc)
              ●   Message Exchange Pattern
         ●   Where they are
              ●   Endpoint URLs
Working with WSDL
●   WSDL is complex
●   WSDL is intended to be machine readable
    and machine processable
●   Typical approaches to building services and
    clients using WSDL
    ●   Code Generation ( Common)
    ●   Dynamic Invocation ( Rare )
Code Generation


                        Stub

<wsdl/>
           Code Generation Tool
document

                    Skeleton
Advantages of Code Generation
●   All complex details of mappings between
    C++ types and XML schema types are handled
     by the generated code.
●   The developer deals with C++ types
●   Quickly develop services and clients
●   Faster than the dynamic invocation technique
●   Developer can concentrate on his business
    logic
Working with WSDL in WSF/C++
●   Comes with built in Code Generation tool.
●   Generates Client Stubs, Service Skeletons,
    Service descriptors and Build scripts.
     ● Generating a Service Skeleton

    Linux: sh WSDL2CPP.sh -uri calculator.wsdl -ss -sd -d adb -u
    Windows: WSDL2CPP.bat -uri calculator.wsdl -ss -sd -d adb -u
    ●   Generating a Client Stub
    Linux: sh WSDL2CPP.sh -uri calculator.wsdl -d adb -u
    Windows WSDL2CPP.bat -uri calculator.wsdl -d adb -u
How to adapt a C++ Application
       as Web Services
Using WSF/C++
●   Supports multiple platforms
    ●   Linux
    ●   Windows
    ●   Solaris
Portability
●   My legacy application is running on platform
    'X'. Does your Web Service stack run on it ?
●   It can boil down to multitude of issues
    ●   Differences in operating system versions
    ●   Differences in build tool versions, compiler
        versions
    ●   Dependency problems
Performance
●   Performance is a broad area. Usually
    Performance means response time. In another
    way, how many requests can the server
    handle per second
●   However, performance depends on the
    system's hardware as well as load on the
    system
●   Does the performance stay constant or does it
    degrade over time
●   How does the performance vary with the size
    of the messages, load of the system
Low Memory Foot Print
●   Some servers take large amount of memory
    just to start up
●   How much memory does it require to run
    efficiently ( Important in embedded systems)
●   Does the memory usage stay constant while
    handling large xml messages, large binary
    content
Security
●   Important, confidential data need to be
    exchanged between parties.
●   Transport Level security
●   Message Level Security
Security Terminology
●   Confidentiality
    ●   The assurance that the message has not been read
        by anyone other than the intended reader
●   Integrity
    ●   The assurance that data is complete and accurate
●   Non-repudiation
    ●   Prevent denial of action
    ●   unforgeable evidence
●   Authentication
    ●   The verification of a claimed identity
Transport Level Security
●   Achieved by using HTTPS
●   Provides confidentiality through encryption
●   Provides integrity through digital signature
●   Service authenticate to client via certificates
●   Client can authenticate to the service via
    certificates / basic, digest authentication
Transport Level Security


                HTTPS
Client                            Service




         Is it really what you want ?
Transport Level Security vs
 Message Level Security
Message Level Security
●   Achieved using WS-Security
●   Authentication with UsernameToken
●   Provides confidentiality through encryption
●   Provides integrity and non-repudiation
    through digital signature
Security with WSF/C++
●   Supports Both transport Level security and
    Message Level Security
●   Security is configured using WS-Security
    Policy
●   Client is configured by specifying the policy
    configuration.
●   Service is configured for security by the
    deployment script
●   Eg
       ServiceClient sc(client_repo, end_point);
       sc.engageModule(“rampart”);
       sc.setPolicy(new NeethiPolicy(security_policy_file));
Handling binary data
●   “Attachments”
    ●   Video, Images, Documents, ...
●   There are two ways to transfer binary data in
    SOAP
    ●   By Value (Encoded text of data within the xml)
         ●   base64 – 4/3x original size
         ●   hex – 2x original size
    ●   Reference
         ●   pointer to outside the XML
●   MTOM/XOP
    ●   Standardised approach to transfer binary data
Attachment handling with
                WSF/C++
●    Supports
      ● Base64

      ● MTOM and SwA

          ●   Support for caching large attachments
●    Class DataHandler which handles binary content

    // Enable mtom in the options object.
     options->setEnableMTOM(true);

// Create a Data Handler with the image
   OMDataHandler * data_handler = new
   OMDataHandler(image_file_name, "image/jpeg");
// Create OMText with Data Handler
   OMText * child3 = new OMText(child2, data_handler);
Interoperability
●   The ability of two or more systems or
    components to exchange information and to
    use the information that has been exchanged
●   Achieved by adherence to the specifications
    and regular testing against other systems
●   Interoperability with the major SOA players
    guarantees that you services will be accessible
    by other products and your clients will be
    able to talk to other services
WSF/C++ and Interoperability
●   Interoperability tested with .Net, Axis2 and
    other Java Web Services Stacks
●   Has been tested with data types (Complex,
    Simple) as well as advanced features such as
    XOP/MTOM, WS-Security, WS-RM
WSF/C++
●   SOAP 1.1 and SOAP 1.2
●   WS-Addressing
    ●   1.0
    ●   submission
●   MTOM and SwA
    ●   Support for caching large attachments
●   WS-Security
    ●   Base security standards mean that messages can be
        protected using Encryption, Authentication and Signature
    ●   Including WS-SecureConversation and WS-Trust
●   WSDL2CPP Code Generation tool
    ●   Supports generating client stubs, service skeletons, build
        scripts and deployment scripts
WSF/C++
●   WS-Policy and WS-Security Policy
    ●   Enables using industry standard XML to configure security
●   SSL Enabled Transport Layer
●   WS-Reliable Messaging 1.0, 1.1 and WS-RMPolicy
    ●   Enables reliability between platforms including message resending, duplicate
        detection and persistence
●   Full REST support (GET, PUT, DELETE, POST)
    with custom URI Mapping
    ●   Enables mapping a REST API easily and naturally
●   Useful tools
    ●   Tcpmon
    ●   wsclient
Q&A

More Related Content

Similar to Cpp In Soa

COM+ & MSMQ
COM+ & MSMQCOM+ & MSMQ
COM+ & MSMQ
G Srinivasan
 
Keepler | What's next on Google Cloud?
Keepler | What's next on Google Cloud? Keepler | What's next on Google Cloud?
Keepler | What's next on Google Cloud?
Keepler Data Tech
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE Architectures
Alexander Penev
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthUSENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
Nicolas Brousse
 
Migrate to Microservices Judiciously!
Migrate to Microservices Judiciously!Migrate to Microservices Judiciously!
Migrate to Microservices Judiciously!
pflueras
 
Microservice at a glance
Microservice at a glanceMicroservice at a glance
Microservice at a glance
Ketan Ghumatkar
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservices
Ron Barabash
 
Public Cloud Workshop
Public Cloud WorkshopPublic Cloud Workshop
Public Cloud Workshop
Amer Ather
 
Multi-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingMulti-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud Computing
WSO2
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
Lucian Neghina
 
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaS
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaSService Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaS
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaS
Software Guru
 
API Microservices with Node.js and Docker
API Microservices with Node.js and DockerAPI Microservices with Node.js and Docker
API Microservices with Node.js and Docker
Apigee | Google Cloud
 
JavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsJavaScript for Enterprise Applications
JavaScript for Enterprise Applications
Piyush Katariya
 
Rapid app building with loopback framework
Rapid app building with loopback frameworkRapid app building with loopback framework
Rapid app building with loopback framework
Thomas Papaspiros
 
Adopting the Cloud
Adopting the CloudAdopting the Cloud
Adopting the Cloud
Tapio Rautonen
 
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
CodeScience
 
.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles
VMware Tanzu
 
Ato Z of Microservices Architecture by Systango
Ato Z of Microservices Architecture by SystangoAto Z of Microservices Architecture by Systango
Ato Z of Microservices Architecture by Systango
Systango
 
What's New in NGINX Plus R10?
What's New in NGINX Plus R10?What's New in NGINX Plus R10?
What's New in NGINX Plus R10?
NGINX, Inc.
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"
Fwdays
 

Similar to Cpp In Soa (20)

COM+ & MSMQ
COM+ & MSMQCOM+ & MSMQ
COM+ & MSMQ
 
Keepler | What's next on Google Cloud?
Keepler | What's next on Google Cloud? Keepler | What's next on Google Cloud?
Keepler | What's next on Google Cloud?
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE Architectures
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthUSENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
 
Migrate to Microservices Judiciously!
Migrate to Microservices Judiciously!Migrate to Microservices Judiciously!
Migrate to Microservices Judiciously!
 
Microservice at a glance
Microservice at a glanceMicroservice at a glance
Microservice at a glance
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservices
 
Public Cloud Workshop
Public Cloud WorkshopPublic Cloud Workshop
Public Cloud Workshop
 
Multi-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingMulti-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud Computing
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaS
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaSService Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaS
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaS
 
API Microservices with Node.js and Docker
API Microservices with Node.js and DockerAPI Microservices with Node.js and Docker
API Microservices with Node.js and Docker
 
JavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsJavaScript for Enterprise Applications
JavaScript for Enterprise Applications
 
Rapid app building with loopback framework
Rapid app building with loopback frameworkRapid app building with loopback framework
Rapid app building with loopback framework
 
Adopting the Cloud
Adopting the CloudAdopting the Cloud
Adopting the Cloud
 
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
 
.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles
 
Ato Z of Microservices Architecture by Systango
Ato Z of Microservices Architecture by SystangoAto Z of Microservices Architecture by Systango
Ato Z of Microservices Architecture by Systango
 
What's New in NGINX Plus R10?
What's New in NGINX Plus R10?What's New in NGINX Plus R10?
What's New in NGINX Plus R10?
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"
 

More from WSO2

Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdf
WSO2
 
Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2
WSO2
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
WSO2
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
WSO2
 
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
WSO2
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
WSO2
 
WSO2CON 2024 - Elevating the Integration Game to the Cloud
WSO2CON 2024 - Elevating the Integration Game to the CloudWSO2CON 2024 - Elevating the Integration Game to the Cloud
WSO2CON 2024 - Elevating the Integration Game to the Cloud
WSO2
 
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & InnovationWSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
WSO2
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
WSO2
 
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2
 
WSO2CON 2024 - Software Engineering for Digital Businesses
WSO2CON 2024 - Software Engineering for Digital BusinessesWSO2CON 2024 - Software Engineering for Digital Businesses
WSO2CON 2024 - Software Engineering for Digital Businesses
WSO2
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2
 

More from WSO2 (20)

Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdf
 
Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
WSO2CON 2024 - Elevating the Integration Game to the Cloud
WSO2CON 2024 - Elevating the Integration Game to the CloudWSO2CON 2024 - Elevating the Integration Game to the Cloud
WSO2CON 2024 - Elevating the Integration Game to the Cloud
 
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & InnovationWSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - Software Engineering for Digital Businesses
WSO2CON 2024 - Software Engineering for Digital BusinessesWSO2CON 2024 - Software Engineering for Digital Businesses
WSO2CON 2024 - Software Engineering for Digital Businesses
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 

Recently uploaded

What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
Enterprise Wired
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
UiPathCommunity
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 

Recently uploaded (20)

What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 

Cpp In Soa

  • 1. C++ In SOA Nandika Jayawardana Tech Lead, WSO2, Inc nandika@wso2.com
  • 2. Introduction to SOA in C++ ● In this presentation we will look in to the implementation of SOA using Web Services in the C/C++ world from a native Web Services Stack's point of View.
  • 3. Why use C++ ● C++ is still widely used in the industry due to ● Performance advantage of the native code ● Flexibility available from object oriented language ● Tight control over memory and CPU
  • 4. Typical applications that use C++ ● Applications which require high performance and the ability to handle large volumes of data ● Financial Market Applications ● Large E-Commerce applications ● Banking Applications ● Telecommunication Systems ● Data Base Systems ● Applications which require tight control over memory and CPU ● Operating Systems (C/C++) ● Embedded Systems
  • 5. Some Use cases ● A legacy C++ system which has been performing useful work for a long time. This has remained isolated while all other systems in the organization evolved and connected together. ● Need to integrate this system with other applications to use its functionality in a broader perspective. ● Options ● Rewrite the system ( Costly ) ● Integrate using EAI ● Integrate using a native Web Services Stack
  • 6. Some Use Cases SAP .NET Legacy System Secure, Reliable, Binary J2EE Web Services CICS Java
  • 7. Some Use cases ● A high performance application is used in an organization (Telecommunication, Banking ) ● Need to provide new products and services using the system on a regular basis to keep up with market competition ● Difficult to keep changing, adding new functionality to the existing system ● Does a better way exist to cater for the new requirements without the hassle of change or loosing the performance ?
  • 8. Some Use cases ● I need my embedded system (camera, car, printer, robot, ... ) to be able to talk to external systems which are running heterogeneous hardware and software
  • 9. SOA ● Decomposing business function into reusable, independent components which communicate using standard protocols with messages and semantics defined by contracts. ● SOA is an Enterprise Architecture ● The application using a service should be independent of the location and implementation of any services it uses
  • 10. SOA
  • 11. Why SOA ● SOA simplifies connecting systems ● Integration is driven by number of factors ● Straight-through-processing ● Handling web transactions without manual intervention, leading to greater scalability ● Mergers and De-mergers ● The increasing change in organizational structure is making loosely-coupled connections more important ● Partnerships ● Outsourcing ● Time to Value
  • 12. Native Web Services Stack ● What would you look from a native web services stack to solve the above stated problems ? ● Support for Basic Web Services Standards ● Tooling for WSDL ● Portability ● Performance / Low memory foot print ● Security ● Ability to handle binary data ● Interoperability ● Asynchronous communication
  • 13. Basic Web Service Standards ● SOAP 1.1 , 1.2 ● WSDL (Web Services Description Language) ● XML Schema ● HTTP <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <getProductDetails xmlns="http://warehouse.example.com/ws"> <productID>827635</productID> </getProductDetails> </soap:Body> </soap:Envelope>
  • 14. Working with WSDL ● WSDL (Web Service Description Language) ● defines a service contract ● Focuses on: ● What the messages are ● Schema ● How they flow (in, in-out, etc) ● Message Exchange Pattern ● Where they are ● Endpoint URLs
  • 15. Working with WSDL ● WSDL is complex ● WSDL is intended to be machine readable and machine processable ● Typical approaches to building services and clients using WSDL ● Code Generation ( Common) ● Dynamic Invocation ( Rare )
  • 16. Code Generation Stub <wsdl/> Code Generation Tool document Skeleton
  • 17. Advantages of Code Generation ● All complex details of mappings between C++ types and XML schema types are handled by the generated code. ● The developer deals with C++ types ● Quickly develop services and clients ● Faster than the dynamic invocation technique ● Developer can concentrate on his business logic
  • 18. Working with WSDL in WSF/C++ ● Comes with built in Code Generation tool. ● Generates Client Stubs, Service Skeletons, Service descriptors and Build scripts. ● Generating a Service Skeleton Linux: sh WSDL2CPP.sh -uri calculator.wsdl -ss -sd -d adb -u Windows: WSDL2CPP.bat -uri calculator.wsdl -ss -sd -d adb -u ● Generating a Client Stub Linux: sh WSDL2CPP.sh -uri calculator.wsdl -d adb -u Windows WSDL2CPP.bat -uri calculator.wsdl -d adb -u
  • 19. How to adapt a C++ Application as Web Services
  • 20. Using WSF/C++ ● Supports multiple platforms ● Linux ● Windows ● Solaris
  • 21. Portability ● My legacy application is running on platform 'X'. Does your Web Service stack run on it ? ● It can boil down to multitude of issues ● Differences in operating system versions ● Differences in build tool versions, compiler versions ● Dependency problems
  • 22. Performance ● Performance is a broad area. Usually Performance means response time. In another way, how many requests can the server handle per second ● However, performance depends on the system's hardware as well as load on the system ● Does the performance stay constant or does it degrade over time ● How does the performance vary with the size of the messages, load of the system
  • 23. Low Memory Foot Print ● Some servers take large amount of memory just to start up ● How much memory does it require to run efficiently ( Important in embedded systems) ● Does the memory usage stay constant while handling large xml messages, large binary content
  • 24. Security ● Important, confidential data need to be exchanged between parties. ● Transport Level security ● Message Level Security
  • 25. Security Terminology ● Confidentiality ● The assurance that the message has not been read by anyone other than the intended reader ● Integrity ● The assurance that data is complete and accurate ● Non-repudiation ● Prevent denial of action ● unforgeable evidence ● Authentication ● The verification of a claimed identity
  • 26. Transport Level Security ● Achieved by using HTTPS ● Provides confidentiality through encryption ● Provides integrity through digital signature ● Service authenticate to client via certificates ● Client can authenticate to the service via certificates / basic, digest authentication
  • 27. Transport Level Security HTTPS Client Service Is it really what you want ?
  • 28. Transport Level Security vs Message Level Security
  • 29. Message Level Security ● Achieved using WS-Security ● Authentication with UsernameToken ● Provides confidentiality through encryption ● Provides integrity and non-repudiation through digital signature
  • 30. Security with WSF/C++ ● Supports Both transport Level security and Message Level Security ● Security is configured using WS-Security Policy ● Client is configured by specifying the policy configuration. ● Service is configured for security by the deployment script ● Eg ServiceClient sc(client_repo, end_point); sc.engageModule(“rampart”); sc.setPolicy(new NeethiPolicy(security_policy_file));
  • 31. Handling binary data ● “Attachments” ● Video, Images, Documents, ... ● There are two ways to transfer binary data in SOAP ● By Value (Encoded text of data within the xml) ● base64 – 4/3x original size ● hex – 2x original size ● Reference ● pointer to outside the XML ● MTOM/XOP ● Standardised approach to transfer binary data
  • 32. Attachment handling with WSF/C++ ● Supports ● Base64 ● MTOM and SwA ● Support for caching large attachments ● Class DataHandler which handles binary content // Enable mtom in the options object. options->setEnableMTOM(true); // Create a Data Handler with the image OMDataHandler * data_handler = new OMDataHandler(image_file_name, "image/jpeg"); // Create OMText with Data Handler OMText * child3 = new OMText(child2, data_handler);
  • 33. Interoperability ● The ability of two or more systems or components to exchange information and to use the information that has been exchanged ● Achieved by adherence to the specifications and regular testing against other systems ● Interoperability with the major SOA players guarantees that you services will be accessible by other products and your clients will be able to talk to other services
  • 34. WSF/C++ and Interoperability ● Interoperability tested with .Net, Axis2 and other Java Web Services Stacks ● Has been tested with data types (Complex, Simple) as well as advanced features such as XOP/MTOM, WS-Security, WS-RM
  • 35. WSF/C++ ● SOAP 1.1 and SOAP 1.2 ● WS-Addressing ● 1.0 ● submission ● MTOM and SwA ● Support for caching large attachments ● WS-Security ● Base security standards mean that messages can be protected using Encryption, Authentication and Signature ● Including WS-SecureConversation and WS-Trust ● WSDL2CPP Code Generation tool ● Supports generating client stubs, service skeletons, build scripts and deployment scripts
  • 36. WSF/C++ ● WS-Policy and WS-Security Policy ● Enables using industry standard XML to configure security ● SSL Enabled Transport Layer ● WS-Reliable Messaging 1.0, 1.1 and WS-RMPolicy ● Enables reliability between platforms including message resending, duplicate detection and persistence ● Full REST support (GET, PUT, DELETE, POST) with custom URI Mapping ● Enables mapping a REST API easily and naturally ● Useful tools ● Tcpmon ● wsclient
  • 37. Q&A