When you update or retract a SharePoint solution, it's supposed to automatically restart or recycle any affected application pools on all servers on the farm.
For web application pools, this appears to be largely true (though I've seen exceptions). However for service application pools, it's definitely not, and this essentially means that after updating a SharePoint solution, you must manually recycle/restart the service application pools, or you get all sorts of potentially weird behavior because code running under the service application pool is still using old versions of your assemblies (one obvious error that happens frequently for us is "The located assembly's manifest definition does not match the assembly reference", but there are far more subtle possible errors).
My question is - why would this be true, and is there a good way around it? Even if it's just to accept that customers must use our provided install tool to upgrade and the install tool does the correct thing, it would seem quite a significant amount of code is required to search all servers in the farm and request them to restart their application pools (I do have some code, but haven't tested it yet).
Anyone else experienced this?