Начните второй набор кода после того, как первый набор сделан в ASP.Net - PullRequest
0 голосов
/ 11 июня 2011

У меня есть приложение ASP.Net, которое вызывает Amazon Web Service для запуска виртуальной машины. Когда пользователь нажимает кнопку, чтобы запустить машину, страница отправляется обратно, чтобы показать список виртуальных машин. Эта часть в порядке. Если виртуальной машине назначен статический IP-адрес, необходимо вызвать отдельную функцию API для Amazon, когда виртуальная машина находится в «рабочем состоянии». Я не хочу, чтобы пользователь запускал назначение статического IP, я хочу, чтобы это происходило автоматически.

У меня вопрос: должен ли я использовать таймер и просто продолжать проверять, находится ли машина в рабочем состоянии, а затем запускать второй набор кода? Мне это кажется неуклюжим, поэтому я не уверен, есть ли другой способ (лучший способ) сделать это.

Ответы [ 2 ]

1 голос
/ 11 июня 2011

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

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

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

Если вы используетеВ C # 4.0 вы можете воспользоваться классом Task :

Task.Factory.StartNew(() => CheckThatVMIsRunningAndAssignStaticIP());
0 голосов
/ 11 июня 2011

Потоки на сервере с использованием одного фонового потока не очень хорошая идея для ASP.NET. Даже не обращая внимания на проблемы с завершением фонового потока IIS (что он может и будет делать при утилизации пулов приложений), вы используете ценный ограниченный ресурс (серверные потоки), когда у вас есть относительно много ресурсов (клиентов), которые могут перезвонить периодически проверять, подходит ли сервер. Из-за этого, используя серверный поток, вы серьезно ограничите свою масштабируемость. Я бы рекомендовал использовать подход опроса клиентов с таймером, как вы изначально планировали.

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