2009-03-01 14 views
8

Mam usługę Windows, która rejestruje odczyty prędkości z pistoletu radarowego do bazy danych. Ponadto zrobiłem usługę serwera WCF. Mam klienta Forms i CF, którzy subskrybują tę usługę i zostają oddzwonieni za każdym razem, gdy istnieje odczyt spełniający określone kryteria.Długotrwała umowa oddzwonienia za pośrednictwem kanału dupleksowego WCF - alternatywne wzorce projektowe?

To działa w zasadzie, ale po pewnym czasie kanał przekracza limit czasu. Wydaje się, że istnieją pewne podstawowe problemy z długotrwałymi połączeniami (zobacz http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspx), a połączenie dupleksowe HTTP może nie być właściwym rozwiązaniem. Czy istnieją inne sposoby, w jakie mogę zrealizować wzór publikowania/subskrybowania za pomocą WCF?

Edycja: Nawet z 2-godzinnym przekroczeniem czasu kanał jest ostatecznie zagrożony. Otrzymuję ten błąd:

Operacji "SignalSpeedData" nie można ukończyć, ponieważ sesyjny kanał przekroczył limit czasu oczekiwania na otrzymanie wiadomości. Aby zwiększyć limit czasu, ustaw właściwość receiveTimeout w powiązaniu w pliku konfiguracyjnym lub bezpośrednio ustaw właściwość ReceiveTimeout na powiązaniu.

Stało się to 15 minut po ostatnim udanym połączeniu. Zastanawiam się, czy zamiast utrzymywać sesję otwartą, możliwe jest ponowne ustanowienie nowej sesji dla każdego połączenia.

Odpowiedz

6

Niezawodne przesyłanie wiadomości zaspokoi Twoje potrzeby. Kanał ponownie ustanawia się, jeśli wystąpił problem. WSDualHTTPBinding zapewnia to dla wiązania http, istnieje również powiązanie tcp, które na to pozwala. Jeśli znajdujesz się na tym samym komputerze, nazwane powiązanie potoku zapewni to domyślnie.

+0

Jeśli masz na myśli niezawodną sesję - już ją używam i ustawiam limit czasu bezczynności na 2 godziny. – cdonner

+1

Tak więc RS ma "wysyłać" wiadomości o infrastrukturze po upływie limitu czasu bezczynności. Niestety nie ma to w najnowszej wersji frameworka. Jeśli wysyłasz wiadomość "puls" co 20 minut, powinna ona zająć się problemem. Jest jeszcze inne ustawienie, które muszę jutro sprawdzić. – Steve

+3

Drogi Steve, cdonner, Jakie było rzeczywiste rozwiązanie? Komunikaty heartbeat nie wyglądają mi ładnie i wolę niektóre parametry konfiguracyjne. –

Powiązane problemy