Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I am also interested in viable C++ RPC implementations. After some research, I found that etch, thrift and protocol buffers are the most promising solutions, however none of them actually meets all my needs. My search criteria are:</p> <ol> <li>multi-language, with C++ and PHP as a must (C#, Java, Python, Perl are not so important right now)</li> <li>the server <strong>can</strong> compile/run only on Linux (with Windows as a long-term goal)</li> <li>the client <strong>must</strong> run on Windows and Linux (and possibly Mac)</li> <li>open source and commercial friendly (that is, no GPL)</li> <li>it must support encryption out of the box</li> </ol> <p>And the candidates are:</p> <ol> <li><p>Apache Etch</p> <p><em>Pros:</em> </p> <ul> <li>the C binding is based on the APR</li> <li>supports encryption</li> <li>runs on both platforms</li> </ul> <p><em>Cons</em></p> <ul> <li>slow development</li> <li>lacks a PHP binding</li> </ul></li> <li><p>Apache Thrift</p> <p><em>Pros:</em></p> <ul> <li>small</li> <li>multiple language bindings</li> </ul> <p><em>Cons:</em></p> <ul> <li>currently, it doesn't support encryption (under development, at least for the C++ binding)</li> <li>on Windows, it requires Cygwin</li> </ul></li> <li><p>Protocol Buffers with an in-house developed RPC solution</p> <p><em>Pros:</em></p> <ul> <li>small</li> <li>multiple language bindings</li> </ul> <p><em>Cons:</em></p> <ul> <li>no built-in RPC</li> </ul></li> </ol> <p>Currently, I am evaluating the possibility to develop the RPC layer for Protobuf using APR.</p> <p>However, search continues...</p> <p>EDIT: I managed to work through some of these issues by using Apache Qpid (C++ version) with protobuf for serialization, although it currently lacks some features that I need.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload