Архитектура сервера - PullRequest
       4

Архитектура сервера

3 голосов
/ 10 июля 2011

Надеемся, два простых вопроса, касающихся создания серверного приложения:

  • Существует ли теоретический / практический предел количества одновременных открытых сокетов?Игнорирование ресурсов, необходимых для обработки данных после их поступления!Если это уместно, я нацеливаюсь на .net framework
  • Должно ли каждое соединение выполняться в отдельном потоке, который ему постоянно назначен, или следует использовать пул потоков?Подход с выделенными потоками кажется более простым, но кажется странным иметь более 100 потоков, запускающих его один раз.Это приемлемая практика?

Любой совет с благодарностью Venatu

Ответы [ 3 ]

2 голосов
/ 10 июля 2011

Есть практические ограничения, да.Однако вам, скорее всего, не хватит ресурсов для обработки нагрузки задолго до того, как вы их достигнете.Процессор или память с большей вероятностью будут исчерпаны до количества подключений.

Для максимальной масштабируемости вам не нужен отдельный поток для каждого подключения, а вместо этого вы будете использовать асинхронную модель, которая использует только потоки при обслуживании.активные (как при получении или отправке данных) соединения.

2 голосов
/ 10 июля 2011

Вы можете найти следующий ответ полезным.Он иллюстрирует, как написать масштабируемый TCP-сервер, используя пул потоков .NET и методы асинхронных сокетов (BeginAccept / EndAccept и BeginReceive / EndReceive).

При этом редко пишется собственный сервер, если вы можете использовать одну из многочисленных привязок WCF (или даже написать пользовательскую) и использовать все возможности инфраструктуры WCF.Вероятно, он будет масштабироваться лучше, чем любой пользовательский письменный сервер.

1 голос
/ 10 июля 2011

Как я правильно помню (давно делал сокеты), самый лучший способ их реализации - это методы ReceiveAsync (.NET 3.5) / BeginReceive с использованием асинхронных обратных вызовов, которые будут использовать пул потоков. Не открывайте поток для каждого соединения, это пустая трата ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...