5

BetfairAPIとインターフェイスするマルチスレッドC++(Linux)SOAPクライアントを作成しています。最初はgSOAPを理解しようとしましたが、複数のWSDLファイルを使用して正しく動作させることができないため、一時的にそれを放棄しました。データを保存し、RapidXMLを使用してXMLを解析/生成するための独自のクラスを実装しました。アドバイスを求めているのは、HTTPSトランスポートの側面で何を使用するかだけです。OpenSSLとlibcurlを使用していくつかの初期テストアプリケーションを実装しましたが、これらは正常に機能しますが、マルチスレッドの側面でいくつかの問題があり、C ++よりもCであり、正直なところ、もう少し最新のものを探していました。だから私の質問はこれです-これを最初から書き直すとしたら、HTTPSトランスポートを処理するために使用するのに最適なツールは何でしょうか。

  1. OpenSSL(実装済み)
  2. libcurl(実装済み)
  3. boost :: asioライブラリ(まだBoostに手を出していないため、試していません)
  4. ソケットプログラミングを使用してすべて自分でやってみてください(このアプローチには熱心ではありません)
  5. gSOAPを試してみて、それを機能させる方法をWebでトロールします。
  6. 私がまだ出会っていない全く違う何か。

それで、基本的に、上記を考えると、堅実なパフォーマンスと最小限のマルチスレッドの問題の観点から使用するための最良のアプローチとして誰かがアドバイスするでしょうか?または、誰かが上記のいずれかのパフォーマンスの低下を経験したことがあり、それを使用することを思いとどまらせるだろうか?どんな提案やアドバイスもありがたく受け取られます。

4

2 に答える 2

3

パフォーマンスが心配な場合は、私の経験では、boost :: asioは、特に大規模なマルチスレッドプロジェクトで非常にうまくスケーリングする傾向があります。ただし、boost :: asioは非常に低レベルのソケット指向のライブラリであるため、かなり深く掘り下げる必要があることに注意してください。boost :: asioを使用したHTTPSの良い例がいくつかあります(例:this ) 。それがboost::asioが提供するものだから、私はあなたの日曜大工のソケットのアイデアを拒否します。

個人的にはまだlibcurlを使用していませんが、OpenSSLは必要なものすべてをカバーする非常に高レベルのAPIを提供します。ただし、パフォーマンスを犠牲にして便利さを購入します。ほとんどの場合、パフォーマンスの欠如はわずかであり、したがって無視できますが、それはアプリケーションによって異なります。

gSOAPはクライアント側のSOAPリクエストに最適ですが、正直なところ、サーバー側のサポートはかなり最小限であり、マルチスレッドアプリケーションで複数のWSDLファイルをサポートするには多くの調整を行う必要があります。私も個人的に反対票を投じます。

結論として、パフォーマンスを最大化してソケットを快適に使用したい場合は、boost :: asioを使用し、利便性と迅速な開発が優先される場合はOpenSSLを使用します。

于 2012-06-21T00:52:54.253 に答える
2

Pocoライブラリを使用して独自のクライアントを作成しました。この目的のために必要なものがすべて含まれています。

  • XML パーサー (DOM および SAX API がサポートされています);
  • HTTP および HTTPS クライアント。
于 2012-06-21T06:26:51.087 に答える