learning client/server architecture principles