Windows在C#(.NET 2.0)中的进程间通信

I've never had to do IPC on Windows before. Currently I'm developing a pair of programs, a standard GUI/CLI app and a windows service. The app has to tell the service what to do. So, assuming the communication is local only, what would be the best communication method for these two processes?

Where best is defined as more robust and less error prone, not the most performant nor the easiest to code.

Code examples will be very welcome, but aren't required :-)

Note I'm asking about what to use, a standard TCP socket, named pipes, or some other means of communication only.


WCF: Just like I'm encouraged to use .NET 3.5 :) Sadly, not an option Remoting seems like the way to go.

System.IO.Pipes is not available in .Net 2.0

Semaphores is a technique used when threads/processes has shared memory.