Сколько соединений WCF может обрабатывать один хост? - PullRequest
3 голосов
/ 20 марта 2010

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

В настоящее время существует единый сервис. Пользователь входит в систему, используя этот сервис. Затем пользователь отправляет и получает сообщения для всех объединенных комнат с помощью этой единственной услуги.

channel.Login("Hans Moleman", "password");
channel.JoinRoom("name of room");
channel.SendChat("name of room", "hello");

Я думаю об изменении дизайна, поэтому для каждой объединенной комнаты будет новое подключение WCF. В реальном приложении число соединений, вероятно, будет в диапазоне 10-100, возможно, больше.

Это хорошая идея? Или ~ 100 подключений на клиента слишком много? Сервер должен быть в состоянии обрабатывать много клиентов (диапазон от 100 до 1000, а затем и до 10 тыс.). В случае, если это имеет значение, я использую NetTcpBinding.

Ответы [ 2 ]

3 голосов
/ 20 марта 2010

С практической точки зрения WCF позволит вам иметь столько соединений, сколько вы хотите. Вы можете установить максимальное количество, используя поведение службы. Я считаю, что есть предел, но он ОЧЕНЬ высок (выше, чем вы, вероятно, хотели бы или нужно на одном сервере)

Помимо проблемы WCF, необходимо учитывать и другие вещи:

Когда вы делаете это, вам также нужно учитывать, как вы собираетесь создавать потоки для своего сервиса и обрабатывать параллелизм при необходимости.

Существует также проблема с оборудованием. Может ли устройство, на котором вы устанавливаете этот сервер, не только справляться с нагрузкой в ​​100 экземпляров запущенной службы, но и может ли ваша сеть обрабатывать трафик? Какую пропускную способность вы ищете?

Итак, в итоге, WCF позволит вам иметь столько соединений, сколько поддерживает ваше оборудование и сеть.

1 голос
/ 20 марта 2010

Вопрос никогда не бывает таким простым, как «сколько соединений слишком много», потому что такие вещи всегда зависят от того, что делает соединение. Если это приложение чата, я могу представить, что в основном соединение будет бездействующим. В этом случае вы можете обрабатывать гораздо больше соединений, чем, скажем, загрузчик файлов, который постоянно использует максимальную пропускную способность.

Но, чтобы задать вам вопрос, о котором вы действительно должны подумать: что вы получаете , имея несколько соединений? Каждое соединение представляет накладные расходы как для клиента, так и для сервера, и вам придется проходить аутентификацию индивидуально для каждого соединения. Это слишком дорого для соединения с низкой пропускной способностью.

Кроме того, поддержание до 100 соединений на клиента на стороне сервера может быть гораздо более важным фактором для рассмотрения.

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

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