wcf callback duplex

wcf - WSDualHttpBinding para devoluciones de llamada dúplex



callback duplex (2)

Si se trata de una aplicación detrás de un firewall, teóricamente sí. Depende de lo que quieras decir con "mundo real"; si con eso quiere decir "alto rendimiento" quizás NetTcpBinding sea una mejor aplicación.

¿Usaría WSDualHttpBinding para devoluciones de llamada dúplex en escenarios del mundo real? Digamos, tengo una aplicación .NET que usa un puerto aleatorio, ¿podría el servicio resolver las direcciones base y el puerto del cliente para las devoluciones de llamadas?


Una respuesta completa a su pregunta depende de que el "escenario del mundo real" sea una Intranet o un escenario de Internet. Aunque WSDualHttpBinding funciona en ambos escenarios, hay detalles que debe tener en cuenta:

Intranet

WSDualHttpBinding funcionará con su aplicación .NET utilizando un puerto personalizado preconfigurado en un escenario de Intranet y "Sí" el servicio podrá resolver las direcciones base y el puerto del cliente para las devoluciones de llamada: exactamente cómo se explica a continuación. La razón por la que se explica a continuación es que WSDualHttpBinding está diseñado principalmente para ser utilizado a través de Internet.

Las devoluciones de llamada dúplex en un escenario de Intranet cuando puede usar WCF tanto en el cliente como en el servidor se logran mejor utilizando NetTcpBinding o NetNamedPipeBinding. Estos enlaces usan TCP e ICP respectivamente como transporte (en lugar de HTTP) y una codificación binaria personalizada, por lo que se requiere WCF en ambos lados. Para las llamadas devueltas al cliente, el mismo canal utilizado para conectarse al Servicio a través del Enlace se reutiliza sin necesidad de abrir un nuevo puerto.

Internet

En un escenario de Internet, las solicitudes y respuestas HTTP válidas solo viajan en una dirección, HTTP está diseñado como un protocolo de una vía. Cuando se utiliza WSDualHttpBinding WCF, por lo tanto, se crea un canal HTTP independiente para las devoluciones de llamada. En respuesta a su segunda pregunta: la dirección de destino para esta devolución de llamada al cliente está compuesta por el nombre de host de la máquina cliente y el puerto 80 de forma predeterminada. Si el cliente es una máquina de desarrollo, por ejemplo, y tiene IIS instalado, el puerto 80 se reservará exclusivamente en algunos escenarios, lo que provocará conflictos con su aplicación prototipo. Para esto, esta publicación de blog presenta una solución y para qué sirve la propiedad ClientBaseAddress. Independientemente del puerto con el que vaya, el predeterminado o uno personalizado, debe asegurarse de que todos los firewalls y enrutadores de ambos lados estén configurados correctamente para permitir que se establezcan tanto el canal saliente como el canal de devolución de llamada independiente.

Una aplicación .NET también puede indicar una aplicación Silverlight. Debido al hecho de que una aplicación Silverlight que se ejecuta en un navegador no puede aceptar nuevas conexiones HTTP entrantes, WSDualHttpBinding con su canal posterior independiente no funcionará. Por lo tanto, PollingDuplexHttpBinding se creó en primer lugar en Silverlight 2, que puede considerarse como un ''truco'' inteligente para evitar el hecho de que HTTP es unidireccional manteniendo el canal de solicitud abierto durante un largo tiempo (sondeo largo) y usándolo como un canal secundario para llama al cliente. Esto tiene una serie de implicaciones tanto para el cliente como para el servidor, particularmente relevantes para la escala, para obtener más detalles, consulte esta publicación de mi blog .

Con una idea de su particular "escenario del mundo real" y sus casos de uso, esperamos que esto le ayude a encontrar el enlace correcto para usar en las devoluciones de llamada dúplex.