gSOAP Werkzeug für SOAP-Webdienste und XML-basierte Anwendungen

gSOAP Werkzeug für SOAP-Webdienste und XML-basierte Anwendungen
Copyright © The Florida State University, 2010.All rights reserved.
For original English text, go to: http://www.cs.fsu.edu/
Translated by A.Romanova

Das gSOAP Werkzeug ist eine offene Quelle C und C ++ Softwareentwicklungswerkzeug für SOAP/XML Webdienste und Ober- (nicht-SOAP) C/C ++ XML Daten bindings. Das Werkzeug analysiert WSDLs und XML Diagramme (getrennt oder als ein vereinigter Satz) und stellt die XML Diagramm-Typen und die SOAP-Nachrichtenprotokolle zu leicht handhabbaren und effizienten C und C ++ Code dar. Es unterstützt auch das Herausstellen (Vermächtnis) C und C ++ Anwendungen als SOAP/XML Webdienste, durch Auto-Erzeugung XML Anordnungscode und WSDL Spezifizierungen. Oder Sie können es einfach verwenden, um XML zu/von C und C ++ Daten automatisch umzuwandeln. Das Werkzeug unterstützt Optionen, zu erzeugen reinen ANSI C oder C ++ mit oder ohne STL.

Das gSOAP Werkzeug wird durch Spitze-Fortune 100 weltweiten Gesellschaften verwendet, einschließlich der 5 ersten Technologiegesellschaften. Die Geschwindigkeit, Zuverlässigkeit und Flexibilität, ist mit einer bewiesenen Spur-Aufzeichnung verbunden und ist von einigen der größten Technologieverkäufer verwendet, macht es eine ideale Plattform Anwendungen zu entwickeln, Webdienste und XML-Verarbeitung verwendend. Anwendungen schließen eingebettete Systeme, bewegliche Geräte, Fernmeldewesen, Router, Online-Spiele, Webfernsehen, Banksysteme, Versteigerungssysteme, Nachrichtenausgänge, Netzverwaltungssysteme, Bratrost und Wolke Rechenplattformen, und Sicherheitssoftware ein. Siehe zum Beispiel Erfolg-Geschichten.

Das gSOAP Werkzeug bietet einen umfassenden und durchsichtigen C/C ++ XML Daten Anbindung-Lösung an, durch das Autocodieren von Techniken. Das speichert den Entwickler wesentliche Zeit, um SOAP/XML Webdienste in C/C ++ vollzuziehen. Außerdem, der Gebrauch von XML Daten bindings vereinfacht bedeutsam den Gebrauch von XML in Anwendungen, durch automatisches Kartographieren von XML zu C/C ++ Datentypen. Anwendungsentwickler müssen nicht mehr die Anwendungslogik spezifischen Bibliotheken und XML-zentrischen Datendarstellungen wie DOM anpassen.

Das Werkzeug ist vereinbar mit WS-I Grundlegenden Profil 1.0a, 1.1, und 1.2, passierte W3C Datenbinding Kompatibilitätsprüfung, und interoperiert mit anderen SOAP-Stapeln wie WCF.NET, und Axis. Höhepunkte sind Unterstützung für das Wenden und die Sicherheitsprotokolle, verströmen Attachments (MTOM, MIME, DIME) für effiziente binäre Übertragungen. Übertragung über HTTP (S), TCP/UDP, und andere Transportprotokolle werden unterstützt, günstigen plugins verwendend (oder Callbacks  von  Benutzer genannt, im Falle dass Sie I/O überreiten wollen).

Das gSOAP Werkzeug erfüllt einen ANSI C und C ++ XML Daten-Anbindung durch den Gebrauch von Compiler-Technologien. Diese Technologien stellen kartografisch XML Diagramme zu C/C ++ Definitionen und umgekehrt dar. Es gibt zwei Hauptvorteile zu dieser Annäherung. Erstens, das starke Schreiben  versichert den sicheren Gebrauch von getippten Daten in Ihrer Anwendung und garantiert auch, dass die XML Daten XML Syntaxanalyse der Gültigkeitserklärung passiert hat. Zweitens, Compiler- gegründet auf spezifischen Schema-Syntaxanalyse und Gültigkeitserklärung ist effizienter als anderen XML Syntaxanalyse-Techniken.

Das gSOAP Werkzeug auch verbraucht und erzeugt WSDL und XML Diagramme (XSD). Es stellt vorhandenen C/C ++ Datentypen und Anwendungsfunktionen zu WSDL kartografisch dar, dadurch unterstützen und vereinfachen die Konvertierung des Vermächtnis-Codes in Webdienste. Codebeweglichkeit ist für viele Plattformen erreicht worden, einschließlich eingebetteter Systeme und Echtzeitsoftware.

Anfangend: ein schneller Tipp wie auf gSOAP anleiten.

Infoblatt: eine schnelle Übersicht von Hauptmerkmalen.

Lizenzvergabe: Öffnen Sie Quelle, das lizenzierte Modell.

Download: Fangen Sie heute an.

Warum Gebrauch gSOAP?

Hier ist eine Zusammenfassung von 16 Gründen, warum glauben wir, dass Sie gSOAP für Ihre Projekte versuchen wollen:

  1. Beweglichkeit: GSOAP unterstützt die meisten Plattformen, einschließlich eingebetteter Systeme und kleinen OS (zum Beispiel WinCE, Symbian, und PalmOS). Beweglichkeit wird für Windows (98, XP, Vista), Linux, Unix, Mac OS X, Solaris, HP-UX, AIX, FreeBSD, TRU64, Irix, QNX, und VxWorks geprüft.
  2. Stabilität: Die Software ist reif. Entwicklung und Prüfung fanden mehr als mehrere Jahre seit 2001 statt. Die Software wird durch viele Industrieprojekte und Produkte verwendet.
  3. Breite Benutzerbasis: mehr als 250.000 Downloads seit 2003, mehr als 6.000 Adressenliste-Mitglieder, und Tausende von Abmachungen der Lizenz/Unterstützung mit Gesellschaften, einschließlich mehreren Glückes 100 Gesellschaften. Hier gibt es eine kurze Auswahl an den Erfolg-Geschichten und eine Zusammenfassung von Benutzerzeugnissen.
  4. All-inklusive in einem Paket: Die Unabhängigkeit von Drittwerkzeugen und Bibliotheken sichert erfolgreiche Aufbauen und zuverlässige Laufzeitausführung.
  5. Offene Quelle: freie offene Quelle für den nichtkommerziellen Gebrauch. Öffnen Sie die Quelle kommerziell-verfügbare Lizenzvergabe.
  6. C und C ++ Unterstützung: Unterstützt sowohl reiner ANSI C als auch gemischter C/C ++ Anwendungsentwicklung.
  7. Umfassende XML Daten bindings: Das gSOAP Werkzeug führt einen reinen und Eingeborenen C/C ++ Daten bindings zu XML, verwenden automatischen mappings und Codegeneration für benutzerbestimmten C und C ++ Datentypen. Das Werkzeug veröffentlicht automatisch auf den Zeigestock gegründete Datenstrukturen, einschließlich zyklischer Graphen, und Unterstützungen STL (teilweise), Vereinigungen, enums, und Klassenerbe. Versuchen Sie Online-Demo (verlangt URL-ADRESSE von WSDL oder XSD).
  8. Kompatibilität und Unterwürfigkeit: Das Werkzeug folgt dem WS-I Grundlegenden Profil 1.0a, 1.1, und 1.2 Gehorsam-Empfehlungen. Es warnt über potenzielle Kompatibilitätsprobleme vor dem Bauen einer neuen Webdienst-Anwendung, so müssen Sie nicht einen anderen Entwicklungszyklus durchgehen, um Ihre Dienstleistungen entgegenkommend zu machen. Außerdem ist ein Bericht verfügbar, um Übereinstimmung zu prüfen. Außerdem die W3C Datenbinding Kompatibilitätsergebnisse für gSOAP zeigen außergewöhnliche guten XML zu Typ mappings (wahrer XML zu Typ mappings, nicht XML zu DOM-wie Strukturen).
  9. Industriestandardprotokolle: SOAP 1.1/1.2 (RPC Verschlüsselung und dokumentisch/wörtliche Stile), WSDL 1.1, und UDDI v2. WS-Politik 1.2/1.5, WS-SecurityPolicy 1.2, WS-ReliableMessaging, WS-Wenden. Unterstützungen XML Diagramm primitive Typen XSD, simpleTypes, complexTypes, Erweiterung, Beschränkung, Elemente, Attribute, Verweisungen des Elements/Attributes, sequence/all/choice, Gruppen, attributeGroups, Ersetzungen, any/anyAttribute, importiert/einschließt/wiederdefinierte Diagramm, und SOAP-Reihe (einschließlich der polymorphen und mehrdimensionalen spärlichen Reihe).
  10. Transport: HTTP/S, TCP, UDP (SOAP-over-UDP), MIME (SwA), DIME (Strömung), MTOM (Strömung), HTTP1.0/1.1, IPv4, IPv6, RSS, XML-RPC, WS-Wenden. HTTP Stapel unterstützt HTTP/1.1 POST/GET SOAP/XML Nachrichtenübermittlung mit der Kompression, Ausbrüche, halten-lebendig, Protokollierung, und SSL Verschlüsselung.
  11. Sicherheit: HTTPS und WS-Sicherheit: Authentifizierung, Zeichen, Digitalunterschriften.
  12. Geschwindigkeit: Die spezifische-Diagramm Kompiler-erzeugte Code ist schnell. Benchmarking zeigt die vergleichbare Geschwindigkeit oder besser als schnellster XML parsers (berichtet von begutachteten technischen Papieren). Typische Rundfahrt-SOAP-Dienstbeschwörungslatenz sind weit darunter 1 Millisekunde.
  13. Debugging und Prüfung: In der Fehlersuchprogramm-Weise erzeugt Transport und Änderungsprotokoll, auch in der Fehlersuchprogramm-Weise das automatische Speicherverwaltung warnt über Leckstellen, die Werkzeuge erzeugen XML Beispielnachrichten (von WSDL) für  on- und off-line Prüfung, automatische Generation des Echo prüft Testserver-Code für den Kunden.
  14. Kleiner Fußabdruck: Client-Anwendungen können weniger als 100 Kilobyte mit einem Gesamtlaufzeitspeicherfußabdruck von weniger als 150 Kilobyte sein. Speicherverwaltung verwendet Müll-Sammlung, so können (deserialisierten) Daten ohne Mühe aufgeräumt werden.
  15. Zahlreiche Beispiele: Das Softwarepaket schließt viele Codebeispiele ein, einschließlich eigenständigen HTTP/1.1 und HTTPS-sicheren Webservers.
  16. Webserver-Integration: Schließt Apache_mod, IIS, WinInet, CGI, und FastCGI-Schnittstellen ein, um Ihre Dienstleistungen zu integrieren.
  17. Aktive Wartung und Entwicklung: Die Software ist Feature reich, aber es gibt immer neue Eigenschaften gewünscht zu sein. Siehe die letzten Nachrichten auf gegenwärtigen Entwicklungen und zukünftigen Plänen.

Wer verwendet gSOAP?

Adobe Systems, AOL, BEA, Boeing, Cisco Systeme, CNR, eBay, Ericsson, Exxon/Mobile, HP, IBM, Intel, Microsoft, Nokia, Pfizer, Siemens, WindRiver, Xerox, und viele andere (dessen Namen werden wir uns nicht erlaubt bekannt zu machen).

Neue Nachrichten und Ansagen auf gSOAP

Januar 2012:

Erwin Zwart von GuruCE schreibt onHosting webservices auf Windows Eingebettete Kompakt, gSOAP verwendend: Uploading Datei. Siehe unten den Zugang im Februar 2011 für mehr Details auf gSOAP über Windows CE.

Oktober 2011:

Ausgelöst 2.8.4 mit der WS-Entdeckungsunterstützung, ein Tandem Ohne Unterbrechung, und mehrere andere Erhöhungen.

Mai 2011:

Das gSOAP “XML-RPC-JSON” all-inklusive in einem Lösung erlaubt XML-RPC, in der Kombination mit JSON im gSOAP 2.8.3 Ausgabe verwendet zu werden. XML-RPC Daten können in JSON und umgekehrt ohne das zusätzliche Codieren in Fortsetzungen veröffentlicht werden. Eine XML-RPC-Aktualisierung mit JSON ist verfügbar hier für alle vor 2.8.3 Ausgabe.

März 2011:

Jon Scobie stellte eine Übersicht und Walk-Through der gSOAP Apache-Modul Braindump oder gewaschenes Gehirn zusammen?.

Februar 2011:

Lesen Sie mehr über die Bewirtung von Webdiensten über Windows Eingebettete Kompaktgeräte, gSOAP auf dem Windows CE von den Experten in GuruCE verwendend.

Januar 2011:

Die WS4D-gSOAP Webdienste für das Gerät-Projekt bringt Dienstorientierte Architektur (SOA) und Webdienst-Technologie zu den Anwendungsgebieten von Industrieautomation, Hausunterhaltung, Automobilsystemen und Fernmeldesystemen.

Januar 2011:

Artikel von Nokia auf gSOAP für Symbian: Verwenden gSOAP für Webdienste. Der Artikel ist für Symbian S60 Gerät-Entwickler beabsichtigt, aber der Artikel ist wirklich viel mehr allgemein und für jeden nützlich.

Dezember 2010:

SEIFE Pausenlose Tandem-Unterstützung für C/C ++ XML Webdienste ist verfügbar in der Form einer steckbasierten Brücke für gSOAP. Die interessierte Entwickler für diese Technologie können mit den gSOAP Entwicklern in Verbindung setzen, siehe hier wie uns zu finden.

Oktober 2010:

Für Benutzer der ONVIF Diagramme für Networked Kameraanwendungen, verwenden Sie gSOAP 2.8.1 oder später:

>wsdl2h-t typemap.dat ptz.wsdl
soapcpp2-I $HOME/gsoap/import-I $HOME/gsoap/ptz.h

da können Sie typemap.dat vom gSOAP Paket kopieren und dann zu dieser Datei denfolgenden bindings hinzufügen:

ptz = “http:// www.onvif.org/ver20/ptz/wsdl”
onv = “http:// www.onvif.org/ver10/schema”
wsnb = “http://docs.oasis-open.org/ wsn/b-2″
wsrfbf = “http://docs.oasis-open.org/ wsrf/bf-2″
wstop = “http://docs.oasis-open.org/ wsn/t-1″

Verwenden Sie andere Optionen mit soapcpp2 wenn anwendbar (-c für C,-i für C ++ Proxyklassen usw.). Bemerken Sie sich, dass 2.8.1 nicht eine Bibliothek für WSRF oder Ankündigungsoperationen noch einschließt. ptz.h schließt die Nachrichtenschablonen ein, und Protokoll-Operationsdurchführungen sollten entsprechend hinzugefügt werden. Mai 2010:

Neuer Apache mod Projekt: mod_wscpp für die Apache-Webserver-Integration von gSOAP Dienstleistungen.

April 2010:

Nachrichten für das I-Phone und die iPad Entwickler, die sich auf gSOAP für XML und das Webdienst-Codieren verlassen: Der viel-diskutierte Abschnitt 3.3.1, dass Apfel sich geändert hat, betrifft nicht gSOAP Gebrauch. Tatsächlich kann es ein guter Grund sein, bei gSOAP für den Eingeborenen C und C ++ Code zu bleiben, anstatt auf ein Quer-Plattform-Werkzeug umzuschalten, um von einer verschiedenen Entwicklungsplattform oder Programmiersprache zu quer-kompilieren (der nicht mehr für entwickelten Anwendungen iPhone iPad erlaubt wird). Ich plane ein Benutzerhandbuch für gSOAP für den iPhone/iPad zu kompilieren, spezialisiert auf dem Gebrauch von NSSocket( ist empfohlen), statt BSD Steckdosen und anderer nützlicher Dinge.

April 2010:

Ausgelöste gSOAP 2.7.16. Diese Ausgabe schließt WS-ReliableMessaging, eine neue Autotestserver-Codegenerationseigenschaft (soapcpp2 Auswahl-T), erhöhte Beispiele und Dokumentation, und neue Eigenschaften wie “Colon-Notation” ein, um namespace Präfixe zu C/C ++ Namen zu binden.

September 2009:

Die WS-I 1.1 und 1.2 grundlegende Profil-Berichte werden aktualisiert. Siehe die Berichte.

August 2008:

Als ein Pädagoge stieß ich auf das Buch “Webservice: Principles and Technology” durch Michael P. Papazoglou. Ich empfehle es hoch für seine umfassende Überprüfung von Webdiensten und verwandten Technologien.

Januar 2008:

Webdienste Ohne Schmerz: gSOAP Schreibt Ihren XML, SOAP, und RPC. Kurzer Artikel zeigt die Verdienste von gSOAP, um SOAP/XML Anwendungen zu erzeugen: “GSOAP kann Wochen und viele Tausende von Dollars der Kosten wörtlich abrasieren, neue Software des Server-Kunden zu entwickeln.”

Juni 2007:

MultiXTpm ist ein Anwendungsserver, Message Oriented Middleware (MOM) und Transaction Processing(TP) Monitor. Es stellt die Laufzeitumgebung und reiche API zur Verfügung, für Entwicklung von grösen, ersteigbar-verteilten Anwendungen für OLTP. Der MultiXTpm gSoap Erweiterer addsfunctionality auf der Spitze von gSoap und MultiXTpm.

April 2007:

Die W3C Datenbinding Kompatibilitätsergebnisse sind verfügbare mit gSOAP eingeschlossen Statistiken,  danke dem Hugo Haass und W3C XML Diagramm-Muster für die Databinding Kompatibilitätsarbeitsgruppe. Die Mission der Arbeitsgruppe ist den Einschluss von XML Diagramm-Konstruktionen durch Daten verbindliche Werkzeuge für Programmiersprachen und Fachwerk zu bestimmen, wer wird den Arbeitsgerät im relevanten Gebiet erzählen, welche Teile von Diagramm-Benutzern sind höchstwahrscheinlich si anzunehmen, gut zu unterstützen. Update: Wir sind zufrieden zu berichten, dass gSOAP 2.7.17 geht 100 % aus 294 Tests über, das sitzt ihn klar getrennt von den anderen Werkzeugen. Der GSOAP-Autotestecho-Server wird ins 2.7.17 Paket eingeschlossen.

Februar 2007:

XML Zeitschriftenartikel SYS-CON vergleichen gSOAP zu anderem C/C ++ Webdienst-Werkzeuge: Das Herausstellen SOA Ermöglichte C Apps als Webdienste durch Mohit Chawla und Vijaya Bhaskar Peddinti.

November 2006:

Interessiert sind für das Verwenden gSOAP Webdienst mit UIQ 3 Kopfhörer? Lesen Sie Webdienste für UIQ 3 und gSOAP Tutorenkurs durch Sony/Ericsson.

Oktober 2006:

Lesen Sie eine Einführung in gSOAP durch die Filiale Xie von IBM damit bauen Instruktionen für MSVC ++ 6.0: Verwenden Sie gSOAP, um J2EE Webdienste zu verbrauchen, die durch WSAD durch HTTP und HTTPS geschaffen sind.

Juni 2006:

SOA Weltzeitschrift-Artikel SYS-CON auf dem Stärken gSOAP für die Vermächtnis-Systemintegration durch James Caple.

April 2006:

Übertroffen 100.000 gSOAP Werkzeug lädt von SourceForge seit 2003 herunter!

Januar 2006:

Pascal Botte zeigt wie Lego Mindstorms Anhänger auf den Lego RCX Ziegel mit gSOAP Webdiensten zugreifen kann. Der neue Lego Mindstorms NXT ist angekommen!

Juni 2005:

Ist Webdienst-Skala frei? Finden Sie heraus.

Juni 2005:

Ein neues Patent angediehen dem Microsoft für XML “Anordnung”, hat etwas Tumult verursacht, siehe XML Anordnung offene und vorherige Kunst. Die Basis der gSOAP Software datiert das XML Anordnungspatent des Microsofts zurück und wird so als vorherige Kunst betrachtet: Das in meinem Forschungslaboratorium geführte Projekt des Masters von Gunjan Gupta führte einen XML Anordnungsalgorithmus in einem Bearbeiter durch, den wir für C entwickelten, der auf eine SOAP und kartographierten XML basiert ist, den wir 1999 entwickelt haben. Der Projektbericht TR-001205 wurde in der Abteilung der Informatik 2000 abgelegt, bevor das Patent des Microsofts abgelegt wurde. Zeigt an, dass es gut ist, dass wir führen, aber nicht (die Webdienst-Technologie) folgen.

Mai 2005:

Ein Feuilleton auf gSOAP erschien in der Linux Zeitschrift für den Linux (und gSOAP!) enthousiasts in Frankreich.

Februar 2005:

Siehe unser Sonderbeitrag gSOAP & Webdienste im C/C ++ Benutzerzeitschriftenproblem im Februar auf Webdiensten und C ++!

August 2004:

Das gSOAP Werkzeug erhielt einen fünf Stern-Bewertung in allen Kategorien, in einer neuen Überblick-Studie von C ++ Webdienst-Werkzeuge: Siehe CRN-Überblick-Artikel für mehr Details.

Juli 2004:

iAnywhere/AvantGo verwenden gsoap für ihr M-Geschäft Anywhere Server. M-Geschäft Anywhere stellt eine Plattform zur Verfügung, um Webbasierten Inhalt und Anwendungen auf ein großes Angebot an beweglichen Geräten schnell und rentabel mit dem minimalen Wiedercodieren zu liefern.

März 2004:

Die Ausgabe von Borland C ++ BuilderX 1.5 bringt mehrere neue Lösungen für Symbian OS, einschließlich das ersten, Eingeborener C ++, Schnelle Anwendungsentwicklung (RAD) Unterstützung. Ein Port von gSOAP wird die Arbeit von Unternehmensentwicklern erleichtern, die Webdienste verwenden wollen, um korporative Daten zu Symbian OS Kopfhörer zu mobilisieren. Lesen Sie mehr.

Dezember 2003:

Neue WSDL Werkzeuge (WSDL parser, Import, und Generator) werden als ein Teil des gSOAP 2.4 Ausgaben veröffentlicht. Der neue WSDL parser schließt viele Erhöhungen ein, um SOAP 1.1/1.2 RPC, wörtliche Verschlüsselung, und Dokumentenstil-Webdienste zu entwickeln.

November 2003:

IBM hat den Betriebsleiter von IBM Tivoli Access für das E-Geschäft ausgelöst. Der Tivoli Zugriffsbetriebsleiter ist ein Preis-Gewinnen, politikbasierte Zugriffskontrolllösung für das E-Geschäft und die Unternehmensanwendungen. Ein Teil des Tivoli Zugriffsbetriebsleiters verwendet gSOAP.

November 2003:

Die OFACSearch Anwendung, die mit gSOAP durch die Oase-Gruppe entwickelt ist, wird verwendet, um Gesellschaften zu helfen, laut dem Finanzministeriumsabteilungsbüro der Auslandsanlagenkontrolle (OFAC) Regulierungen.

Oktober 2003:

Das Adobe Version-Cue, eine innovative Dateimanagement-Eigenschaft von kürzlich entschleiertem Adobe Creative Suite, verwendet gSOAP als Fundament seines SOAP-Dienstleistungskunden.

Oktober 2003:

Das BEA WebLogic Unternehmenssicherheitserzeugnis ist Familie von Sicherheitslösungen, die erhöhte Anwendungssicherheit zur Verfügung stellen, die politikbasierte delegierte Verwaltung, Beglaubigung mit dem einzelnen Zeichen – auf, konsolidierte Rechnungsprüfung, und dynamische Rolle und politikbasierte Genehmigung mit der Delegation einschließt. Ein Teil dieses Produktes verwendet die gSOAP Bibliothek.

Oktober 2003:

Foundstone 3.0 Professional, ein fortgeschrittenes Netzsicherheitsanalyse- und Schutzwerkzeug, verwendet gSOAP als ein Teil seines Datennachrichtenfachwerks.

Oktober 2003:

ObjectStore ausgelöste seinen Echtzeitereignis-Motor 3.0, eine Hochleistungsanwendungslösung für die Echtzeitfestnahme, Organisation und gleichzeitige Abfrage, Finanzereignis-Daten zu verströmen. Der Ereignis-Motor verbindet äußerste Skalierbarkeit mit einer flexiblen “Cache-Forward”-Architektur, um Echtzeitanalyse auf strömendes Daten-Ereignis in verteilten Umgebungen zu unterstützen, ohne Festnahme oder Anfragengeschwindigkeiten zusammenzupressen. Der Echtzeitereignis-Motor beruht auf gSOAP.

September 2003:

Das AOL 9.0 YGP (haben Sie Bilder) Team hat gSOAP verwendet, um das Fundament für den SOAP-Dienstleistungskunden zur Verfügung zu stellen, der in den AOL 9.0 Produkt eingeschlossen ist.

Juli 2003:

PalmSource in der Partnerschaft mit IBM bietet ein Webdienst-Werkzeug für Bewegliche-Geräte an, auf gSOAP basiert wird.

lesen Sie mehr…

Mai 2002:

CapeClear Artikel auf Webdiensten für C und C ++ Anwendungen.

Anfangend

Laden Sie das letzte gSOAP Paket aus SourceForge gSOAP Projektseite herunter. Das gSOAP Vertriebspaket schließt zwei Bearbeiter-Werkzeuge ein, um Ihre Anwendungen zu entwickeln:

  • Das ‘wsdl2h’ WSDL parser. Dieses Werkzeug wandelt WSDLs und XSD Dateien in kommentierten C/C ++ Definitionen um.
  • Der ‘soapcpp2′ Stummel und Skelett-Kompiler. Dieses Werkzeug erzeugt RPC-Code und XML serializers vom kommentierten C/C ++ Definitionen.

Das ‘wsdl2h’ parser wandelt WSDL in gSOAP Headerdateispezifizierungen von Webdiensten um. Diese Spezifizierung gibt einen C/C ++ durchsichtige Ansicht von der Funktionalität des Servers. Die Headerdatei wird durch ‘soapcpp2′ bearbeitet, um die Quellcodestummel und Skelette zu erzeugen, um den Dienst anzurufen, oder einen neuen auf den WSDL basierten Dienst zu bauen.

Die folgende Abteilung erklärt, wie diese Werkzeuge verwendet werden, um Kunden und Server-Anwendungen zu bauen.

Eine schnelle Übersicht How-To

Wir verwenden den gSOAP ‘wsdl2h’ WSDL parser, um die gSOAP Headerdateinspezifizierung eines Webdienstes aus einem WSDL Dokument zu erhalten.

Um eine Headerdatei aus einem WSDL Dokument zu erhalten, führen Sie ‘wsdl2h’ auf einem WSDL:

wsdl2h-o outfile.h infile.wsdl

da infile.wsdl eine WSDL Residentdatei oder eine Webposition des WSDL sein kann. Der outfile.h ist die erzeugte Produktionsdatei. Zum Beispiel:

wsdl2h-o XMethodsQuery.h http://www.xmethods.net/wsdl/query.wsdl

Das erzeugt die Headerdatei XMethodsQuery.h. Die Headerdatei definiert den Dienst in einem vertrauteren C/C ++ Header-Format, das Sie innerhalb Ihres IDE (oder mit Doxygen) durchsuchen können.

Dann führen wir den gSOAP Compiler ‘soapcpp2′ auf der gSOAP Headerdatei, um den Quellcode zu erzeugen, um die Client-Anwendung durchzuführen. ‘Soapcpp2′ Stummel- und Skelett-BCompiler erzeugt Bevollmächtigung (und RPC Stummel) für Ihre Client-Anwendung, wie unten illustriert ist.

Die gSOAP Laufzeitbibliothek versorgt eine Transportschicht mit einem HTTP-Stapel an der Spitze von TCP/IP sowie SSL und DIME/MIME Verhaftungsunterstützung zu versichern.

Um eine Dienstanwendung zu entwickeln, führen Sie den gSOAP ‘wsdl2h’ parser auf einem WSDL, um eine gSOAP Headerdatei zu schaffen. Die Headerdatei wird mit dem ‘soapcpp2′ Compiler:

Der ‘soapcpp2′ Bearbeiter erzeugt den C/C ++ Webdienst-Skelette. Sie können auch ein Vermächtnis C/C ++ Anwendung nehmen und einen Dienst entwickeln, indem einfach Sie in den C/C ++ Webdienst-Methode-Operationen und Datentypen in eine Headerdatei eingehen. Der ‘soapcpp2′ Compiler erzeugt den Quellcode für Ihr Projekt und erzeugt einen WSDL, um Ihren Webdienst anzukündigen.

Kunde-Beispiel

Der XMethods Verzögerter Stock Quote Webdienst stellt einem verzögerten Stock Quote für einen gegebenen Ticker-Namen zur Verfügung, sehen XMethods Verzögertes Stock Quote für Details. Die WSDL Beschreibung des Verzögerten Stock Quote Webdienstes stellt die folgenden Details zur Verfügung:

Endpunkt URL: http://services.xmethods.net:80/soap

SOAP Aktion: “” (2 Anführungszeichen)

Entfernte Methode Namespace: urn:xmethods-delayed-quotes

Entfernte Methode Name: getQuote

Eingangsparameter: symbol of type xsd:string

Ausgangsparameter: Result of type xsd:float

Das gSOAP ‘wsdl2h’ WSDL parser Werkzeug wandelt den WSDL um:

wsdl2h -c -o quote.h http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl

Die-c Optionen stellen sicher, dass die Client-Anwendung in reinem C entwickelt werden kann. Die erzeugte quote.h Datei enthält:

//gsoap ns1 service name: net_DOTxmethods_DOTservices_DOTstockquote_DOTStockQuoteBinding //gsoap ns1 service type: net_DOTxmethods_DOTservices_DOTstockquote_DOTStockQuotePortType //gsoap ns1 service port: http://66.28.98.121:9090/soap //gsoap ns1 service namespace: urn:xmethods-delayed-quotes //gsoap ns1 service documentation: Definitions generated by the gSOAP WSDL parser 1.0 // Service net.xmethods.services.stockquote.StockQuoteService : net.xmethods.services.stockquote.StockQuote web service //gsoap ns1 service method-style: getQuote rpc //gsoap ns1 service method-encoding: getQuote http://schemas.xmlsoap.org/soap/encoding/ //gsoap ns1 service method-action: getQuote urn:xmethods-delayed-quotes#getQuote int ns1__getQuote(char *symbol, float &Result); 

(Bemerken Sie sich: Der Inhalt kann sich abhängig von der ‘Wsdl2h’-Ausgabe ändern.)

Weil der Name des Dienstes ein bisschen lang ist, benennen wir es in der Headerdatei in etwas Einfacheres wegen der Bequemlichkeit um:

//gsoap ns1 service name: Quote 

Die Dienstmethode wird als ein ns1 __ getQuote Funktionsprototyp erklärt, der alle notwendigen Details für den gSOAP Stummel und Skelett-Compiler ‘soapcpp2′ angibt, um die Stummel-Routine und den Parameter-Aufstellen-Code für eine Client-Anwendung zu erzeugen, um mit dem Verzögerten Stock Quote Dienst aufeinander zu wirken.

GSOAP Stummel- und Skelett-Compiler wird auf dieser quote.h Headerdatei aus einem IDE angerufen (z.B. MSVC ++ oder Borland C ++), von einem makefile, oder von der Befehl-Linie mit:

soapcpp2 -c quote.h

Die-c Auswahl stellt sicher, dass der erzeugte Code reiner C ist.

Die folgende Funktion wird durch den gSOAP Compiler erzeugt:

int soap_call_ns1__getQuote(struct soap *soap, char *URL, char *action, char *symbol, float &Result); 

Bemerken Sie sich, dass die Rahmen des erzeugten soap_call_ns1 __ getQuote Vertretung zum ns1 __ getQuote Funktionsprototyp mit drei zusätzlichen Eingangsrahmen identisch sind: Soap ist eine Durchlaufzeit gSOAP Umgebung, URL-ADRESSE ist die SOAP-Webdienst-Endpunkt-URL-ADRESSE passiert als eine Schnur, das NULL sein muss, um den Endpunkt zu verwenden,das im WSDL angegebenen wird, und Handlung ist eine Schnur, die die SOAP-Handlung anzeigen sollte, die durch den Webdienst erforderlich ist, das NULL sein muss, um SOAPAction zu verwenden, den im WSDL angegebenen wird. Der Gebrauch des Präfixes ns1 __ in der entfernten Methode nennt in den Funktionsprototyp-Behauptungsaufschlägen als ein namespace Präfix für die entfernte Methode. Ein namespace Präfix ist unterscheidet vom Funktionsnamen durch ein Paar deren Unterstreichung als in ns1 __ getQuote.

Das folgende C Kundenprogramm ruft die Vertretung an, um das letzte Stock Quote von IBM aus dem XMethods Verzögerter Stock Quote-Dienst wiederzubekommen:

#include "soapH.h" // obtain the generated stub  #include "Quote.nsmap" // obtain the generated XML namespace mapping table for the Quote service  main()      struct soap *soap = soap_new();    float quote;     if (soap_call_ns1__getQuote(soap, NULL, NULL, "IBM", quote) == SOAP_OK)        printf("Current IBM Stock Quote = %g\n", quote);    else // an error occurred        soap_print_fault(soap, stderr); // display the SOAP fault on the stderr stream  }

Ein C ++ Client-Anwendung kann die erzeugte Proxyklasse verwenden, wie in diesem Beispiel gezeigt wird:

#include "soapQuoteProxy.h" // get proxy #include "Quote.nsmap" // get namespace bindings int main() {    Quote q;    float r;    if (q.ns1__getQuote("IBM", r) == SOAP_OK)       std::cout << r << std::endl;    else       soap_print_fault(q.soap, stderr);    return 0; } 

Das nimmt an, dass der Code erzeugt wurde, durch die Weglassung -c Auswahl für ‘wsdl2h’ und ‘soapcpp2′.

Beispiel-Webdienst

Verwenden Sie den gSOAP ‘wsdl2h’ WSDL parser, um eine Headerdatei für einen Dienst zu schaffen, den Sie entwickeln wollen, oder Sie Ihre eigenen Headerdateispezifizierungen schreiben können, um einen neuen Webdienst zu entwickeln. Die letzte Annäherung ist nützlich, wenn Sie einen WSDL nicht haben, um damit anzufangen, und Sie sich mit den Details der WSDL Spezifizierung nicht sorgen wollen. Das folgende Beispiel gibt einen neuen SOAP-Webrechenmaschine-Dienst in einer Headerdatei an. Wir verwenden nicht den WSDL parser, um einen Dienst zu schaffen, weil wir den Dienst in einer Headerdatei definieren und lassen den gSOAP ‘soapcpp2′ Compiler, zu erzeugen einen WSDL für uns stattdessen. Wir wollen einen Dienst entwickeln, der drei entfernte Methoden erfüllt, SOAP RPC verwendend(Note: Der doc/lit ist die Voreinstellung):

// Contents of file "calc.h":  //gsoap ns service name: calculator //gsoap ns service style: rpc //gsoap ns service encoding: encoded //gsoap ns service port: http://mydomain/path/calculator.cgi //gsoap ns service namespace: urn:calculator int ns__add(double a, double b, double &result);  int ns__sub(double a, double b, double &result);  int ns__sqrt(double a, double &result); 

Das Hinzufügen und die U-Boot-Methoden sind beabsichtigt, um zwei doppelte Gleitkommazahlen  hinzuzufügen und abzuziehen, die in Eingangsrahmen a und b versorgt sind, und das Ergebnis der Operation im Ergebnis-Produktionsparameter zurückzugeben. Das sqrt Methode ist beabsichtigt, um die Quadratwurzel des Eingangsparameters a zu nehmen und das Ergebnis im Produktionsparameter-Ergebnis zurückzugeben.

GSOAP Stummel- und Skelett-Compiler wird auf dieser calc.h Headerdatei aus einem IDE angerufen (z.B. MSVC ++ oder Borland C ++), aus einem makefile, oder aus der Befehl-Linie mit:

soapcpp2 calc.h

Der Compiler erzeugt die Skelett-Routinen und eine WSDL Beschreibung des Dienstes. Hier gibt es eine Beispiel-Rechenmaschine-Dienstanwendung, die die erzeugten Skelette das verwendet. Die soap_serve Routine behandelt Kundenbitten:

// Contents of file "calc.cpp": 
#include "soapH.h" 
#include "calculator.nsmap" 
#include <math.h> 
main() 

   soap_serve(soap_new()); // call the incoming remote method request dispatcher 

// Implementation of the "add" remote method: 
int ns__add(struct soap *soap, double a, double b, double &result) 

   result = a + b; 
   return SOAP_OK; 

// Implementation of the "sub" remote method: 
int ns__sub(struct soap *soap, double a, double b, double &result) 

   result = a - b; 
   return SOAP_OK; 

// Implementation of the "sqrt" remote method: 
int ns__sqrt(struct soap *soap, double a, double &result) 

   if (a >= 0) 
   { 
      result = sqrt(a); 
      return SOAP_OK; 
   } 
   else
   { 
      return soap_sender_fault(soap, "Square root of negative value", "I can only compute the square root of a non-negative value");
   } 
} 

Die Erfüllung der entfernten Methoden gibt ein SOAP-Statuskennzeichen zurück. Der Code-SOAP_OK zeigt Erfolg an, während soap_sender_fault eine Ausnahme zurückgibt. Diese Anwendung ist beabsichtigt, um als eine CGI Anwendung an der angegebenen Position (http://mydomain/path/calculator.cgi) zu laufen. Jedoch können Sie einen eigenständigen HTTP/HTTPS Webserver bauen, der regelmäßigem dynamischem HTML-Inhalt und SOAP/XML Webdiensten dient, siehe die gSOAP Schirm-Müllkippe Web Server. Sie können auch Apache_mod, WinInet, IIS, oder Schnell CGI verwenden.

Zitieren gSOAP: Veröffentlichungen

Indem Sie das GSOAP-Projekt zitieren, zitieren Sie bitte das folgende Papier, das zuerst durch gSOAP eingeführt wurde:

Andere gSOAP und Webdienst-zusammenhängende Veröffentlichungen:

  • Robert A. van Engelen, Pushing the SOAP Envelope with Web Services for Scientific Computing, in the proceedings of the International Conference on Web Services (ICWS), 2003, pages 346-354.
  • Robert van Engelen, Gunjan Gupta, and Saurabh Pant, Developing Web Services for C and C++, in IEEE Internet Computing Journal, March, 2003, pages 53-61.
  • Giovanni Aloisio, Massimo Cafaro, Daniele Lezzi, and Robert van Engelen, Secure Web Services with Globus GSI and gSOAP, in the proceedings of EUROPAR 2003.
  • Robert van Engelen, Code Generation Techniques for Developing Web Services for Embedded Devices, in the proceedings of the 9th ACM Symposium on Applied Computing SAC, Nicosia, Cyprus, 2004, pages 854-861.
  • Robert van Engelen, Constructing Finite State Automata for High Performance XML Web Services, in the proceedings of the International Symposium on Web Services (ISWS), 2004, pages 975-981.
  • M. Govindaraju, A. Slominski, K. Chiu, P. Liu, R. van Engelen, and M. Lewis, Toward Characterizing the Performance of SOAP Toolkits, in the proceedings of the 5th IEEE/ACM International Workshop on Grid Computing, pages 365-372, Pittsburgh, USA, 2004.
  • Giovanni Aloisio, Massimo Cafaro, Italo Epicoco, Daniele Lezzi, and Robert van Engelen, The GSI plug-in for gSOAP: Enhanced Security, Performance, and Reliability, in the ITCC conference 2005, IEEE Press, Volume I, pages 304-309.
  • Michael R. Head, Madhusudhan Govindaraju, Aleksander Slominski, Pu Liu, Nayef Abu-Ghazaleh, Robert van Engelen, Kenneth Chiu, Michael J. Lewis, Benchmark Suite for SOAP-based Communication in Grid Web Services , in the proceedings of ACM/IEEE Supercomputing (SC), 2005.
  • Robert van Engelen, Wei Zhang, and Madhusudhan Govindaraju, Toward Remote Object Coherence with Compiled Object Serialization for Distributed Computing with XML Web Services, in the proceedings of Compilers for Parallel Computing (CPC), 2006, pages 441-455.
  • Wei Zhang and Robert van Engelen, TDX: a High-Performance Table-Driven XML Parser, in the proceedings of the ACM SouthEast conference, 2006, pages 726-731.
  • Wei Zhang and Robert van Engelen, A Table-Driven XML Streaming Methodology for High-Performance Web Services, in the proceedings of IEEE International Conference on Web Services (ICWS), 2006, pages 197-206, (best student paper award).
  • Robert van Engelen, Madhusudhan Govindaraju, and Wei Zhang, Exploring Remote Object Coherence in XML Web Services, in proceedings of IEEE International Conference on Web Services (ICWS), 2006, pages 249-256.
  • M. Head, M. Govindaraju , R. van Engelen, and W. Zhang, Benchmarking XML Processors for Applications in Grid Web Services, in the proceedings of Supercomputing 2006.
  • M. Cafaro, D. Lezzi, S. Fiore, G. Aloisio, and R. van Engelen, The GSI plug-in for gSOAP: building cross-grid interoperable secure grid services, in the proceedings of the International Conference on Parallel Processing and Applied Mathematics (PPAM) 2007, workshop on Models, Algorithms and Methodologies for Grid-enabled Computing Environment (MAMGCE), Springer Verlag LNCS Volume 4967, pages 894-901, 2008.
  • Robert van Engelen and Wei Zhang, An Overview and Evaluation of Web Services Security Performance Optimizations, to appear in the proceedings of the IEEE International Conference on Web Services (ICWS), 2008.
  • Wei Zhang and Robert van Engelen, High-Performance XML Parsing and Validation with Permutation Phrase Grammar Parsers, to appear in the proceedings of the IEEE International Conference on Web Services (ICWS), 2008.
  • Robert A. van Engelen and Wei Zhang, Identifying Opportunities for Web Services Security Performance Optimizations, to appear in the proceedings of the IEEE Services Computing Conference (SCC), 2008.
  • Robert A. van Engelen, A Framework for Service-Oriented Computing with C and C++ Web Service Components, ACM Transactions on Internet Technologies, Volume 8, Issue 3, Article 12, May 2008.