I'm tasked with designing a fairly simple TCP/IP server that must accept connections from multiple clients. It needs to be written in C#, and I'm using .NET 4.5. That said, I'm not sure what is the current "state of the art" for TCP/IP server/client scalability in .NET 4.5.
I did see this post: How to write a scalable Tcp/Ip based server. But that relates to .NET 2.0 and 3.5 and makes no mention of the async/await pattern.
I am capable of writing a server the "old way"... but I want to know what the "new way" is.
- What is the best way to use the new Async methods on Socket, TcpClient or TcpListener to create a scalable server in C#?
- Do the new Async methods leverage I/O Completion Ports?
- Is rolling your own Socket listener more efficient, or are the TcpListener/TcpClient classes pretty good now?
EDIT: Additional questions.