3

質問をする前に、また似たような質問がいくつかあるので怒る前に、プロジェクトの要件とは何かについて少し説明したいと思います。その質問は他のすべての質問とは異なることがわかります。

  • ユーザーは、ReHosted WPF アプリケーションを使用してワークフローを作成し、xaml ファイルを当社が提供する Web アプリケーションにアップロードします。
  • ワークフローの実行を開始するためのエントリ ポイントは、その Web アプリケーションにあります。UI を使用したり、独自のアプリケーションから API 機能を使用したりできます。
  • ワークフローは長時間実行されます。

ホスティングのさまざまな可能性を認識しています。

ASP.NET Web アプリケーション内でホストするのが最も簡単ですが、ユーザーがアップロードするワークフローの種類がわからないため、IIS AppDomain のリサイクルによってワークフロー スレッドの実行が中断される可能性があります。

WCF ワークフロー サービスは見栄えがしますが、ユーザーが独自の xaml ワークフロー定義をアップロードするという事実は、事態をより複雑にします。WCF サービスとして公開されたコアワークフローのようなものを作成する必要があるように見えます。そのワークフローは内部ワークフローをロードして実行します (顧客がアップロードした xaml)。その場合、パラメーターが内部ワークフローにどのように渡されるかわかりません。

3 番目のオプションは、 Windows Serviceでワークフローの実行をホストすることです。Web アプリケーションとウィンドウ サービス間の通信は、MSMQ を介して行うことができます。このソリューションの欠点は、Web アプリと Win サービス間の良好な通信を確保するためのボイラープレート コードである可能性があります。

より良い解決策がありませんか?詳細が必要な場合は、コメントを投稿してください。

4

1 に答える 1

3

私は同様の要件を持っており、「問題解決者」と長い間議論しています。

WF4.0 に適したアーキテクチャはどれですか?

私の結論は、ワークフローを IIS 上でホストされるワークフロー サービスとして開発することです。

これらの 2 つのアプローチに従うことができます。

  1. ワークフロー要件を小さなアクティビティに分割し、それらを独立した XAML アクティビティにすることができ、ワークフロー サービス (xamlx) にドラッグ ドロップしてワークフローを作成できます。必要に応じて、これらを InArgument と outargument および相関コンテキストに関連付けます。
  2. ワークフローを作成してデータベースに保存し、動的にロードします。優れたリンク - http://blogs.msdn.com/b/appfabric/archive/2011/06/16/how-to-load-wf4-workflow-services-from-a-database-with-iis-appfabric。 aspx
于 2012-06-21T11:56:46.493 に答える