0

WCFを使用していくつかのWebサービスを作成したいと思います。

Webサービスに「スレッドプール」が必要です。たとえば、操作する必要のあるデータが6GB近くあります。

クライアントにWebサービスの操作を呼び出して、新しいタスクまたはスレッドを作成してもらいたいです。クライアントはListRunningTasks();を呼び出すことができます。Webサービスにタスクのリストを返してもらいます。KillTask​​(int taskID)のように時間がかかりすぎる場合、クライアントはタスクを強制的に強制終了できる必要があります。か何か。以前にいくつかのスレッド化を実行しましたが、WCFまたは状態のないサービスの内部では実行していません。これは可能ですか?もしそうなら、どのようにそのようなことを実装するのですか?どんな読書、リンクまたは提案も素晴らしいでしょう。

ありがとう、マイク。

4

2 に答える 2

0

このようなサービスを作成するには、 Windows Workflow Foundationを使用することを検討してください。ステート マシン ワークフローは、メソッド A が呼び出されたときにワークフロー (タスク) を開始し、その後メソッドを呼び出して実行中のタスクを停止、一時停止、またはクエリできるように、サービスとして公開できます。WF は状態遷移を処理し、不正な状態変更を防ぎ、新しいタスクが必要な場合にのみスピンアップされるようにします。

WF は、ほとんど透過的な方法でスレッド化の問題を処理することに注意してください。

于 2009-12-23T01:21:44.227 に答える
0

考えられる解決策の 1 つ:

  • 未処理のタスクにはその時間がかかることを考慮して、明示的なキューを実装します (あなたが書いたように 20 ~ 30 分)。

  • これらのキューを管理するカスタム コンポーネントを構築します。たとえば、キュ​​ーを永続化する機能や、サービスを再起動したときに作業を再開する機能が必要になる場合があります。

  • それらのキューから作業を取得するワーカー スレッドを明示的に作成しました。

  • WCF サービスを実装して、キュー マネージャーを外部システムで利用できるようにします。

スレッド プールは、大量の短時間実行タスクを処理するように設計されています。

于 2009-12-23T01:22:00.307 に答える