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 C++ SOA Guide: Introduction to Implementing SOA in C++ with Web Services

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 C++ SOA Guide: Introduction to Implementing SOA in C++ with Web Services (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

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
 
Adding Liveliness to Banking Experiences
Adding Liveliness to Banking ExperiencesAdding Liveliness to Banking Experiences
Adding Liveliness to Banking ExperiencesWSO2
 
Building a Future-ready Bank
Building a Future-ready BankBuilding a Future-ready Bank
Building a Future-ready BankWSO2
 
WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021WSO2
 
[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIs[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIsWSO2
 
[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native Deployment[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native DeploymentWSO2
 
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”WSO2
 

More from WSO2 (20)

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
 
Adding Liveliness to Banking Experiences
Adding Liveliness to Banking ExperiencesAdding Liveliness to Banking Experiences
Adding Liveliness to Banking Experiences
 
Building a Future-ready Bank
Building a Future-ready BankBuilding a Future-ready Bank
Building a Future-ready Bank
 
WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021
 
[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIs[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIs
 
[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native Deployment[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native Deployment
 
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
 

Recently uploaded

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dashnarutouzumaki53779
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 

Recently uploaded (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dash
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 

C++ SOA Guide: Introduction to Implementing SOA in C++ with Web Services

  • 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