In our system there are multiple "sites" communicating with one another via WCF. Each site exposes ~20 interfaces over NetTCP binding.
When a site consumes the interfaces of the peer site, it will open a separate TCP socket for each channel. This means that if I want to regularly use all the interfaces, ~20 TCP sockets will remain open for each peer site.
The number of peers each site has is currently relatively small (10-15), but this will have to grow to ~100 in the near future. My concern is that this will require each site to have ~2000 incoming sockets which seems excessive. I can't put my finger on a specific problem, but it just feels wrong. For example, this greatly exceeds WCF's default MaxConcurrentConnections (default value is 10).
Is this a good design for the system? Should I be looking at consolidating all those interfaces into a single interface (and thus a single channel)? Will I be able to send messages concurrently on a single channel (I think not)? Perhaps I should consider a message queue system?
Any comments or ideas would be welcome.