Copyright R.A. van Engelen, FSU Department of Computer Science, 2000


SOAP C/C++ Stub and Skeleton Compiler Project Results

  • Web services are the newest and hotest Internet technology
  • >100 users of our gSOAP C/C++ Stub and Skeleton Compiler and growing...
  • Used in industry, research, education
  • Linux, Unix, Windows, Pocket PC, ...
  • Real-time applications
  • Project team:
    • Gunjan Gupta, Saurabh Pant, Dongmei Gao, Yunwei Wang


SOAP: Simple Object Access Protocol

  • SOAP is a remote procedure calling (RPC) protocol for the InternetDefine this term
  • Ideal for building client-server applications for business transactions
    • Xmethods
    • Microsoft's passport serviceDefine this term 
    • Windows XP professional is "SOAP enabled"
  • SOAP has simple "lightweight" design based on existing Internet technology:
    • XML marshalling formatDefine this term
    • HTTP transport


Building Web Services With SOAP

  • SOAP clients and servers can be written in a multitude of programming languages
    • C/C++ e.g. using our SOAP C/C++ Stub and Skeleton Compiler
    • Java
    • Perl
    • Visual Studio .NET
    • Any language for which an XML parser is available
  • SOAP distributed applications are not hampered by firewall problems
  • Security, encryption, and compression issues are left to HTTP


Why XML?

  • XML is a platform-independent object representation
  • A person record containing a name, date of birth, and address may be represented as:

  • <person>
      <name>Joe Smith</name>
        <street>Main st.</street>
  • An XML element has an opening tag <...> followed by the XML content, which typically is a number of XML elements or some data, followed by a closing tag </...>
  • XML can be translated to HTML for viewing in a Web browser, for example
  • Name Joe Smith
    Date of birth 12/29/1967
    Address Main st. 10
  • SOAP adopts XML for HTTP-based data transport between client-server applications


Project: SOAP C/C+ Stub and Skeleton Compiler

  • A stub is a routine that delegates the procedure work to be done to a remote site
  • A stub compiler automatically generates stubs 
  • Example SOAP C/C++ Stub Compiler input:

  • struct Address
    { char *street;
      int number;
      char *city;
    struct Person
    { char *name;
      char *dob;
      struct Address address;
    int getSS(struct Person p, long *SS);
    /* Retrieves and returns #SS for p from a database
       This function is implemented by the user


Project (cont'd)

  • Compiler output:
    • A stub routine for the client:

    • soap_call_getSS(char *URL, char *action, struct Person p, long *SS);
      to invoke the database lookup for a person at the specified URL
    • A stub routine to implement the server:

    • soap_serve_getSS();
    • which listens to and serves incoming lookup requests by calling getSS() on the incomming person record
  • The resulting C/C++ client and server applications with SOAP are similar in functionality to Java RMI


Project: (cont'd)

  • Example SOAP client request:

  • <SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
       <name>Joe Smith</name>
        <street>Main st.</street>
  • Example SOAP server response:

  • <SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
      <SS>999 99 9999</SS>


Open Student Projects

  • Implement a number of example SOAP clients and servers generated by our SOAP C/C++ Stub and Skeleton Compiler
  • Performance and network testing of applications
  • Add compression (e.g. with gzip) to C++ runtime
  • Add security (HTTPS/SSL) to C++ runtime
  • WSDL to C/C++ converter
  • Semantic mapping of data structures from one type into another type