title: Creating a high-performance network server in C++
body: <p>I need to create a network server in C++ for a trading application. This network server needs to perform the following tasks:</p>
  
  <ul>
  <li><p>handle authentication of clients and provide session id for each
  session.</p></li>
  <li><p>handle orders originating from the clients and inform clients about
  their execution.</p></li>
  <li><p>handle other data request asked for by the clients and send data back
  to them.</p></li>
  </ul>
  
  <p>I am planning to use Boost.Asio networking library and Google protocol buffers to implement the messages being sent from the clients to the server. XML-RPC or SOAP based approaches are a strict no-no as latency is a big concern.</p>
  
  <p>I have the following questions for the stackoverflow community:</p>
  
  <ol>
  <li><p>Is it a good idea to implement these messages using protocol
  buffers? I am also considering sending messages Boost serialization
  library to implement this. When I look at the code, I find myself
  more confident of implementing this with boost serialization and
  Google protobuf headers look too heavyweight. Which of these methods
  will be a) more maintainable and b) require less effort? I guess,
  both these approaches will work across different platforms.</p></li>
  <li><p>Is there any other networking library which I should look at apart
  from Boost.Asio.?I find ACE a little dated as far as C++ coding
  style is concerned.</p></li>
  <li><p>Eventually I would like to make this network server run on SSL,
  however, I do not have any experience with implementing SSL. How
  much effort would it require to move to SSL later on. Should I start
  with SSL or can it be added later on?</p></li>
  <li><p>Does anybody know of a good open source network project, which might
  have implemented a similar network server using Boost.Asio, to get
  inspired from?</p></li>
  </ol>