Есть ли легкие альтернативы gSOAP? - PullRequest
11 голосов
/ 25 марта 2010

Я пытался использовать gSOAP для доступа к веб-службе (например, с помощью поставляемого WSDL для создания заглушек на языке C, а затем использовать их в приложении). Однако я обнаружил, что сгенерированные .c и объектные файлы довольно большие (несколько мегабайт), что является проблемой во встроенной среде, где я работаю.

Вам известны какие-либо более простые библиотеки SOAP, или мне приходится прибегать к универсальным генераторам и анализаторам XML, таким как ezXML?

Ответы [ 4 ]

5 голосов
/ 17 мая 2010

Недавно я тоже изучил этот вопрос, и лучшим вариантом, который я нашел, был gSOAP, он очень зрелый и хорошо протестирован. Однако я решил пойти по не-SOAP маршруту, что было вариантом, так как я на стороне клиента и сервера. Перед использованием gSOAP убедитесь, что вы можете жить с их лицензией, возможно, вам придется выпустить ваш код или оплатить его, в зависимости от того, как вы его используете.

Другой вариант - Apache Axis2 / C , хотя у меня нет опыта работы с ним (я бы предположил, что он имеет такой же размер, что и gSOAP). Их клиентский API здесь . Обучающее руководство по клиентскому API: здесь .

Если вы решите пойти по пути разбора XML, вас может заинтересовать этот ТАК вопрос (см. Ответы).

Вы можете также проверить boost :: spirit для проанализированного маршрута. У него есть возможность создавать небольшие, быстрые, специализированные (и общие) парсеры, если вы знакомы с C ++ (они могут быть написаны так, чтобы быть реентерабельными, поэтому вызов их через статический объект с внешним интерфейсом "C" кошерный ). Я могу ручаться за это в общем смысле (не специфично для XML). Крутая кривая обучения, но большая отдача.

2 голосов
/ 13 мая 2010

Это веб-сервис, который вы создаете? Если это так, рассмотрите возможность использования REST вместо SOAP. REST намного проще, и вы можете использовать существующие, протестированные и работающие сейчас обработчики HTTP вместо того, чтобы проходить через огромный уровень трансляции HTTP - XML ​​- SOAP.

Если вы используете чужой веб-сервис, изучите схему SOAP и / или примеры ответов. Я не могу поверить, что я защищаю это, но если схема не является расширяемой или рекурсивной, вам может быть лучше использовать простой анализатор LALR или даже сопоставление строк в необработанных HTTP-ответах вместо того, чтобы пытаться вообще анализировать SOAP или XML. Это гораздо проще реализовать во встроенном C.

1 голос
/ 16 мая 2010

Вы смотрели на Apache CXF . Он имеет несколько функций кода поколения

* Java to WSDL
* WSDL to Java
* XSD to WSDL
* WSDL to XML
* WSDL to SOAP
* WSDL to service

Более полезное руководство по созданию потребителя - здесь .

1 голос
/ 10 мая 2010

Обычно мы возвращаемся к созданию XML напрямую (в основном путем конкатенации строк), где нельзя использовать хорошую библиотеку SOAP.

Другое решение может заключаться в том, что вы переключаетесь на JSON, который (обычно) имеет меньшие накладные расходы и размеры запросов / ответов, поэтому он может быть лучше во встроенных программах. Если у вас есть только SOAP WebService, вы можете использовать прокси-скрипт на сервере, который преобразует запросы JSON в запросы SOAP и ответы SOAP в ответы JSON.

...