title: Client Server application design patterns and protocols
body: <p>I am trying to find "good practices" for designing client/server applications.</p>
  
  <p>If anyone could recommend some good material to read?</p>
  
  <p>Specifically how do you design an application layer protocol and make it robust, while avoiding pitfalls?</p>
  
  <p>In some client/server instances like games the server is an interpreter for 
  actions to be taken, can you design a protocol as to elegantly cooperate with such a design pattern? </p>
  
  <p>Is there a design pattern designed for client/server applications. I was also thinking maybe a modified producer consumer pattern?</p>
  
  <p>Edit: oops I realize this question can't have a definitive answer so I will give correct answer to an in-depth answer.</p>
  
  <p>Thank you</p>