簡體   English   中英

編寫C ++ SOAP(多線程)客戶端應用程序-不使用gSOAP

[英]Writing a C++ SOAP (multithreaded) client application - without gSOAP

我正在編寫一個多線程C ++(Linux)SOAP客戶端以與Betfair API進行接口。 最初,我試圖使用gSOAP,但是我無法使用多個WSDL文件使其正常工作,因此我暫時放棄了它。 我已經實現了自己的類,用於使用RapidXML存儲數據和解析/生成XML-我唯一要尋求建議的是將HTTPS傳輸方面使用什么。 我已經使用OpenSSL和libcurl實現了一些初始測試應用程序,這些應用程序運行良好,但是我在多線程方面遇到了一些問題,它們比C ++具有更多的C語言,老實說,我一直在尋找一些最新的東西。 所以我的問題是-如果要從頭開始重寫它,什么是用來處理HTTPS傳輸的最佳工具。 我研究了以下可能性

  1. OpenSSL(已實現)
  2. libcurl(已實現)
  3. boost :: asio庫(尚未嘗試,因為到目前為止我還沒有涉足Boost)
  4. 嘗試使用套接字編程自己完成所有操作(不喜歡這種方法)
  5. 只需嘗試使用gSOAP並在網上拖網以尋找使其工作的方法即可。
  6. 我還沒有遇到過完全不同的東西。

因此,基本上,鑒於上述情況,就可靠的性能和最小的多線程問題而言,有人建議使用哪種最佳方法? 還是有任何人有以上任何方面的表現不佳的經驗,會勸阻我不要使用它??? 如有任何建議,我們將不勝感激。

如果您擔心性能,以我的經驗,boost :: asio可以很好地擴展,尤其是在大型多線程項目中。 但是請注意,boost :: asio是一個面向底層套接字的庫,因此您將不得不對其進行深入研究。 對於帶有boost :: asio的HTTPS,有一些不錯的示例,例如this 我會拒絕您自己動手做套接字的想法,因為那正是boost :: asio提供的。

我個人還沒有使用libcurl,但是OpenSSL提供了相當高級的API,應該可以滿足您的所有需求。 您將以性能為代價購買便利。 在大多數情況下,性能的不足將是微不足道的,因此可以忽略不計,但這取決於您的應用程序。

gSOAP非常適合客戶端SOAP請求,但是說實話,服務器端的支持非常少,您必須做很多調整才能在多線程應用程序中支持多個WSDL文件。 我個人也反對這樣做。

總而言之,如果您想最大程度地提高性能並使套接字感到舒適,我將使用boost :: asio;如果便利性和快速開發具有更高的優先級,則將使用OpenSSL。

我已經使用Poco庫編寫了自己的客戶端。 它包含為此目的所需的一切。

  • XML解析器(支持DOM和SAX API);
  • HTTP和HTTPS客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM