2010-04-26 6 views
9

Finora, nessuno può offrire alcun vantaggio nell'utilizzare il doppio canale su un sistema di polling client, fatta eccezione per la notifica immediata che è possibile ottenere dal doppio canale. Ogni altro punto dice che se non hai bisogno di un preavviso immediato il doppio legame fornisce un valore negativo - nessuno è d'accordo con questo?Qual è il vantaggio di WSDualHttpBinding in WCF?

Quanto beneficio ci sarebbe di usare WSDualHttpBinding con il servizio ospitato da IIS rispetto a un sondaggio client che chiama il servizio WCF, supponendo che in quest'ultimo il servizio memorizzasse nella cache i dati in questione?

Questo scenerio sarebbe per un tipo di servizio di notifica in cui i client devono essere notificati dal servizio quando si verifica un evento.

In particolare, quali vantaggi offre WSDualHttpBinding tramite polling? es .: meno traffico di rete, più veloce da progettare, più facile da mantenere, più controllo ???

Da quello che ho capito, WSDualHttpBinding è meno scalabile del polling del client, quindi perché usarlo del tutto? Modifica: come fornito da Matt, l'ora critica può essere una delle ragioni per l'associazione duplex.

Ecco quello che ho finora:

WSDualHttpBinding

adv: è possibile ottenere una risposta immediata w/o in attesa di timer di polling

dis: meno scalabile rispetto wsHttpBinding

DIS: meno firewall friendly

dis: più lento di WSHttpBinding

Aggiungerò a questo sulla base di commenti, per favore fatemi sapere se dichiari qualcosa in modo errato.

grazie per voi :-) ingresso

risposta

8

C'è una ricchezza di informazioni in this SO thread. Fondamentalmente, il polling ha lo svantaggio che il tuo cliente è solo aggiornato come il suo ultimo sondaggio, quindi per informazioni time-critical è necessario aumentare la frequenza del polling. Ogni sondaggio occupa risorse di rete e crea un sovraccarico sul client. Soluzioni come il polling lungo e WSDualHttpBinding sono soluzioni alternative per questo problema. WSDualHttpBinding ha lo svantaggio che il client deve esporre un endpoint al server (che crea problemi in ambienti firewall). BOSH/XMPP o un'altra forma di polling lungo è un'altra alternativa.

+0

grazie, sembra un vantaggio per wshttpbinding :-) – schmoopy

4

WSDualHttpBinding è stato creato per un motivo. WCF forniva supporto per i "callback" di servizio: i metodi sul client che venivano notificati ogni volta che l'esecuzione del servizio veniva completata. Sfortunatamente, HTTP - essendo un canale a senso unico - non consentirebbe callback (al contrario, TCPBinding lo consente poiché TCP è un canale full duplex). Per aggirare la natura unidirezionale di HTTP, è stata inventata la DualHttpBinding: due connessioni HTTP aperte contemporaneamente - una per la richiesta di servizio - e una per la callback. Non è una questione di scalabilità, ma di necessità. Se si desidera utilizzare le richiamate (e le callback sono grandi soprattutto se il servizio richiede un servizio che richiede molto tempo), WSDualHttpBinding potrebbe essere la soluzione migliore. Il polling è probabilmente il peggiore per le ragioni già evidenziate - ogni sondaggio occupa risorse di rete ecc.