My application supports multiple instances of the same server process (Windows Service), just like f.e. SQL Server.
The client/server communication will only take place in the same network.
I can use TCP, but then I have to configure separate IP ports for every server instance. I can however simply use named pipes so I don’t have to think about port numbers and simply use the name of the server instance.
There will not be very frequent and/or large data client/server communication. It’s some sort of a ERP application that will only communicate once per 30 seconds on average.
Also I want to prevent any client/server communication outside the network (intranet).
What is the wise choice here?
Update: Both client and server are written using .NET 4 and no third party client will be able to use the server.
I’m using .net 4.0 named pipes (System.IO.Pipes) in a couple of my personal projects and they are a pleasure to work with. You can use named pipes across the whole intranet and very performant so my personal advice would be to go with the named pipes.
Also the .net 4.0 named pipes clients utilizes the underlying WinAPI so you can also communicate with native apps from your .NET application.