3

WWFは、一度に数十のレコードが「アクティブに」並行して処理される高スループットのシナリオを処理できますか?

1時間あたり数千のレコードを処理するワークフロープロセスを構築したいと考えています。各レコードは外部のWebサービス呼び出しを行うため、処理に最大1分かかります。

これを行うために、WindowsWorkflowFoundationをテストしています。ただし、デモプログラムでは、並列アクティビティを使用して1つのワークフローインスタンス内で一度に複数のレコードを処理すると、各レコードの処理が並列ではなく順番に実行されているように見えます。

複数のワークフローインスタンスまたは並列アクティビティを使用する必要がありますか?

高性能WWF処理の既知のパターンはありますか?

4

2 に答える 2

1

一般的なパターンは、レコードごとに1つのワークフローインスタンスを使用することだと思います。ワークフローランタイムは、複数のインスタンスを並行して実行します。

1つのワークフローインスタンスが一度に1つのスレッドを実行します。並列アクティビティは、この単一スレッドで各アクティビティのExecuteメソッドを順番に呼び出します。ただし、アクティビティが非同期であり、ほとんどの時間を外部プロセスがその作業を完了するのを待つことに費やしている場合は、並列アクティビティによってパフォーマンスが向上する可能性があります。たとえば、アクティビティが外部Webメソッドを呼び出し、応答を待機する場合、実行メソッドから戻り、応答を待機している間はこのスレッドを占有しないため、Parallelグループ内の別のアクティビティがジョブを開始できます(たとえば、 Webサービス)同時に。

于 2009-01-25T22:03:28.890 に答える
1

必ずレコードごとに新しいワークフローを使用する必要があります。各ワークフローは、実行するスレッドを 1 つだけ取得するため、ParallelActivity を使用しても順次処理されます。

Windows Workflow のパフォーマンスについてはよくわかりませんが、Tech-Ed で .NET 4 について聞いたところによると、そのワークフロー コンポーネントは .NET 3.0 および 3.5 のものよりも劇的に高速になります。したがって、本当に多くのパフォーマンスが必要な場合は、.NET 4.0 を待つことを検討する必要があります。

もう 1 つのオプションは、BizTalk を検討することです。しかし、それはかなり高価です。

于 2009-03-06T00:51:07.370 に答える