1 / 12

High-Performance Predictive XML Parsing with gSOAP

High-Performance Predictive XML Parsing with gSOAP. Robert van Engelen Florida State University. The gSOAP Toolkit. Project timeline. 12/2003. 10/2001. 12/2002. 3/2002. 1/2002. 9/2003. 1/2000. 7/2002. 1/2004. 3/2004. 9/2004. v1.2 latency hiding; WSDL output. v2.0 MT/safe.

sierra
Download Presentation

High-Performance Predictive XML Parsing with gSOAP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. High-Performance Predictive XML Parsing with gSOAP Robert van EngelenFlorida State University

  2. The gSOAP Toolkit • Project timeline 12/2003 10/2001 12/2002 3/2002 1/2002 9/2003 1/2000 7/2002 1/2004 3/2004 9/2004 v1.2latencyhiding;WSDLoutput v2.0MT/safe v1.1streamingXML;SOAP1.1RPC v1.3HTTPSSSL v2.1DIME v2.2streaming DIME v2.3SOAP1.2 v2.4Doc/Lit;WSDL1.1tools v2.5WS-BP1.0a v2.6 v2.7SwA;WS-* >50,000 downloads www.genivia.com http://gsoap2.sourceforge.net

  3. Early Versus Late Bindings EARLY BINDING Static proxy generation with schema-specific DFA-based XML parsing Static proxy generation with schema-specific PDA-based XML parsing flexibility performance Static proxy generation with generic XML parsing Dynamic proxy generation (DII) with generic XML parsing LATE BINDING

  4. gSOAP Architecture • Static binding • WSDL tools to generate bindings • Stub/skeleton compiler to generate C and C++ code • Schema-specific predictive XML parsing • Supports in-situ serialization and deseralization of application’s native C/C++ data structures in XML • Integrated stacks • TCP/IP - HTTP/S - DIME/MIME - SOAP/XML • Transport latency hiding

  5. Client Application Development and Deployment Service definition:service.wsdl WSDL Importer Client Application Bindings:service.h Client Proxy Object gSOAP Compiler Stub Client-side code Marshal Demarshal

  6. Server Development and Deployment Service definition:service.wsdl WSDL Importer Web Service Bindings:service.h Server Object gSOAP Compiler Skeleton Server-side code Marshal Demarshal

  7. Server Development and Deployment (Alternative) Web Service Bindings:service.h Server Object gSOAP Compiler Skeleton Server-side code Marshal Demarshal Service definition:service.wsdl

  8. Schema-Specific Predictive XML Parsing Bindings WSDL Importer &gSOAP Compiler XML Schemas PredictiveXML Parser class ns__List{ std::vector<char*> item; int in(char* tag); int out(char *tag);}; <complexType name=“List”> <complexContent> <sequence> <element name=“item” type=“xsd:string” maxOccurs=“unbounded”/> </sequence> </complexContent></complexType> int ns__List::in(char* tag){ if (begin_element(tag) != OK) return TAG_MISMATCH; in_vectorOfstring(item, “item”); end_element(tag); }

  9. Latency Hiding with Integrated Stacks Serialization HTTPoverTCP/IP Deserialization

  10. Latency and Speedup Interop Round 2 Base echoVoid() latency better Relative average speedup for array-based SOAP messages(10 to 80,000 ints, doubles, and strings) better

  11. DFA-Based Parsing Expat gSOAP DFA better DFA (opt)

  12. Conclusions • Static bindings with predictive XML parsing delivers performance • Two-stage compilation 1) bindings 2) code • Integrated stacks to improve performance • DFA-based parsing probably too limited for realistic applications • More info: http://gsoap2.sourceforge.net

More Related