クライアントが通信できる WCF サービス (IIS で実行) を作成しています。サーバーから定期的にハートビートをマスターサーバーに送信したいと考えています。
現時点でこれを行う唯一の方法は、ハートビートを送信する 2 つ目の Windows サービスを作成することです。
1 つのサービスだけですべてを完了できるように、元の WCF サービスで定期的にイベントを実行する方法はありますか?
クライアントが通信できる WCF サービス (IIS で実行) を作成しています。サーバーから定期的にハートビートをマスターサーバーに送信したいと考えています。
現時点でこれを行う唯一の方法は、ハートビートを送信する 2 つ目の Windows サービスを作成することです。
1 つのサービスだけですべてを完了できるように、元の WCF サービスで定期的にイベントを実行する方法はありますか?
やりたいことは、サーバー プッシュまたは全二重アプローチで実現できます。ただし、ハートビートについては、ここで説明されているように、 WebClientを使用して単純な http ping で回避できます。セルフホスティング (IIS 以外) の場合、 ServiceBase.OnStart/OnStopをオーバーライドし、タイマーを開始/停止して定期的に ping をトリガーすることができます。
ただし、IIS で WCF サービスをホストするということは、通常、サービスが要求ごとにインスタンス化されることを意味するため、永続的な ping を送信するためにぶらぶらしているサービス インスタンスはありません。
マスター サーバーへのハートビートが必要な目的によって異なります。代わりに、マスター サーバーが WCF サービスに対して定期的に要求を実行できるようにできますか?
長時間実行されるサービスが本当に必要な場合は、IIS の代わりに Windows サービスで WCF をホストすることをお勧めします。