2011-11-01 13 views

risposta

6

Se utilizzato con il trasporto HTTP, il server fa chiama il client. Per fare in modo che funzioni, il client deve trovarsi su un endpoint pubblico, quindi i firewall e cos'altro dovranno essere configurati in modo appropriato.

Da http://msdn.microsoft.com/en-us/magazine/cc163537.aspx:

A causa della sua natura senza connessione, HTTP non può essere utilizzato per le richiamate e, pertanto, non è possibile utilizzare le richiamate sopra BasicHttpBinding o WSHttpBinding. Windows Communication Foundation offre il supporto di callback per NetTcpBinding e NetNamedPipeBinding poiché il trasporto sottostante è bidirezionale. Per supportare i callback su HTTP, Windows Communication Foundation fornisce WSDualHttpBinding, che in realtà imposta due canali HTTP: uno per le chiamate dal client al servizio e uno per le chiamate dal servizio al client.

E dal riferimento per WSDualHttpBinding http://msdn.microsoft.com/en-us/library/system.servicemodel.wsdualhttpbinding.aspx:

Questa associazione richiede che il cliente ha un URI pubblica che fornisce un endpoint di callback per il servizio. Questo è fornito da ClientBaseAddress. Una doppia associazione espone l'indirizzo IP del client al servizio. Il client deve utilizzare la sicurezza per assicurarsi che si connetta solo ai servizi di cui si fida.

+0

Ciao @JeremyMcGee, stavo esaminando questi argomenti. Sto usando una semplice applicazione di console come client, come indicato [qui] (http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/a-simple-duplex-service-in-wcf/). Capisco dalla tua risposta che il client deve avere un endpoint per il server da colpire, la mia domanda è, c'è un modo per poter vedere che cos'è questo endpoint? – SamGhatak

0

client A WCF Duplex HTTP (ad esempio quando si utilizza un wsDualHttpBinding) inizierà un server troppo, per ascoltare le richieste dal server "reale" quando è richiamato.

Quindi questo non funzionerà su NAT, per nominare una cosa.

Problemi correlati