A few years ago, I developed and implemented a critical business system using .NET Remoting. We had a client implemented as a Windows Forms GUI, a server implemented as a Windows service, and a SQL Server database.
I developed it for troubleshooting / debugging / development, so one of my first design criteria was that I could trivially remove the entire .NET Remoting implementation and run the entire system on my desktop. That way, I could turn off remote access by changing one boolean configuration setting to "false" = off. Then I could troubleshoot, debug, fully develop without the overhead or the intervention of .NET Remoting.
It seems that it would be useful for your situation. In fact, I cannot imagine a situation where this is not a desirable feature, especially since it is easy to implement.
So, to implement it, the configuration parameter was used by each of the client and server code to decide which implementation class to create to communicate with the other side. All communication was carried out through the C # user interface, which had two specific implementation classes on each side: one class implemented communication using .NET Remoting, the other class implemented communication as a direct end-to-end study (direct calls).
Only one pair of classes (one on each side) knew something about .NET Remoting, so the isolation was complete. In most cases, all developers worked with deletion turned off, which was faster and easier. When they needed, in rare cases, they turned it on (mostly just me, or when someone connected to testing / production for troubleshooting).
By the way, I made the remote control interface simple: public Response execute (Request)
In addition, I also used the debugger startup tip mentioned above, and I agree that you need to be aware of the effect on GUI threads.
Rob williams
source share