2008-11-19 2 views
1

Я пытался использовать WF в своем приложении ASP.NET (на самом деле это ASP.NET MVC ... но тот факт, что это MVC вместо WebForms, не имеет значения вообще).ASP.NET и Windows Workflow (WF) - нужно ли нам вставлять его в состояние приложения?

Теперь я могу запустить WF и она отлично работает, и т.д., но он пинает асинхронно, так что любые результаты ВФ (хорошие или плохо) заблудились страницу жизненного цикла.

Я нашел MSDN article, который говорит, что в приложениях ASP.NET, необходимо

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

Это отличается, как я научился делать это:

  • Сделать WorkflowRuntime статический объект, который сначала создается, когда это требуется.
  • Используйте этот статический экземпляр WorkflowRuntime в новом рабочем процессе, который вы собираетесь запустить.

Итак ... какой путь лучше? Нужно ли вставлять его в приложение? Каковы различия между ними?

Я понимаю, что есть на самом деле два вопроса ...

  • состояние Применение против статического объекта (с помощью блокировки/нуль или double null checking)
  • DefaultWorkFlowSchedulerService против ManualWorkFlowSchedulerService

веселит !

EDIT:

  • Первый вопрос отвечает here.
  • Второй вопрос ниже.

ответ

4

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

  • Это единственный способ заблокировать выполнение приложения-хозяина до тех пор, пока экземпляр рабочего процесса не станет бездействовать. Обратите внимание, что вы должны явно использовать метод RunWorkflow.
  • ManualWorkflowSchedulerService повторно использовать поток, который заставил веб-запрос ASP.NET запустить экземпляр рабочего процесса. Это гарантирует, что в любое время количество активных потоков в рабочей среде рабочего процесса равно количеству активных веб-запросов в процессе ASP.NET.

Проверьте, пожалуйста, this sample.

+0

ура :) Я могу спросить первого в другом месте. – 2008-11-19 22:57:11

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