Как динамически запускать процесс в asp.net - PullRequest
0 голосов
/ 03 января 2012

Я проектирую веб-сайт, и он использует Windows Forms (в Visual Studio 10), в которой, например, , у меня пять-шесть URL-адресов .Теперь я показываю их на домашней странице моего сайта xyz.com

То, что я хочу, я хочу вычислить общее количество нет.твитов для всех ссылок и отображения ссылок на основе нет.раз они твитнуты / ретвитнуты.

для URL, который мы можем вычислить как нет.твита с использованием твиттера api http://urls.api.twitter.com/1/urls/count.json?url=YourURL

Я знаю все, например, получение значений JSON в строке и разбор json для получения количества твитов, а затем сравнение и отображение ссылок на основе приоритета и т. д.

То, что я использовал до сих пор, это начало всего процесса с помощью кнопки Click_Button.

Но я хочу знать, как я могу автоматизировать это все за каждые 10 минут.Как конечный пользователь может увидеть приоритет URL-адреса, просто обновив страницу.

Ответы [ 4 ]

1 голос
/ 03 января 2012

Один из способов сделать это - запускать запланированное задание каждые 10 минут, которое взаимодействует с БД. Веб-приложение также взаимодействует с БД, поэтому две системы различны.

Примечание: настоятельно рекомендуется использовать только консольные приложения в качестве запланированных задач. Если вы сделаете приложение формы Windows, у вас будут некоторые проблемы.


Как указал Кирен Джонстон в другом ответе, лучший способ сделать это - написать службу Windows.

Я по-прежнему рекомендую решение, описанное выше, в качестве первого шага, поскольку его легко отлаживать и тестировать.

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

0 голосов
/ 03 января 2012

Лучший из известных мне планировщиков: Quartz.net

Это не просто в использовании, но отлично работает.

Вы можете найти пример с asp.нет там http://blogs.planetcloud.co.uk/mygreatdiscovery/post/ASPNET-Scheduled-Tasks-with-QuartzNET.aspx

В любом случае, я согласен с Киреном Джонстоном: вам следует воспользоваться службой Windows

0 голосов
/ 03 января 2012

Лучшим решением, безусловно, является служба Windows. Его можно запускать, останавливать и управлять им, его легко регистрировать, обслуживать.

Запланированные задачи очень подвержены проблемам. По крайней мере, в Windows Service вы можете настроить его автоматический запуск, перезапуск, если есть проблема, вы можете сами контролировать время в коде и ловить / обрабатывать исключения по своему желанию.

0 голосов
/ 03 января 2012

Если время само по себе не имеет значения (оно не должно быть точно 10 минут), я бы предложил привязку к любому событию, которое срабатывает, когда пользователи используют ваше приложение. Нет смысла что-либо вычислять, если никто его не использует: -)

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

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

public void MyEventHasFired()
{
     DateTime dateLastProcessed = ... //Database? Session data? Anything goes.
     if(dateLastProcessed < DateTime.Now.AddMinutes(-10))
     {
          //calculate

          ...

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