SlideShare a Scribd company logo
1 of 37
Download to read offline
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

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 ArchitecturesAlexander 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 MonthNicolas 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 glanceKetan Ghumatkar
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservicesRon Barabash
 
Public Cloud Workshop
Public Cloud WorkshopPublic Cloud Workshop
Public Cloud WorkshopAmer 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 ComputingWSO2
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices ArchitectureLucian 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 OpenFaaSSoftware 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 DockerApigee | Google Cloud
 
JavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsJavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsPiyush Katariya
 
Rapid app building with loopback framework
Rapid app building with loopback frameworkRapid app building with loopback framework
Rapid app building with loopback frameworkThomas Papaspiros
 
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 AngelesVMware 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 SystangoSystango
 
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

Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseWSO2
 
Mastering API Lifecycle: Design, Deployment, and Effective Consumption
Mastering API Lifecycle: Design, Deployment, and Effective ConsumptionMastering API Lifecycle: Design, Deployment, and Effective Consumption
Mastering API Lifecycle: Design, Deployment, and Effective ConsumptionWSO2
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringWSO2
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
How to Create a Service in Choreo
How to Create a Service in ChoreoHow to Create a Service in Choreo
How to Create a Service in ChoreoWSO2
 
Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023WSO2
 
Platform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on AzurePlatform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on AzureWSO2
 
GartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdfGartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdfWSO2
 
[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in Minutes[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in MinutesWSO2
 
Modernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos IdentityModernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos IdentityWSO2
 
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...WSO2
 
CIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdfCIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdfWSO2
 
Delivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoDelivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoWSO2
 
Fueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected ProductsFueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected ProductsWSO2
 
A Reference Methodology for Agile Digital Businesses
 A Reference Methodology for Agile Digital Businesses A Reference Methodology for Agile Digital Businesses
A Reference Methodology for Agile Digital BusinessesWSO2
 
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)WSO2
 
Lessons from the pandemic - From a single use case to true transformation
 Lessons from the pandemic - From a single use case to true transformation Lessons from the pandemic - From a single use case to true transformation
Lessons from the pandemic - From a single use case to true transformationWSO2
 

More from WSO2 (20)

Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
Mastering API Lifecycle: Design, Deployment, and Effective Consumption
Mastering API Lifecycle: Design, Deployment, and Effective ConsumptionMastering API Lifecycle: Design, Deployment, and Effective Consumption
Mastering API Lifecycle: Design, Deployment, and Effective Consumption
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
How to Create a Service in Choreo
How to Create a Service in ChoreoHow to Create a Service in Choreo
How to Create a Service in Choreo
 
Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023
 
Platform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on AzurePlatform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on Azure
 
GartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdfGartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdf
 
[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in Minutes[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in Minutes
 
Modernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos IdentityModernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos Identity
 
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
 
CIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdfCIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdf
 
Delivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoDelivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing Choreo
 
Fueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected ProductsFueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected Products
 
A Reference Methodology for Agile Digital Businesses
 A Reference Methodology for Agile Digital Businesses A Reference Methodology for Agile Digital Businesses
A Reference Methodology for Agile Digital Businesses
 
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
 
Lessons from the pandemic - From a single use case to true transformation
 Lessons from the pandemic - From a single use case to true transformation Lessons from the pandemic - From a single use case to true transformation
Lessons from the pandemic - From a single use case to true transformation
 

Recently uploaded

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

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