编写C++ SOAP(多线程)客户端应用程序 - 没有gSOAP

mat*_*975 5 c++ linux https soap betfair

我正在编写一个多线程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. 我还没有遇到过完全不同的东西.

基本上,鉴于上述情况,有人会建议在稳定性能和最小多线程问题方面使用最佳方法吗?或者有任何人有任何上述任何表现不佳的经验,并会阻止我使用它?我们将非常感激地提出任何建议和意见.

nij*_*sen 3

如果您担心性能,根据我的经验,boost::asio 往往可以很好地扩展,尤其是在大型多线程项目中。但请注意,boost::asio 是一个相当低级的面向套接字的库,因此您必须深入研究它;有一些使用 boost::asio 的 HTTPS 很好的例子,例如this。我会拒绝你的 DIY 套接字想法,因为这正是 boost::asio 提供的。

我个人还没有使用过 libcurl,但 OpenSSL 提供了相当高级的 API,应该涵盖您需要的一切;不过,您会以性能为代价来购买便利。在大多数情况下,性能的缺乏是微乎其微的,因此可以忽略不计,但这取决于您的应用程序。

gSOAP 非常适合客户端 SOAP 请求,但说实话,服务器端支持相当少,并且您必须进行大量调整才能支持多线程应用程序中的多个 WSDL 文件。我个人也会投票反对这样做。

总之,如果你想最大限度地提高性能并且对套接字感到满意,我会使用 boost::asio;如果方便和快速开发具有更高的优先级,我会使用 OpenSSL。