Windows サービスでホストされている WCF アプリケーションがあります。basicHttpBinding を使用する必要があります。アプリケーションでは、データの長期分析を行い、顧客に変えます。
分析を実行するスレッドを作成する WCF を呼び出すことは可能ですか (このスレッドの ID はクライアントに送信されます)。
クライアントは、送信された ID を使用するというテーマで通信できる必要があり、データの準備ができているという情報を受信した場合は、ダウンロードできる必要があります。これにより、スレッドが解放されます。
この機能を実現するにはどうすればよいですか?
Ok。できます。クライアント メソッド呼び出しは、guid を支払った後でもバックグラウンドで実行され、操作の結果を保存するスレッドを作成します。これらの結果を保存するにはどうすればよいでしょうか? サービスが実行されているため、サービスを呼び出すたびに Per Call ディクショナリがリセットされます。静的データの宣言はオーバーライドできますが、それは良い考えではなかったと思います。何か案は?
namespace WCFRiskService
{
[ServiceContract]
public interface IRiskService
{
// return Thread ID
[OperationContract]
int GetAnalysis(AnalysisId);
[OperationContract]
string GetAnalysisData(int ThreadId);
}
public class Analysis
{
public GenerateAnalysis()
{
Thread.Sleep(20000);
Analysis = "Generated Data";
}
}
public class RiskService : IRiskService
{
// How can I change this, to use non-static objects ?
static string AnalysisData = "";
public string GetAnalysisData(int ThreadId);
{
return AnalysisData;
}
public int GetAnalysis(AnalysisId);
{
Analysis AObject = new Analysis();
AObject.Tree = AnalysisTree;
Thread workerThread = new Thread(AObject.GenerateAnalysis);
int managedThreadId = workerThread.ManagedThreadId;
workerThread.Start();
while (!workerThread.IsAlive) ;
return managedThreadId;
}
}
}