2009-03-01 12 views
8

Possiedo un servizio Windows che registra le letture della velocità da una pistola radar a un database. Inoltre, ho reso il servizio un server WCF. Ho un modulo e un client CF che si iscrivono al servizio e vengono richiamati ogni volta che c'è una lettura che soddisfa determinati criteri.Contratto callback a esecuzione prolungata tramite canale duplex WCF - schemi di progettazione alternativi?

Questo funziona in linea di principio, ma dopo qualche tempo il canale scade. Sembra che ci siano alcuni problemi fondamentali con connessioni di lunga durata (vedere http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspx) e una richiamata HTTP duplex potrebbe non essere la soluzione giusta. Ci sono altri modi in cui posso realizzare un modello di pubblicazione/sottoscrizione con WCF?

Modifica: anche con un timeout di 2 ore il canale viene infine compromesso. Viene visualizzato questo errore:

L'operazione 'SignalSpeedData' non può essere completata perché il canale di sessione è scaduto in attesa di ricevere un messaggio. Per aumentare il timeout, impostare la proprietà receiveTimeout sull'associazione nel file di configurazione o impostare direttamente la proprietà ReceiveTimeout sul Binding.

Questo è successo 15 minuti dopo l'ultima chiamata riuscita. Mi chiedo se invece di mantenere aperta la sessione, è possibile ristabilire una nuova sessione per ogni chiamata.

risposta

6

La messaggistica affidabile si prenderà cura delle vostre esigenze. Il canale si ristabilisce se c'è un problema. WSDualHTTPBinding fornisce questo per l'associazione http e vi è anche un binding tcp che consente questo. Se ci si trova sullo stesso computer, il binding pipe denominato lo fornirà di default.

+0

Se si intende una sessione affidabile, lo sto già utilizzando e ho impostato il timeout di inattività a 2 ore. – cdonner

+1

Quindi, "si suppone" che RS invii i messaggi di infrastruttura dopo il timeout di inattività. Purtroppo non è nell'ultima versione del framework. Se invii un messaggio "heartbeat" ogni 20 minuti circa, dovrebbe occuparsi del problema. C'è anche un'altra impostazione che dovrò cercare domani. – Steve

+3

Caro Steve, cdonner, Qual era la soluzione? I messaggi heartbeat non mi sembrano carini e preferirei alcuni parametri di configurazione. –

Problemi correlati