レーダーガンからの速度測定値をデータベースに記録するWindowsサービスがあります。さらに、このサービスをWCFサーバーにしました。私は、サービスにサブスクライブし、特定の基準を満たす読み取り値があるたびにコールバックされるフォームとCFクライアントを持っています。
これは原則として機能しますが、しばらくするとチャネルがタイムアウトします。長時間実行される接続( http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspxを参照)と二重HTTPコールバックにはいくつかの基本的な問題があるようです。 正しい解決策ではないかもしれません。WCFでパブリッシュ/サブスクライブパターンを実現する他の方法はありますか?
編集:2時間のタイムアウトがあっても、チャネルは最終的に危険にさらされます。このエラーが発生します:
セッションフルチャネルがメッセージの受信を待機してタイムアウトしたため、操作'SignalSpeedData'を完了できませんでした。タイムアウトを増やすには、構成ファイルのバインディングにreceiveTimeoutプロパティを設定するか、バインディングに直接ReceiveTimeoutプロパティを設定します。
これは、最後に成功した呼び出しの15分後に発生しました。セッションを開いたままにする代わりに、呼び出しごとに新しいセッションを再確立できるかどうか疑問に思っています。