Установить максимальную скорость загрузки в WCF - PullRequest
24 голосов
/ 26 мая 2011

Я использую WCF для загрузки аудиоданных из базы данных. Мне нужно установить максимальную скорость загрузки.

Как это можно сделать в WCF?

Спасибо!

Ответы [ 3 ]

21 голосов
/ 26 мая 2011

WCF управляет регулированием класса ServiceThrottlingBehavior .

Как настроить сервис Wcf

WCF обеспечивает дросселирование управлять нагрузкой на сервер и ресурсами потребление (со следующим свойства):

  • MaxConcurrentCalls. Ограничивает количество одновременных запросов, которые могут обрабатываться всеми экземплярами службы. Значение по умолчанию - 16.

  • MaxConcurrentInstances. Ограничивает количество экземпляров службы, которые могут быть распределенным в данное время. За Сервисы PerCall, этот параметр соответствует количество одновременных звонков. За Сервисы PerSession, этот параметр соответствует номеру активной сессии экземпляров. Эта настройка не имеет значения для режима одного экземпляра, потому что создается только один экземпляр. значение по умолчанию для этого параметра 2147483647.

  • MaxConcurrentSessions. Ограничивает количество активных сеансов, разрешенных для сервис. Это включает в себя приложение сеансы, транспортные сеансы (для TCP и именованные каналы, например), надежные сессии и безопасные сессий. По умолчанию установлено значение 10.

Не думаю, что есть встроенный механизм для контроля пропускной способности. Вам нужно будет реализовать пользовательский поток. Вы используете поток, чтобы написать поток. Затем вы можете контролировать, сколько данных записывать каждую секунду. Например, вы можете написать 250Kb, а затем выполнить спящий поток на одну секунду.

См. Также: Конфигурации параллелизма и регулирования для служб WCF

7 голосов
/ 18 июня 2011

Ладно, безумная съемка в конце пятницы в темноте: Скотт Гу написал о новом модуле регулирования скорости передачи данных для IIS 7 здесь: http://weblogs.asp.net/scottgu/archive/2008/03/18/iis-7-0-bit-rate-throttling-module-released.aspx

На самом деле он предназначен для медиа-файлов, но из коробки он запускается расширением. Само по себе этого может быть недостаточно - вы обслуживаете файлы из службы - .svc и, вероятно, не хотите ограничивать все вызовы службы. (если вы не возражаете против их регулирования, это может сработать из коробки - просто установите правило для .svc.

Что еще интереснее, этот пост: http://learn.iis.net/page.aspx/149/bit-rate-throttling-extensibility-walkthrough/ Этот парень говорит о том, как настроить троттлер.

Вы можете сделать это на основе содержимого ответа (у него есть примеры чтения битрейта внутри медиа-файла).

Или, примерно на 3/4 пути вниз по статье, найдите этот заголовок: «Установка серверных переменных программно»

Он описывает, как создать модуль / обработчик http - теоретически вы можете использовать его для запуска регулирования IIS на основе URL (например, URL-адреса службы мультимедийного сервера)

Никогда не пробовал этого - всего WAG, прежде чем я уеду домой на выходные. Удачи!

3 голосов
/ 19 июня 2011

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

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