Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
We are writing C++ code which needs messaging. Is there a free/open-source and stable AMQP server available that has equally stable C++ client library with it. We also need to provide Python interface of our code to users (idea is to do maximum stuff in C++ and expose the API in Python).
What can be best way to achieve this.
For future reference, take a look at Apache Qpid - it has a C++ client library and is very good. The problem for your use-case is that Rabbit implements AMQP 0-8 and the Qpid C++ client talks AMQP 0-10.
Apache QPid seems to be relevant here. There's a C++ broker/client library here.
Note that since you're programming to a protocol (AMQP), your broker/client don't have to be in the same language. e.g. I'm using Scala and C# clients talking to RabbitMQ (an Erlang broker).
AMQP C++ wrapper https://github.com/akalend/amqpcpp on librabbit: https://github.com/alanxz/rabbitmq-c
For RabbitMQ, the following library is more feature rich with good documentation:
https://github.com/CopernicaMarketingSoftware/AMQP-CPP
I know this is a bit late, I'm kind of in the same position as the asker.
I'm looking at IceStorm and Apache QPid per answers above.
Currently I have rabbit MQ but it's not so easy to integrate with C++.
I think if you have control over both client and server code, and you don't need AMQP "the standard" and IceStorm does what you need, and you're cool with GPL license (or ready to buy a license from zeroC) .. IceStorm seems to be the most stable and cross-language solution out there.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
looking at how high level languages, like Java, C# and Python handle http requests as a client, I'm wondering what the default approach is in c++ today.
My requirements are:
HTTP Client for a REST Interface
HTTP over SSL
Support of OAuth2 Client credentials
The OAuth2 support I scratched very fast and accepted, that this needs to implemented.
I found a number of libraries, but most of them appear to be rather outdated and a bit "unprofessional".
So here is a list of what I could find and what my thoughts are about these:
libcurl
While this appears to be the most professional choice. The C API is a bummer and of course the OAuth support does not exist. But this seems to be the optimal choice for me right now.
CPR
A c++ wrapper for libcurl and it appears to be a rather badly maintained library, which is a nono. It appears to have https support, but in the github md it says it hasnt.
curlpp
This project appears to be not maintained anymore.
boost::asio
If I am not mistaken, I have to do everythings myself here. I am trying to get sth. done and don't want to reinvent the wheel.
Qt
While it doesn't look bad, I'm kind of reluctant towards using a UI framework for communication. But maybe I'm mistaken.
cpprestsdk
While looking good for my purpose at first, OAuth2 client credentials are not supported. The whole OAuth2 part is flagged as experimental. And thats the case for a few years now. Seems to be unfinished and badly maintained.
Conclusions
So probably c++ isn't the usual language you do http client stuff in, but this is such a basic thing, that I'm suprised about the libraries that are out there.
Did I miss anything big?
What is the default approach at this? Is there a better "high level" choice. Or is the default approach doing it low level boost::asio style for optimal performance?
I think you skipped most common libraries like crow for a small projects and fast pace development. It's quite limited however provides enough functionality.
The Poco Project which is the most mature library I came across and provides a lot of functionality for mature projects.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I am looking for a lightweight opensource library/framework preferably written in C/C++ (it doesn't have to support x languages and should be easy to understand and use.) which can be used to make RPC over internal linux sockets or pipes.
In other words I am looking for an RPC possibility which can be run over some of the linux IPC mechanisms.
Thanks
Look at msgpack-rpc. It's easy and very simple RPC implementation.
Not exactly lightwieght, but Dbus is an answer and it's standard on most linux distributions these days.
I guess you don't want any fancy framework and can handle simple library calls. The linux rpc library should then be sufficient: See the manpage, and maybe this tutorial.
SUN ONC RPC library for Linux is a good solution. Also you can use the rpcgen compiler to generate server and client stubs.
All you have to do is to write an .x in the RPCL language an compile it using rpcgen.
Here is an example that I have published in github: https://github.com/issamabd/SDL-PPONG
It uses RPC calls to connect two PingPong players over the network.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm looking for a communications library (socket, possibly IPC as well) for usage in C++ on Linux, if possible also on Windows if it's platform independent.
It should be async. I tried the Boost Asio Library, but due to limitations we can't find a solution for, we cannot use the Asio library in our solution.
It should be an implementation where no external binary is needed to be executed separately to act as an independent server.
Does anyone of you know something that might help me with these constraints, as I don't want to implement the communication from scratch.
Edit:
One more limitation I forgot to mention. The communication should allow implementation independent client and server, so the messaging system should deliver and receive single messages/strings to and from dedicated sources (server s sends string str to client c)
Edit 2:
The Boost limitations are that with the current system, Boost Asio compiled with the MPI compiler of either MPICH2 or openmpi, especially when using mpi calls, loses several messages when trying to communicate over asio.
Take a look at ZeroMQ, a.k.a ØMQ.
Lot's of free stuff available, look for anything implementing AMQP (for example, and not limited to: Apache's attempt - ActiveMQ, ZeroMQ as listed above, rabbit mq [which is more complete than zero] and even Red Hat are in the game with Red Hat Messaging).
Lot's of pay for solutions ranging from Tibco to 29 West, Tervela to Solace - this depends on how much you want to fork out...
Other options, I really like include OpenDDS - different to AMQP, but again highly scalable and very good performance. (forgot to say, OpenDDS uses ACE under the covers...)
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'am going to have to interact with a SOAP web service, using a C++ application.
I am looking for a library that could help me do that, knowing that there's a few requirement I need to full fill:
It needs to be portable (Windows/Linux)
It needs to be free and open source (but I don't need to sell/distribute my code)
It needs to support asynchronous handling of requests
It needs to be able to support concurrent request to the server, as I will have to manage a pool of requests
It needs to be easy to integrate
As I am not going to have a lot of different type of interactions with the server, I first thought I could just create a nice wrapper around libcurl that will let me connect to the web service. But I was wondering if parsing the reply and serializing SOAP request was not going to be complicated in this case. Using this method, I will be able to manage myself my pool of request, which is a good thing for what I want to do.
So probably I just need a library that makes it easy to parse SOAP request.
The question is, what would you consider doing ? Is there a good SOAP web client library that I could use, or should I do it myself ?
the library that comes to mind to handle SOAP in C++ is gsoap I think it matches your requirements. If I remember correctly some of their tools are not open-sourced if you use them to produce non open-source code. Check the license ...
Great toolkit. Worked very well for me some times ago ...
my2c
EDIT: As said in comment you have tools to generate code from WSDL description. That's those tools that you can not use if you do not want your code to be GPL'ed ^^
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
There is a list of C++ XMLRPC implementations in Wikipedia:
Libiqxmlrpc
Ultra lightweight XML-RPC library for C++
XML-RPC for C and C++
XmlRpc++
XmlRpc C++ client for Windows
gSOAP toolkit for C and C++ supporting XML-RPC and more
libmaia: XML-RPC for Qt/C++
I wonder that people use which of these libraries most. Do you have experience with these libraries?
I've used gSOAP in the past. I found it pretty nice to work with. It's fairly mature and runs on a variety of platforms. I thought the documentation, along with examples to be sufficient. We used it on a project that needed to communicate with ASP.NET web services from a Linux environment.
I think that xmlrpc++ is what you're looking for. Though I can't give objective comparison to every library listed here, I must say that's it's extremely versatile, well-written and somewhat easy to get used to.
Well, it actually some kind of lacks in documentation, but this is also subjective (hate this doxygenized way of presenting information).
Added : ulxmlrpcpp also (never used it, just looked through documentation) seems fine and well-designed.