Мы ищем платформу веб-сервисов C++ Soap, поддерживающую RPC, предпочтительно с открытым исходным кодом. Есть рекомендации?





Вы можете попробовать gSOAP. Доступно по GPL и коммерческим лицензиям.
WSO2 Web Services Framework для C++ (WSO2 WSF / C++), привязка WSO2 WSF / C к C++ является расширением C++ для использования веб-служб на C++.
http://wso2.org/projects/wsf/cpp
Apache Axis - это платформа веб-сервисов на основе XML с открытым исходным кодом. Он состоит из реализации SOAP-сервера на Java и C++, а также различных утилит и API для создания и развертывания приложений веб-служб.
Я использовал SWIG для создания интерфейса от C++ к Java или Python, а затем использовал стандартную поддержку веб-интерфейса для этих языков.
Поскольку Java и Python имеют отражение, существующим для них фреймворкам веб-сервисов гораздо проще передавать данные.
Если ваш код C++ является потокобезопасным, вы можете позволить серверу Java управлять созданием потоков для одновременных запросов и т. д. И просто вызывать свой код C++ с помощью JNI.
В качестве бонуса вы можете протестировать свой код C++ из Python, используя те же интерфейсы SWIG.
Я думаю, что лучше всего написать свою службу на C++ (я предполагаю, что вы выполнили всю домашнюю работу и есть веская причина, по которой вы хотите писать на C++), а затем использовать RPC-сервер. Используйте что-то вроде Thrift или Protobufs для быстрой реализации RPC.
Теперь напишите свой веб-интерфейс на языке по вашему выбору (я мог бы использовать python) и сделайте вызовы RPC, чтобы сделать всю вашу тяжелую работу.
Удаленное взаимодействие POCO дает вам очень простой способ создания веб-сервисов на C++, просто аннотируя определения классов C++ специальными комментариями и запуская над ними генератор кода. Он коммерческий, но поставляется с полным исходным кодом. Доступна бесплатная ознакомительная версия. Работает в Windows, Linux, Mac OS X и т. д.
Я согласен с ответом imjorge и добавляю, что существует версия C / C++ фреймворка Axis2 (более гибкая, расширяемая Axis), которая выполняет SOAP через RPC и всевозможные вещи, включая кучу спецификаций WS- *.
http://code.google.com/p/staff/
Персонал - это платформа веб-сервисов для C++ (служба / компонент и на стороне клиента) / JavaScript (на стороне клиента) на основе Apache Axis2 / C.
Открытый исходный код, выпущенный с лицензией Apache License V2.0.
Мы используем EasySoap (http://easysoap.sourceforge.net/)
Другая библиотека - это не FOSS, Сервер ATL от Microsoft. Это шаблон C++, основанный на некоторых проприетарных атрибутах Microsoft. т.е. не стандартный C++
Ирония этого заключается в том, что сразу после того, как msft сбросил его на CPlex, Google начал развертывать свою собственную, очень похожую по структуре.
Вы можете проверить xmlbeansxx. Это своего рода легкое низкоуровневое решение по сравнению с законченными фреймворками. В некоторых случаях это дает преимущества.
Вызов SOAP WebServices с помощью статьи xmlbeansxx
Пример кода здесь: WsClient.cpp.
Попробуйте фреймворк ffead-cpp, он предоставляет встроенную поддержку веб-сервисов, rest, json и многие другие полезные функции.
Ось Apache-c: Проста в использовании, но кажется заброшенной ... несколько месяцев не работают даже страницы загрузки
WSOF WSFCPP: Быстрый запуск разработчика, как с привязкой, так и без привязки, основан на Apache AxisC, и кажется, что большинство текущих разработчиков Apache Axis из компании WSOF. Помимо большого потенциала я обнаружил утечку памяти.
В настоящее время я использую Gsoap, и у него очень хорошая производительность. "Смешанная нотация" Gsoap между старым стилем c и некоторыми (плохими?) Практиками для C++ меня немного беспокоит ... но это всего лишь кодовая мебель.
POCO: Это полнофункциональная современная (java?) Библиотека. Это программное обеспечение с открытым исходным кодом, работающее под лицензией Boost Software License 1.0. Вам придется писать некоторые вещи с нуля, но с отличной поддержкой, служебными классами и т. д. Отличной библиотекой. Нововведения от C++ 11 + со всеми инициативами по ускорению + POCO + новая система сборки / зависимостей, более "похожая на градиент", будет безусловно, принесет C++ в новые области развития.
Попробовав несколько разных пакетов, мы обнаружили, что Axis является наиболее полной и простой в использовании библиотекой.