Длительный процесс потока под ASP.NET + WCF - PullRequest
2 голосов
/ 18 июля 2009

Дублирование
Это точная копия Работа с более длительным процессом в WCF . Пожалуйста, рассмотрите возможность размещения своего ответа на этот вопрос вместо этого.

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

Идея заключается в определении набора «задач», которые должны выполняться в разное время (например, каждые 5 минут, каждый день в 23:00 и т. Д.). Это не сложно реализовать в качестве службы Windows, но проблема в том, что задачам необходим доступ к кэшам данных, которые находятся в службах, поэтому этот «планировщик» должен работать в контексте IIS для доступа к этим данным.

В настоящее время я использую пользовательский ServiceHostFactory в одном из сервисов WCF, который порождает дочерний поток и возвращает. Дочерний поток спит и просыпается каждые X минут, чтобы увидеть, есть ли запланированные задачи и выполняет их. Но я беспокоюсь о том, что IIS случайно убивает мой поток, когда он перезагружает пул приложений или после некоторого неактивного времени (например, нет активности ни в одной из служб WCF, которые прослушивают запросы от уровня представления). Поток должен работать непрерывно независимо от активности в службах. Это действительно возможно?

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

Ответы [ 2 ]

1 голос
/ 18 июля 2009

Можно ли запускать либо службу Windows, либо размещать приложения в планировщике Windows для выполнения методов в WCF в определенные моменты времени?Может быть, использовать BackgroundWorker внутри WCF.Другим вариантом было бы, чтобы WCF порождал другие приложения для выполнения бизнес-логики, передачи соответствующих данных или указателей на данные в памяти (небезопасно).

1 голос
/ 18 июля 2009

В какой-то момент я внедрил Службу Windows, которая будет загружать веб-страницу на регулярной основе. Цель этого состояла в том, чтобы сайт содержал среду выполнения Workflow Foundation, и мы хотели убедиться, что веб-приложение было восстановлено после IIS, перезапускающего пул приложений. Возможно, тот же подход может быть использован в этом случае; запускать службу (или запланированную задачу в Windows; даже проще) каждые x минут и загружать страницу, которая будет проверять наличие задач.

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