Client Server application design patterns and protocols

client-serverdesign-patternsnetwork-protocols

I am trying to find "good practices" for designing client/server applications.

If anyone could recommend some good material to read?

Specifically how do you design an application layer protocol and make it robust, while avoiding pitfalls?

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?

Is there a design pattern designed for client/server applications. I was also thinking maybe a modified producer consumer pattern?

Edit: oops I realize this question can't have a definitive answer so I will give correct answer to an in-depth answer.

Thank you

Best Answer