Протокол IRC - постоянные клиентские соединения ок? - PullRequest
1 голос
/ 22 февраля 2012

Когда я экспериментировал с C # и WCF, я продолжал читать о том, насколько невероятно иметь клиентов с постоянным текущим подключением к серверу. И хотя WCF допускает, что, по-видимому, рекомендуется использовать «на вызов», а не «на сеанс» для управления экземплярами, если вы хотите иметь какую-либо достойную масштабируемость. (Пожалуйста, поправьте меня, если я ошибаюсь)

Однако, насколько я понимаю, IRC использует постоянные клиентские подключения к серверу, а серверы IRC (а также сети серверов) обслуживают сотни тысяч клиентов в любой момент времени. Так что в этом случае нет ничего «плохого» в том, чтобы поддерживать постоянные клиентские подключения к серверу?

Ответы [ 3 ]

3 голосов
/ 22 февраля 2012

Пока вы не следуете архитектуре «один поток на соединение», сервер может поддерживать довольно большое количество одновременных TCP-соединений.

IRC не требует много для каждого состояния соединения,за пределами TCP отправлять и получать Windows.

1 голос
/ 22 февраля 2012

Если вам нужна дуплексная связь в режиме реального времени (IRC - это протокол чата), то поддержание соединения TCP в актуальном состоянии является уместным вариантом. Однако TCP-соединение приводит к перегрузке сети, и операционные системы имеют практические ограничения на количество одновременно открытых TCP-соединений. WCF обычно используется в контекстах SOAP / HTTP / RPC, где дуплексная связь не требуется, но, конечно, он также предлагает подходящие привязки и каналы для этого. Чтобы ответить на ваш вопрос, нет ничего плохого в том, чтобы соединение оставалось открытым , если у вас есть требования дуплексной связи в режиме реального времени.

0 голосов
/ 22 февраля 2012

Да, такая архитектура возможна, но ... «пинг-понг!» была изобретена по причине - чтобы обе стороны знали, что другая сторона все еще там.На самом деле вы не можете определить, находится ли клиент в бездействии, потому что ему нечего сказать или он фактически отключен, и вы ожидаете истечения времени ожидания TCP.

UPD: возможны «сотни тысяч клиентов»по IRCnet только из-за серверных сетей.Для одной машины проблема C10K по-прежнему остается проблемой.

...