Both PI-SDK and AFSDK should automatically re-signup when they reconnect to the PIServer. Application should not need to resignup. PI-API does not support auto-resignup if the PI server has already remove the signup list (normally happen after 10 minutes of inactivity for the consumer). If the PIAPI reconnect within 10 minutes, the signup and event data are buffered on the server so everything should still work.
The automatic re-signup for PISDK/AFSDK should work across PI server restart. There maybe some issues with PIdatapipe reconnection in AFSDK 2.5 but they should be fixed in AF2.6. Because PISDK/AFSDK handles reconnection behind the screen, applications actually is not aware than the disconnection occur or there is a need to resignup. Since auto re-signup normally means data loss, to help the applications to recover possible data loss, AFSDK 2.6 introduces the AFDataLossException that gives more information about the time period where possible data loss could occur for datapipe. See the AFSDK documentatoin for the GetUpdateEvent/GetObserverEvents calls.
Both PISDK and AFSDK do reference counting for signing up of the same tag more than once, meaning the application needs to call removeSignup the same number of times to actually unsignup the tag. But you should only get the snapshot event multiple times even if you signup for the same tag multiple times.
Signup persistency on the PIServer only help the case of PI server restart. it does not address the much more common scenario of network disconnection between server and client. Also it could be argued that a planned shutdown of the PIserver with short duration should automatically persisting the update manager consumers list so that there is no data loss. Client should not need to tell the server to prevent data loss just because administrator need to reboot the server machine to apply operating system patch.