2012-06-20 3 views
5

Я пишу многопоточный клиент SOAP (Linux) SOAP для взаимодействия с API Betfair. Сначала я попытался справиться с gSOAP, но я просто не могу заставить его работать правильно, используя несколько файлов WSDL, чтобы я временно отказался от этого. Я реализовал свои собственные классы для хранения данных и разбора/генерации XML с помощью RapidXML - единственное, что я ищу, - это то, что нужно использовать для транспортного аспекта HTTPS. Я реализовал некоторые исходные тестовые приложения с использованием OpenSSL и libcurl, они отлично работают, но у меня были некоторые проблемы с многопоточными аспектами, и они больше C, чем C++, и, честно говоря, я искал что-то более современное. Поэтому мой вопрос заключается в следующем: если бы я должен был переписать это с нуля, каким будет лучший инструмент для работы с транспортом HTTPS. Я исследовал следующие как возможностиНаписание клиентского приложения SOAP (многопоточное) C++ - без gSOAP

  1. OpenSSL (реализован)
  2. Libcurl (реализован)
  3. повышение :: ASIO библиотека (не пробовал, потому что пока я не баловался с Boost)
  4. ПЫТАЮТСЯ сделайте все это самостоятельно, используя программирование сокетов (не увлекаясь этим подходом)
  5. Просто попробуйте gSOAP и попробуйте трафик в Интернете, чтобы он мог работать.
  6. Что-то совсем другое, что я еще не встретил.

Итак, в соответствии с вышеизложенным, что бы кто-то посоветовал как лучший подход к использованию с точки зрения прочной производительности и минимальных проблем с многопоточным режимом? Или у кого-нибудь был какой-либо опыт плохой работы над любым из вышеперечисленных и отговорил бы меня от его использования ??? Любые предложения и рекомендации будут с благодарностью получены.

ответ

3

Если вы беспокоитесь о производительности, в моем опыте boost :: asio имеет тенденцию масштабироваться очень хорошо, особенно в крупных многопоточных проектах. Обратите внимание, однако, что boost :: asio представляет собой довольно низкоуровневую сокет-ориентированную библиотеку, поэтому вам придется хорошо разбираться в этом; есть несколько хороших примеров для HTTPS с boost :: asio, например. this. Я бы отказался от вашей идеи сокета о себе, потому что это именно то, что предлагает boost :: asio.

Я лично еще не работал с libcurl, но OpenSSL предлагает довольно высокоуровневый API, который должен охватывать все, что вам нужно; вы купите удобство по цене исполнения. В большинстве случаев отсутствие производительности будет незначительным и, таким образом, пренебрежимым, но это зависит от вашего приложения.

gSOAP отлично подходит для клиентских SOAP-запросов, но, честно говоря, поддержка на стороне сервера довольно минимальна, и вам нужно будет много сделать для поддержки нескольких файлов WSDL в многопоточном приложении. Я лично проголосую против этого.

В заключение я бы использовал boost :: asio, если вы хотите максимизировать производительность и чувствовать себя комфортно с сокетами, и OpenSSL, если удобство и быстрое развитие имеют более высокий приоритет.

+0

Благодарим за это.Мне нравится ваш ответ, но прежде чем принять, я подожду и посмотрю, получаю ли я больше ответов. Я рад, что вы тоже думаете, что gSOAP стоит того, чтобы тратить время, потраченное буквально на попытки настроить его. – mathematician1975

2

Я написал своего клиента, используя библиотеку Poco. Он содержит все необходимое для этой цели.

  • XML-парсеры (поддерживаются API DOM и SAX);
  • HTTP и HTTPS-клиенты.
+0

Доступна ли она свободно или вы ее покупаете? – mathematician1975

+0

Существует три издания библиотеки Poco. Базовая версия и полная версия выпущены в соответствии с [Boost Software License] (http://pocoproject.org/license.html). –

+0

Я использую полное издание. –

Смежные вопросы