Насколько хорошо WCF будет масштабироваться для большого числа пользователей-клиентов?

StackOverflow https://stackoverflow.com/questions/43823

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Вы упомянули обслуживание "1000+ клиентских пользователей", но чтобы оценить, могут ли ваши сервисы работать на этом уровне, вам также необходимо иметь некоторые приблизительные показатели использования, которые помогут вам рассчитать некоторые более простые статистические данные, такие как количество запросов в секунду, которые должно обрабатывать ваше приложение.

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top