2011-11-01 5 views

Respuesta

6

Cuando se utiliza con transporte HTTP, el servidor hace llama al cliente. Para que esto funcione, el cliente debe estar en un punto final público, de modo que los cortafuegos y lo que necesites deberán configurarse de forma adecuada.

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

Debido a su naturaleza sin conexión, HTTP no puede ser utilizado para devoluciones de llamada y por lo tanto no se puede utilizar devoluciones de llamada sobre BasicHttpBinding o wsHttpBinding. Windows Communication Foundation ofrece soporte de devolución de llamada para NetTcpBinding y NetNamedPipeBinding porque el transporte subyacente es bidireccional. Para admitir las devoluciones de llamadas a través de HTTP, Windows Communication Foundation proporciona WSDualHttpBinding, que en realidad configura dos canales HTTP: uno para las llamadas del cliente al servicio y otro para las llamadas del servicio al cliente.

Y a partir de la referencia para WSDualHttpBinding http://msdn.microsoft.com/en-us/library/system.servicemodel.wsdualhttpbinding.aspx:

Esta unión requiere que el cliente tiene un URI público que proporciona un punto final de devolución de llamada para el servicio. Esto es proporcionado por ClientBaseAddress. Un enlace doble expone la dirección IP del cliente al servicio. El cliente debe usar la seguridad para asegurarse de que solo se conecte a los servicios en los que confía.

+0

Hola @JeremyMcGee, estaba investigando estos temas. Estoy utilizando una aplicación de consola simple como cliente como se menciona [aquí] (http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/a-simple-duplex-service-in-wcf/). Entiendo por su respuesta que el cliente debe tener un punto final para que el servidor llegue, mi pregunta es, ¿hay alguna manera de que pueda ver cuál es este punto final? – SamGhatak

0

Un cliente de WCF Duplex HTTP (por ejemplo, cuando se utiliza un wsDualHttpBinding) se iniciará un servidor también, para escuchar a las solicitudes del servidor "real" cuando se llama de nuevo.

Así que esto no funcionará con NAT, por nombrar una cosa.

Cuestiones relacionadas