2010-12-07 3 views
1

Этот вопрос касается ограничений, наложенных на меня ASP.NET (например, тайм-аут сценария и т. Д.).asp.net бесконечный цикл - это можно сделать?

У меня есть служба, работающая под ASP.NET, и я хочу создать параллельную службу для мониторинга.

Основные данные службы расположены в базе данных.
Я думал о том, что служба монитора запрашивает базу данных через интервалы в 1 секунду, в пределах цикла, выданного http-запросом, сделанным удаленным клиентом.
Теперь фактическая подача этого мониторинга будет выполняться клиентским HTTP-запросом, который сделает цикл сценария (написанный на C#), и когда будут обнаружены новые данные, он будет агрегировать эти данные в этот один выходной буфер вывода запроса, отправить его и выйти из цикла, тем самым завершив запрос.
Клиент должен будет подать новый запрос, чтобы получать обновления.

Это на самом деле точно так же, как TCP (точно так же, как Windows IOCP); Вы запрашиваете службу для данных и ждете ее. Когда он прибывает, вы запускаете еще один запрос.

Мой настоящий вопрос:: Вы сделали это раньше? Как прошло? Я ограничен некоторыми (настраиваемыми) ограничениями, установленными инфраструктурой IIS/ASP.NET? Каковы мои лимиты в такой ситуации, или, какие лучше варианты, не слишком усложняющие вещи?

Обратите внимание, что я не ожидаю много таких запросов мониторинга одновременно, может быть, несколько десятков.
Это означает, что 10 таких одновременных запросов на мониторинг будут поддерживать 10 потоков, и вопрос будет; Может ли это повредить IIS/производительность? Как IIS обрабатывает 10 занятых потоков? Будет ли он выдавать больше? Каковы пределы? Это только один пример предела, о котором я могу думать.

ответ

1

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

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

IMO это было бы гораздо лучшим решением, чем длительные запросы reallu.

+0

Спасибо за ответ Хасана. Итак, вы предлагаете услугу для службы мониторинга? – Poni 2010-12-07 14:19:51

+0

Это может быть услуга, это может быть запланированное консольное приложение - это вопрос реализации, но в принципе - да, я предлагаю создать службу мониторинга и оставить страницу ASP.NET только показывая отчеты о мониторинге до конца пользователь. Таким образом, вы получите гораздо более чистую архитектуру, и вы не ограничены небольшим количеством пользователей, просматривая журналы мониторинга (так как просмотр будет очень недорогим) – Hassan 2010-12-07 14:40:52

0

Я думаю, что это будет не очень хорошая идея, чтобы контролировать службы с помощью ASP.NET из-за следующих причин ...

  1. Что происходит, когда ваш бассейн сбоя приложения?

  2. Что делать, если вы решили сделать IISReset? Какое приложение появится в первую очередь ... основное приложение или приложение для мониторинга?

  3. Что делать, если приложение мониторинга зависает из-за нагрузки?

  4. Что делать, если нагрузка уже высока в Главной службе.Не будет контролировать его каждые 1 сек, увеличить нагрузку на Первичную службу, а также IIS?

Вы получаете идею ...

Смежные вопросы