5

我正在编写一个多线程 C++ (Linux) SOAP 客户端来与 Betfair API 交互。我最初试图掌握 gSOAP,但我根本无法使用多个 WSDL 文件使其正常工作,因此我暂时放弃了它。我已经实现了我自己的类,用于使用 RapidXML 存储数据和解析/生成 XML——我唯一要寻求建议的是 HTTPS 传输方面的用途。我已经使用 OpenSSL 和 libcurl 实现了一些初始测试应用程序,这些工作正常,但是我在多线程方面遇到了一些问题,它们比 C++ 更多,老实说,我正在寻找一些更新的东西。所以我的问题是——如果我要从头开始重写,那么处理 HTTPS 传输的最佳工具是什么。

  1. OpenSSL(已实现)
  2. libcurl(已实现)
  3. boost::asio 库(没有尝试过,因为我还没有涉足 Boost)
  4. 尝试使用套接字编程自己完成所有操作(不热衷于这种方法)
  5. 只需尝试使用 gSOAP 并在网络上搜索使其工作的方法即可。
  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 回答