Существуют ли легкие альтернативы gSOAP?

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

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


person che    schedule 25.03.2010    source источник
comment
Добро пожаловать в (не очень) простой протокол доступа к объектам — раздутое решение типа «забастовка» свиньи/забастовка для SOA (сервисно-ориентированная архитектура).   -  person Lawrence Dol    schedule 25.03.2010
comment
Я не понимаю, почему здесь виноват SOAP. Это размер определения службы, который не имеет ничего общего с SOAP. XML или JSON по сравнению с REST будут одинаковыми по размеру. Но, в конце концов, это, вероятно, было бы хуже, потому что вам придется кодировать всю сериализацию самостоятельно без удобной привязки данных, которая генерирует весь код для вас. Я использую gSOAP для автоматической привязки данных, явный победитель. В противном случае, без gSOAP, заставлять программистов долгие часы работать над утомительным кодированием XML или JSON API для больших сервисов — это прошлый век.   -  person Dr. Alex RE    schedule 05.07.2017
comment
Дальнейшая проверка показывает, что довольно стандартное приложение для обмена XML-сообщениями с gSOAP занимает менее 100 тыс. код и запускает 10 тыс. сообщений/сек. В основном автокодирование с помощью инструментов, никакой тяжелой работы. Добро пожаловать в будущее автокодирования.   -  person Dr. Alex RE    schedule 05.07.2017


Ответы (4)


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

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

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

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

person academicRobot    schedule 17.05.2010

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

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

person Dour High Arch    schedule 13.05.2010
comment
Я должен использовать чей-то веб-сервис. На данный момент у нас есть пригодные для использования синтаксические анализаторы XML (вышеупомянутый ezXML работает довольно хорошо), поэтому, если не появится какая-то чудесная библиотека SOAP, мне, вероятно, придется сделать это таким образом :-) - person che; 14.05.2010
comment
У REST также есть еще один существенный недостаток: он не подходит для веб-сервисов, ориентированных на события, а это большинство веб-сервисов реального мира. - person rkellerm; 16.05.2010

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

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

person Morfildur    schedule 10.05.2010

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

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

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

person Srikar Doddi    schedule 16.05.2010
comment
Это кажется хорошим, однако, похоже, он поддерживает только Java, и у меня действительно нет возможности использовать среду выполнения Java на стороне клиента. - person che; 17.05.2010