Gibt es leichte alternativen zu gSOAP?
Habe ich versucht, mit Hilfe von gSOAP für den Zugriff auf einen web-service (z.B. mit Hilfe der mitgelieferten WSDL zu generieren, C stubs und dann mit Ihnen in einer app). Allerdings habe ich festgestellt, dass die generierten .c-und Objekt-Dateien ist Recht groß (mehrere Megabyte) haben, ist ein problem im embedded-Umfeld, wo ich arbeite.
Kennen Sie ein einfacher SOAP-Bibliotheken, oder muss ich zurückgreifen, um generische XML-Generatoren und Parser wie ezXML?
Willkommen auf der (nicht so) "Simple Object Access Protocol" - der aufgeblähte <strike>Schwein</strike> Elefanten-Lösung, die auf SOA (Service Orientierte Architektur).
Ich sehe nicht, warum SEIFE ist selbst Schuld hier. Es ist von der Größe der Dienste-definition, die hat nichts zu tun mit SEIFE. XML oder JSON über REST wäre das gleiche, size-wise. Aber am Ende, würde wahrscheinlich noch schlimmer sein, da Sie die code - alle die Serialisierung selbst, ohne einen bequemen Daten-Bindung, erzeugt den code für Sie. Ich benutze gSOAP für automatische Daten-Bindungen, klare Sieger. Ansonsten, ohne gSOAP, so dass Programmierer arbeiten lange Stunden auf mühsame XML-oder JSON-API-Codierung für große Leistungen ist damit der Vergangenheit an.
Weitere überprüfung offenbart, die eine ziemlich standard-app für XML-message-Austausch mit gSOAP nimmt unter 100k code und läuft 10k Nachrichten/Sek. Zumeist werden automatisch codiert sind Werkzeuge, keine harte Arbeit. Willkommen in der Zukunft der auto-coding.
Ich sehe nicht, warum SEIFE ist selbst Schuld hier. Es ist von der Größe der Dienste-definition, die hat nichts zu tun mit SEIFE. XML oder JSON über REST wäre das gleiche, size-wise. Aber am Ende, würde wahrscheinlich noch schlimmer sein, da Sie die code - alle die Serialisierung selbst, ohne einen bequemen Daten-Bindung, erzeugt den code für Sie. Ich benutze gSOAP für automatische Daten-Bindungen, klare Sieger. Ansonsten, ohne gSOAP, so dass Programmierer arbeiten lange Stunden auf mühsame XML-oder JSON-API-Codierung für große Leistungen ist damit der Vergangenheit an.
Weitere überprüfung offenbart, die eine ziemlich standard-app für XML-message-Austausch mit gSOAP nimmt unter 100k code und läuft 10k Nachrichten/Sek. Zumeist werden automatisch codiert sind Werkzeuge, keine harte Arbeit. Willkommen in der Zukunft der auto-coding.
InformationsquelleAutor che | 2010-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kürzlich sah, in dieser Frage zu, und die beste option, die ich fand, war, gSOAP, es ist sehr ausgereift und gut getestet. Jedoch, ich beschloss zu gehen, eine nicht-SOAP-route, die war eine option, da bin ich auf client und server-Seiten. Vor der Verwendung von gSOAP, stellen Sie sicher, dass Sie Leben können mit Ihrer Lizenz, können Sie verpflichtet, eine release-code, oder bezahlen Sie, je nachdem wie Sie es verwenden.
Weitere option ist Apache Axis2/C, obwohl ich keine Erfahrung mit ihm (ich würde vermuten, dass es eine ähnlich große Stellfläche gSOAP). Ihre client-API ist hier. Ein tutorial über die client-API ist hier.
Wenn Sie sich entscheiden, um die geparsten XML-route, die Sie interessieren könnten diese SO Frage (siehe Antworten).
Könnten Sie auch Kasse boost::spirit für die Analysierte Strecke. Es hat die Fähigkeit, machen Sie kleine, schnelle, spezialisierte (und allgemein) - Parser, wenn Sie bequem mit C++ (Sie können geschrieben werden ablaufinvariant zu machen, ist also eine Berufung, die Sie durch ein statisches Objekt mit einem extern "C" - Schnittstelle ist koscher). Ich kann mich dafür verbürgen, für die es im Allgemeinen Sinne (nicht spezifisch für XML). Steile Lernkurve, aber große Belohnung.
InformationsquelleAutor academicRobot
Ist dies ein web-service, die Sie erstellen? Wenn ja, erwägen Sie die Verwendung REST anstelle von SEIFE. REST ist wesentlich einfacher, und Sie können vorhandene, getestet, funktioniert nun HTTP-Handler, anstatt mich durch einen riesigen HTTP - XML - SOAP-übersetzung-Schicht.
Wenn Sie verbrauchen Sie jemand anderes web-service, überprüfen Sie die SOAP-schema und/oder Beispiele von Antworten. Ich kann nicht glauben, dass ich das befürworte, aber wenn das schema ist nicht erweiterbar oder rekursive, können Sie besser dran mit einem einfachen LALR-parser oder auch string-matching in der raw-HTTP-Antworten, anstatt zu versuchen, zu analysieren, SOAP oder XML überhaupt. Dies ist weit einfacher zu implementieren in embedded C.
REST hat auch einen weiteren großen Nachteil: es passt nicht-Ereignisse-orientierten web-services, die die meisten der wirklichen Welt-web-services.
InformationsquelleAutor Dour High Arch
In der Regel fallen wir zurück zu der Erstellung der XML direkt (meist von string-Verkettung), in denen keine gute SOAP-Bibliothek verwendet werden kann.
Andere Lösung könnte sein, dass Sie Umschalten auf JSON, die (in der Regel), hat kleineren overhead und request/response-Größen, so dass es könnte besser sein, in embedded-Programmen. Wenn Sie nur über eine SOAP-WebService verfügbar, Sie könnte verwenden Sie einen proxy-Skript auf dem Server übersetzt, die JSON-Anfragen auf SOAP-Requests und SOAP-Antworten in JSON Antworten.
InformationsquelleAutor Morfildur
Haben Sie sich Apache CXF. Es hat mehrere code-gen-features
Ein hilfreicher Ratgeber bauen ein Verbraucher ist hier.
InformationsquelleAutor Srikar Doddi