My web app will (hopefully) use dynamic layers with symbols that are rendered dynamically, based on a user chosen attribute. So far I am doing this by defining a UniqueValueRenderer, then passing these properties to a layer with LayerDrawingOptions. My work so far is loosely based on this example.
I periodically add new layers to the map and then re-publish them with a Python script using ArcPy. As far as I know, ArcPy does not provide a way to overwrite an existing map service (please correct me if I am wrong! ) So instead, I delete, then publish, the map service from scratch.