Там какие-либо легкие альтернативы к gSOAP?

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

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

12
задан che 25 March 2010 в 18:00
поделиться

4 ответа

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

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

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

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

5
ответ дан 2 December 2019 в 22:37
поделиться

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

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

1
ответ дан 2 December 2019 в 22:37
поделиться

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

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

2
ответ дан 2 December 2019 в 22:37
поделиться

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

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

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

1
ответ дан 2 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: