Неблокирующие сокеты vs BeginXXX vs SocketAsyncEventArgs

Кто-нибудь может просветить меня о современных технологиях .NET сокетов?

  1. Неблокирующие сокеты

    Если я установлю Socket.Blocking = false и буду использовать асинхронные операции - что произойдет?

    Существует ли какой-нибудь метод опроса нескольких неблокирующих сокетов вместо проверки их доступности по одному (что-то вроде тривиального select() или любой другой механизм, возможно, связанный с IOCP), помимо Socket.Select()?

  2. BeginXXX и SocketAsyncEventArgs

    Работают ли они на блокирующих сокетах под капотом и просто скрывают создание потока?

    Будет ли ручное создание потоков равносильно использованию методов BeginXXX?

    Есть ли еще какие-нибудь плюсы в использовании SocketAsyncEventArgs, кроме того, что он позволяет создать пул сокетов и все, что с ними связано?

И последний вопрос: если приложение работает как некий высоконагруженный бинарный прокси с большей частью логики, выполняемой в один поток - что обеспечивает лучшую масштабируемость: неблокирующий подход или асинхронные операции?

8
задан Aquilae 27 February 2012 в 11:08
поделиться