1

ASP.NET アプリケーションで WF を使用しようとしています (実際には ASP.NET MVC ですが、WebForms ではなく MVC であるという事実はまったく問題になりません)。

これで WF を実行でき、正常に動作しますが、非同期で開始されるため、WF の結果 (良い結果または悪い結果) はページのライフ サイクルが失われます。

ASP.NETアプリケーションでは、

  • をApplicationWorkflowRuntime状態にする
  • WorkflowRuntimeインスタンスには が追加されていManualWorkflowSchedulerServiceます (それが何であれ)。
  • 必要に応じて、このアプリケーション状態ワークフロー インスタンスを使用します。

これは、私が学んだ方法とは異なります。

  • WorkflowRuntime を、必要なときに最初に作成される静的オブジェクトにします。
  • 実行する新しいワークフローで、この静的な WorkflowRuntime インスタンスを使用します。

では...どの方法が良いですか?アプリケーションに貼り付ける必要がありますか? 2つの違いは何ですか?

ここには実際に2つの質問があることを理解しています...

  • アプリケーションの状態と静的オブジェクト (ロック/null または二重 null チェックを使用)
  • DefaultWorkFlowSchedulerServiceと ManualWorkFlowSchedulerServiceの比較

乾杯!

編集:

  • 最初の質問はここで回答されています。
  • 2番目の質問は以下で回答されています。
4

1 に答える 1

4

最初の質問についてはよくわかりません(ただし、それらは同等であると思われます)。ただし、2 番目の質問については確信がありManualWorkflowSchedulerServiceます。主な理由は次のとおりです。

  • これは、ワークフロー インスタンスがアイドル状態になるまでホスト アプリケーションの実行をブロックする唯一の方法です。メソッドを明示的に使用する必要があることに注意してくださいRunWorkflow
  • ManualWorkflowSchedulerServiceASP.NET Web 要求を作成したスレッドを再利用して、ワークフロー インスタンスを実行します。これにより、ワークフロー ランタイム内のアクティブなスレッドの数が、ASP.NET プロセス内のアクティブな Web 要求の数と常に等しくなります。

詳細については、このサンプルを確認してください。

于 2008-11-19T21:01:51.943 に答える