Я знаю, что в Java, когда вы хотите создать высокопроизводительный сервер, вы используете nio вместо обычного сокета.Так есть ли в C # возможность создавать высокопроизводительные серверы?
Да, SocketAsyncEventArgs:
SocketAsyncEventArgs
Класс SocketAsyncEventArgs является частью набора улучшений класса System.Net.Sockets.Socket, которые предоставляют альтернативный асинхронный шаблон,использоваться специализированными высокопроизводительными сокетными приложениями.Этот класс был специально разработан для приложений сетевого сервера, которые требуют высокой производительности.Приложение может использовать расширенный асинхронный шаблон исключительно или только в целевых горячих областях (например, при получении больших объемов данных).
System.Net.Sockets.Socket
Вы можете использовать асинхронные сокеты. Если это не достаточно хорошо, вы всегда можете проверить Network Direct SPI, часть HPC SDK. Обратите внимание, что для Network Direct требуется аппаратно-зависимый провайдер.
Network Direct SPI
SocketAsyncEventArgs использует порты завершения ввода / вывода Windows, что делает его быстрым.Это асинхронный, что делает его масштабируемым.Действительно серьезная проблема с SocketAsyncEventArgs - порты завершения ввода / вывода.
См. http://www.codeproject.com/KB/cs/socketasynceventargs.aspx, чтобы узнать, как использовать SocketAsyncEventArgs.
Существуют разные способы использования обычных сокетов.Как правило, асинхронное использование лучше масштабируется.