190 likes | 351 Views
gSOAP. Mikkel Rosendahl. Agenda. gSOAP teori gSOAP Øvelse. gSOAP. Hvad er gSOAP Hvad bruges gSOAP til Hvordan bruges gSOAP. Hvad er gSOAP ?. Definition: gSOAP er et open source SOAP/XML udviklingstoolkit til C og C ++. Baggrund:
E N D
gSOAP Mikkel Rosendahl
Agenda • gSOAP teori • gSOAP Øvelse
gSOAP • Hvad er gSOAP • Hvad bruges gSOAP til • Hvordan bruges gSOAP
Hvad er gSOAP? • Definition: gSOAPer et opensource SOAP/XML udviklingstoolkit til C og C++. • Baggrund: • gSOAP (SOAP generators) blev introduceret i 2001 af Robert van Engelen fra Florida State University. • gSOAP blev lavet ud fra en tanke om compiler-baseret kodegenerering modsat brug af f.eks. reflection. • I starten understøttede gSOAP kun SOAP RPC, men understøtter nu bl.a. SOAP1.1/1.2.
Hvad er gSOAP? • Egenskaber • Platform uafhængig Understøtter bl.a. Windows, Linux og Mac OS X samt mindre OS som VxWorks, WinCE og Symbian. • Small footprint Klient applikationer kan have et runtimememoryfootprint på ned til 150K.
Hvad er gSOAP? • Egenskaber: • Native XML C/C++ data binding Kan automatisk serialisere: • pointerbaserede data strukturer • Unions • Enums • Klassenedarvning • Memory management I gSOAP nedlægges objekter, som styres af proxy’en, automatisk når proxy objektet nedlægges. På serversiden nedlægges objekter ved explicitte kald til soap_destroy() og soap_end(). virtual ~HelloGsoap() { if (soap) { soap_destroy(soap); soap_end(soap); soap_free(soap); } };
Hvad er gSOAP? • Egenskaber: • Hastighed SOAP service invokeringround-trip < 1 ms. Til sammenligning ligger hastigheden for Apache Axis 1.2 på 2,5-7 ms(Jun et al., Speed-up SOAP Processing by Data MappingTemplate)
Hvad er gSOAP? • Understøttede SOAP specifikationer : • WS-I Basic Profile 1.0a • SOAP 1.1 • SOAP 1.2 • WSDL 1.1 • Enkelte WS-*
Hvad bruges gSOAP til? • Web services til embeddede systemer. • Web services til legacycode • Generering af: • Stubbe / skeletons • Web service specifikationer • WSDL
Hvordan bruges gSOAP? • Værktøjerne: Der er 2 command-line værktøjer, wsdl2h og soapcpp2, til generering af proxy kode mm. • wsdl2h wsdl2h er en WSDL parser, som bruges til at generere en web service specifikation, i form af en headerfil, ud fra en WSDL.
Hvordan bruges gSOAP? • Værktøjerne: • wsdl2h
Hvordan bruges gSOAP? • Værktøjerne: • wsdl2h Options forklaret: • I: sti til filer, der skal inkluderes – i dette eksempel typemap.dat • f: genererer C++ kode. • o: output fil for web service specifikationen. Dette er blot et uddrag af de options der findes for wsdl2h
Hvordan bruges gSOAP? • Værktøjerne: • wsdl2h • Den genererede headerfilindeholder: • parametertyper. • definitioner for service funktioner. • For at web service specifikationen kan benyttes, skal den kompileres med soapcpp2 compileren.
Hvordan bruges gSOAP? • Værktøjerne: • soapcpp2 soapcpp2 er en stub / skeletoncompiler, som genererer filer ud fra en web service specifikation, som den der dannes af wsdl2h parseren.
Hvordan bruges gSOAP? • Værktøjerne: • soapcpp2 Options forklaret • C: genererer kun client-side kode. • L: ingen .lib fil. Denne bruges til at lave et statisk library. • I: sti til filer der skal inkluderes, her stdvector.h • w: ingen WSDL generering. • x: ingen sample XML message generering.
Hvordan bruges gSOAP? • Værktøjerne: • soapcpp2 Følgende filer dannes: • Alle filerne skal inkluderes i klient projektet. Uddrag af filerne: • soapHelloGsoapProxy.h – indeholder selve proxyen. • soapC.cpp - indeholder serializers og deserializers. • HelloGsoap.nsmap – indeholder mapningen mellem namespaceprefixes og XML namespaces.
Hvordan bruges gSOAP? • Værktøjerne: • Opskrift: • Generér en header med wsdl2h • Compileheaderen med soapcpp2 • Opret en C++ win32 konsol applikation med standard indstillingerne. • Inkludér filerne soapcpp2 genererede i projektet. • Inkludér stdsoap2.h og stdsoap2.cpp fra <path to gsoap>\gsoap-2.7\gsoap\. Disse filer indeholder runtimelibrary med XML parser. • Sæt precompiledheaders for soapC.cpp, soapClient.cpp og stdsoap2.cpp til ”Not usingprecompiledheaders” • #include-r .nsmap, proxy.h og stdsoap2.h filerne i stdafx.h. • Skrive klient kode.
Hvordan bruges gSOAP? • Brug af den autogenererede kode Indpakning Responskode
Øvelse • Start med at hente toolkittet på http://www.cs.fsu.edu/~engelen/soap.html . • Lav en simpel Hello World ASP.NET web service. Sørg for at denne har mindst to metoder: En der tager imod simple typer, og en der tager imod komplekse typer. • Benyt gSOAP til at generere client-side kode ud fra web servicens WSDL. Til dette benyttes wsdl2h.exe og soapcpp2.exe • Lav en klient applikation, der benytter den autogenererede proxy til at kalde web servicen.