I am in the process of updating a web map that was using the ArcGISDynamicMapServiceLayer object for my layers. At the time, it was the best choice since we were on 9.3 and there was limited support out of the box for the FeatureLayer object. Now, we're on a 10.3+ server, which has better support for things like symbology.
I could not find good metrics or suggestions on which of the two layers provide better performance and overall usability for applications. I will have scale dependencies so I don't need to worry about 1000s of point features showing when zoomed out, and I think each extent won't hit the FeatureLayer feature limit when the layer is visible.
Performance and experience wise, is it better to have the server render the images for the layers and rely on QueryTasks to work with the layer, or is it better to send the coordinates to the client and have the client do the processing? I haven't noticed much of a difference testing, but I also can't find good recommendations on it either.