Können Sie Beispiele geben, wie Sie gSOAP verwendet haben und wie gut es in Ihre bestehende Architektur integriert wurde? Haben Sie mit gSOAP Entwicklungsengpässe festgestellt?Wo haben Sie gSOAP verwendet?
Antwort
Wir haben vor ca. 4 Jahren gSOAP in einem C++ - basierten Webserver eingesetzt. Insgesamt hat es gut funktioniert. Das einzige große Problem war, dass die Schnittstelle in C und prozedural war (ich verstehe, dass es schwierig ist, eine gute nicht prozedurale Schnittstelle zu entwickeln). Während der Implementierung der Schnittstelle kann es sehr viel wiederholten Code geben, für den Sie möglicherweise Makros verwenden müssen (wir haben die Vorlagenoption nicht zu weit untersucht).
Wir verwenden gSoap, um einen Webdienst auf einem Embedde-Linux-Gerät bereitzustellen, auf dem ein ARM MX-Prozessor ausgeführt wird.
Wir verwenden gSOAP, um einen WCF-basierten Webservice von einer Anwendung zu konsumieren, die auf einem Linux-Gerät implementiert ist, das auf einem ARM-Prozessor läuft. Die Erfahrung ist in hohem Maße gut.
Wir verwendeten gSOAP für eine Reihe von ARM-Clients, um mit einem AXIS Web Service Server zu kommunizieren. Pros von gSOAP:
- sehr leistungsfähig, unterstützt nahezu alle Web Service Konstrukten
- einfach zu bedienen, seine Abstraktion von WS-Aufrufe in Funktionen entfernt alle Web-Service-Komplexität für den Programmierer
- elegante Schnittstellen in C und C++
jedoch liefen wir in mehrere Entwicklungsengpässe:
- bei der Verwendung von Benutzerdefinierte Datentypen wie Maps oder Sets, es braucht einiges an Hacking, um den gSOAP-Compiler dazu zu bringen, damit umzugehen (marshal/unmarshalling). Besonders schlecht mit dynamischen Datenstrukturen.
- Debugging ist schwierig wegen seiner intrinsischen komplexen Netzwerk-, Parsing und Speicherzuweisung Teile. Mach alles möglich, um bei der statischen Speicherzuweisung zu bleiben.
- Die Mailingliste ist am Leben, aber Entwickler sind nicht sehr aktiv. Einfache Fragen können schnell beantwortet werden, aber die schwierigsten Probleme bleiben oft unbeantwortet
- vergessen Sie die Optimierung. Die Verknüpfung in gSOAP verbraucht zur Laufzeit etwa 1 MB Speicher (-Os). Runtime-Leistung ist gut auf unserem 32 MB Linux-basierten ARM-Board, aber es gibt wirklich wenig zu tun, um Optimierung, wenn Sie es brauchen.
Wir verwendeten gSOAP in einem Webserver auf ARM ARM9 400 MHz Gerät. Der gSOAP-Daemon ist mit einem Datenbank-Daemon über die zeromq-Bibliothek verbunden, die auf demselben Gerät ausgeführt wird.
Es unterstützt mehr als 1000 grundlegende Anfragen, die keine Verbindung zur Datenbank erfordern.
Durch die Deaktivierung der Unterstützung für die mehrfach referenzierte SOAP-Option durch die WITH_NOIDREF-Definition konnte die Serialisierungszeit bei großen Anforderungen mit einer großen Anzahl von Serialisierungsknoten etwa viermal schneller verringert werden.