繁体   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