2011-09-18 14 views
6

Tengo examen 70-513 pronto. Hay una pregunta en el basurero que no entiendo.WCF - IDuplexSessionRouter VS IRequestReplyRouter

Un servicio WCF implementa un contrato con operaciones unidireccionales y de solicitud-respuesta. El servicio está expuesto a través de un transporte TCP. El cliente usa un enrutador para comunicarse con el servicio.

La respuesta dice usar IDuplexSessionRouter en lugar de IRequestReplyRouter. ¿Puedo saber por qué no puedo usar IRequestReplyRouter?

Respuesta

3

Esa pregunta se trata en este artículo de MSDN: Building a router (busque la sección que hay "Routers y Sesiones de Transporte")

1

El servicio de enrutamiento utiliza contratos que definen la forma de los canales utilizados para recibir y enviar mensajes, y por lo tanto, la forma del canal de entrada debe coincidir con la del canal de salida.

Por lo tanto, si realiza el enrutamiento a los puntos finales que usan la forma del canal solicitud-respuesta, debe utilizar un contrato compatible en los puntos finales entrantes, como IRequestReplyRouter.

Esto significa que si los puntos finales de destino utilizan contratos con varios patrones de comunicación (como mezclar operaciones unidireccionales y bidireccionales) no puede crear un punto final de servicio único que pueda recibir y enrutar mensajes a todos ellos. Una solución alternativa es utilizar un contrato dúplex en el Servicio de enrutamiento como IDuplexSessionRouter.

Referencias:

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

http://msdn.microsoft.com/en-us/library/ee517422.aspx

+2

Tenga cuidado al publicar copiar y pegar repetitivo/respuestas literales a múltiples preguntas, éstas tienden a ser marcado como "spam" por la comunidad. Si está haciendo esto, generalmente significa que las preguntas son duplicadas, por lo tanto, márquelas como tales. http://stackoverflow.com/questions/10911344 – Kev