ワークフローでAppFabricのメリットを享受できるので、ワークフローサービスを使用して同じことを実装する方法を知りたいです。
これは非常に簡単です。ファイルを読み取り、存在するループアクティビティを使用して結果をループする1つのワークフローがあります。次に、ループ内で、アクティビティを使用してエンドポイントを呼び出すことにより、各レコードに必要なワークフロー(「サービス」)Send
を開始します。
ここで、サービスであるワークフローについては、Receive
ワークフローの上部に、もCanCreateInstance
設定したアクティビティがありますtrue
。その後のすべてReceive
は、他のワークフローと何ら変わりはありません。サービスが開始されたことを発信者に知らせるためSend
に、直後にアクティビティを行うことを検討してください。Receive
ただし、これはReceive
必須ではありません。WFがを使用するワークフローを構築する必要があるため、必須になりますWorkflowServiceHost
。
レコード/IDのバッチを処理する他のソリューションはありますか?それ以外の場合は、ワークフローインスタンスにすべてのレコードを登録するためだけに、ワークフローサービスを数千回呼び出す必要があります。これは適切なソリューションではありません。
Webサーバーが数千のリクエストを受信するのは良い解決策ではないことを示していますか?IISサーバーは、コアごとに、瞬間ごとに約25〜50の要求を処理できるという事実を考慮してください。ここで、ワークフローをロードしているループが、その瞬間に平均して5を超えることはなく、おそらく1または2のようになることを考慮してください。
Webサーバーが問題になることはないと思います。私は、あなたが構築しようとしているものと同じように、ループを介してサーバー上で文字通り10,000のワークフローを開始しましたが、それは汗をかきませんでした。