Насколько хорошо WCF будет масштабироваться для большого количества клиентов? - PullRequest
19 голосов
/ 04 сентября 2008

Кто-нибудь знает, насколько хорошо веб-сервисы, созданные с помощью WCF от Microsoft, могут масштабироваться для большого числа пользователей?

Уровень, о котором я думаю, находится в районе, где более 1000 клиентов-клиентов подключаются к коллекции служб WCF, предоставляющих бизнес-логику для нашего приложения, и они обращаются к базе данных - аналогично традиционной трехуровневой архитектуре.

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

Ответы [ 3 ]

15 голосов
/ 06 сентября 2008

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

Вы упомянули, что обслуживаете «более 1000 клиентов-клиентов», но чтобы оценить, могут ли ваши службы работать на этом уровне, вам также понадобятся приблизительные показатели использования, которые помогут вам рассчитать более простую статистику, такую ​​как количество запросов на во-вторых, ваше приложение должно обрабатывать.

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

Кроме того, поскольку код службы WCF является довольно распространенным, довольно просто масштабировать фактический код WCF, добавляя дополнительные поля, а это означает, что общая производительность вашей системы будет значительно более ограничена вашим уровень бизнес-логики и персистентности, чем у WCF.

2 голосов
/ 18 сентября 2008

Вероятно, 4 самых больших вещи, которые вы можете начать смотреть вначале (помимо просто хорошего кода обслуживания), это пункты, связанные с:

  • Привязки - некоторые привязки и протоколы, на которых они работают, просто быстрее, чем другие, tcp будет быстрее, чем любая из привязок http
  • Режим экземпляра - это определяет, как ваши классы распределяются по отношению к вызывающим сеансам
  • Односторонние и двусторонние операции - если ответ не нужен клиенту, выполните одностороннюю
  • Регулирование - Максимальное количество сеансов / постоянных вызовов и экземпляров

Они сделали WCF безопасным по умолчанию, поэтому значения по умолчанию очень ограничены.

...