Принуждение веб-службы asmx обрабатывать запросы по одному - PullRequest
2 голосов
/ 01 мая 2009

Я отлаживаю веб-сервис ASMX, который получает "пакеты" запросов. то есть, вероятно, что веб-служба получит 100 асинхронных запросов в течение примерно 1 или 2 секунд. Кажется, что обработка каждого запроса занимает около секунды (это ожидаемо, и я в порядке с этой производительностью). Однако важно то, что каждый запрос обрабатывается последовательно и параллельная обработка не происходит. Я не хочу никакой параллельной обработки запросов из-за внешних компонентов, вызываемых веб-службой. Можно ли заставить веб-службу обрабатывать только каждый ответ последовательно?

Я видел атрибут maxconnection в machine.config, но, похоже, он работает только для исходящих подключений, где, как я хочу, для регулирования входящих подключений.

Обратите внимание, что рефакторинг в WCF на данный момент невозможен.

Мы используем IIS6 на Win2003.

Ответы [ 3 ]

0 голосов
/ 01 мая 2009

В IIS7 вы можете установить предел разрешенных подключений к веб-сайту. Вы можете использовать IIS7?

0 голосов
/ 01 июня 2009

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

0 голосов
/ 01 мая 2009

Возможно, вам следует ставить внутренние очереди в очередь и обрабатывать их один за другим?

Это может привести к тому, что клиенты будут запрашивать результаты (если они им даже нужны), но вы получите последовательный конвейер, который вы хотели ...

...