HPCクラスター用の単純なWCF/SOAアプリケーションを作成しようとしていますが、HPCがSOA応答をそれを生成したタスクにリンクする方法を提供しているかどうかわかりません。
取得したチュートリアルに従って、次のようにタスクをクラスターに送信するコードを作成しました。
using (var proxy = new BrokerClient<WcfMathService.IMath>(session, binding)){
...
proxy.SetResponseHandler<WcfMathService.RunTaskResponse>(doSubmit_ServiceCallback, m_signal);
...
proxy.SendRequest(new WcfMathService.RunTaskRequest(i, args.taskTime, args.taskFailureChance));
SendRequestを使用してタスクIDをすぐに取得する場合に便利ですが、どこから取得するのかわかりません。BrokerClientは認識していないようです。
後で、コールバックコードで、サービスタスクから返したintの配列を取得できます。int[] r = response.Result.RunTaskResult;
しかし、繰り返しになりますが、応答から、それを生成したタスクを推測する方法がわかりません。リクエストで識別子を渡してから、結果の配列に再度渡すこともできますが、それはあまり洗練されておらず、未処理の例外でタスクがクラッシュした場合、どのタスクが失敗したのかわからないという問題があります。
HPCクラスターを使用して適切なタスク管理を行う方法にかなり戸惑っています。認めざるを得ません。