2017-05-02 11 views
1

WCFサービスを使用しており、Windowsサービスでこのサービスをホストしています。この概念はhereで説明されています。WCF Windowsサービスの長時間実行スレッドに関する懸念

我々は次のようになりますWCFサービスの呼び出しがあります。このWCF呼び出し内

[System.ServiceModel.OperationContractAttribute(...)] 
    [System.ServiceModel.FaultContractAttribute(...)] 
    void TriggerLongRunningOperation(int id); 

を、我々はいくつかの火を-と-忘れスピンオフいくつかのバックグラウンドタスクを達成するために、新しいスレッドを。ほとんどの場合、1つしか存在しませんが、複数の可能性があります。 WCF要求は基本的に直ちに終了し、ファイアアンドフォールトスレッドはそのジョブを実行します。

分割された操作は、2分から1時間の範囲で終了できます。

私はWCFプロセスで長時間実行されているスレッドがあることに懸念していますが、IIS経由でホストされていないため、アプリケーションプールのリサイクルについて心配する必要はありません。

WindowsサービスでホストされているWCFサービスで新しいスレッドを実行する際に、私は注意すべきことは何ですか?スレッドはどのような場合に中止されますか?

.NET 4.5.2

+0

http://hangfire.ioのようなバックグラウンドを見ることができます。これは、Windowsサービスで実行することができ、耐久性のあるバックグラウンドタスクの実行を提供します。 –

答えて

2

私は、信頼性が心配になります。これらのスレッドは、例外やシステムの再起動、またはスレッドが失われる可能性のある他の多くの状況のた​​めに中断される可能性があります。

また、私は火災と忘れてのアプローチは信頼性とは何の関係もなく、呼び出し元が操作全体の結果を気にしないことを意味します。

したがって、私はRabbitMQのような信頼できるメッセージキューイングを探します。つまり、のファイヤーアンドファーを処理することになります。は、別のスレッドでこれらの操作を起動するスレッドとは非同期的に非同期に処理されます。

関連する問題