Сколько времени выполнения рабочего процесса должно быть запущено в приложении Asp.Net? - PullRequest
3 голосов
/ 30 ноября 2009

Кажется, что не так много гуру Windows Workflow Foundation: (

Вот несколько проблем, с которыми я сталкиваюсь:

Сколько времени выполнения рабочего процесса должно быть запущено в приложении Asp.Net MVC? Один за заявку, за сеанс или за запрос?

Как часто следует запускать и останавливать среду выполнения рабочего процесса? Один раз за экземпляр приложения, один раз за сеанс или один раз за запрос?

Каковы плюсы и минусы того или иного действия в указанных выше вариантах?

Любые комментарии или предложения приветствуются,

Спасибо

Cullen

Ответы [ 2 ]

1 голос
/ 01 декабря 2009

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

Для рабочего процесса, размещенного в Интернете, вам действительно нужен SqlWorkflowPersistenceService. Ожидается, что IIS сможет перерабатывать пул приложений с минимальным воздействием на приложение. Следовательно, вам нужно сохранить рабочие процессы на холостом ходу, чтобы они выдержали такие циклы.

В аналогичной заметке вы должны использовать ManualWorkflowSchedulerService, который хорошо работает с использованием потоков ASP.NET, а также очень удобен для выполнения сквозной обработки запроса на ответ через рабочий процесс на одна нить Обязательно включите атрибут useActiveTimers="true", чтобы сработали задержки.

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

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

1 голос
/ 30 ноября 2009

Сколько рабочих циклов рабочего процесса должно быть запущено в приложении Asp.Net MVC?
по одному на приложение, если вам не нужно больше для масштабируемости (слишком много запросов)

Как часто следует запускать и останавливать среду выполнения рабочего процесса?
как правило, один раз на экземпляр приложения

Плюсы и минусы тривиальны, вы можете масштабировать лучше с большим количеством запросов и экземпляров сеанса, но для их управления требуются дополнительные затраты

Лучше всего использовать достаточно того, что вам нужно, и при необходимости расти позже.

...