A couple of my recent projects involve a number of RT targets and a central Host (or another RT target)
I tend to prefer basic TCP for a couple reasons. Mostly because my RT targets have been pretty taxed when it comes to computing resources, and with TCP you can get high throughput with little overhead. (and you don't have to install the services that support shared variables,remote panels, web services, etc if you don't use them)
One of my systems works similar to an example in the NI Simple Messaging Reference Library. I have the RT target acting as the “server” and listening for connections from the host. When the connection goes down, the RT target stops trying to use it and waits for the host to reconnect. I’ve had no issues with this to date. I can leave my targets running and connect to them whenever I want with the host application.
The other reason I prefer TCP is that one of my systems (which I inherited) makes heavy use of NSV and remote panels and I’ve had a horrible time debugging it. This could very well (and probably does) have more to do with the way the code was written rather than NSVs or Remote Panels themselves, but the experience has left a negative impression with me. Warranted or not.
The downside of TCP of course is that you may have to write more code.
I do like that you can view the values of NSVs in the System Manager.