Enrutar contratos

Los contratos de enrutamiento definen los patrones de mensaje que puede procesar el servicio de enrutamiento. Todos los contratos son sin tipos y permiten al servicio recibir un mensaje sin conocimiento de la acción o del esquema del mensaje. Esto permite al servicio de enrutamiento enrutar mensajes genéricamente sin configuración adicional para las características de los mensajes subyacentes que se enrutan.

Enrutar contratos

Como el servicio de enrutamiento acepta un objeto de mensaje de WCF genérico, el aspecto más importante que se debe tener en cuenta al seleccionar un contrato es la forma del canal que se usará al comunicarse con los clientes y los servicios. Al procesar mensajes, el servicio de enrutamiento usa suministros de mensajes simétricos, así que, normalmente, la forma del contrato entrante debe coincidir con la forma del contrato saliente. Sin embargo, hay casos en los que el distribuidor del modelo de servicio puede modificar las formas, como cuando el distribuidor convierte un canal dúplex en un canal de solicitud-respuesta, o quita el soporte de la sesión de un canal cuando no es necesario y no se usa (es decir, cuando SessionMode.Allowed, convirtiendo IInputSessionChannel en IInputChannel).

Para admitir estos suministros de mensajes, el servicio de enrutamiento proporciona contratos en el espacio de nombres System.ServiceModel.Routing, que se deben usar al definir los extremos de servicio empleados por el servicio de enrutamiento. Estos contratos son sin tipo, lo que permite recibir cualquier acción o tipo de mensaje, y permite al servicio de enrutamiento administrar mensajes sin conocer el esquema del mensaje concreto. Para obtener más información acerca de los contratos que emplea el servicio de enrutamiento, vea Enrutar contratos.

Los contratos proporcionados por el servicio de enrutamiento se encuentran en el espacio de nombres System.ServiceModel.Routing y se describen en la siguiente tabla.

Contrato Forma Forma del canal

ISimplexDatagramRouter

SessionMode = SessionMode.Allowed

AsyncPattern = true

IsOneWay = true

IInputChannel -> IOutputChannel

ISimplexSessionRouter

SessionMode = SessionMode.Required

AsyncPattern = true

IsOneWay = true

IInputSessionChannel -> IOutputSessionChannel

IRequestReplyRouter

SessionMode = SessionMode.Allowed

AsyncPattern = true

IReplyChannel -> IRequestChannel

IDuplexSessionRouter

SessionMode=SessionMode.Required

CallbackContract=typeof(ISimplexSession)

AsyncPattern = true

IsOneWay = true

TransactionFlow(TransactionFlowOption.Allowed)

IDuplexSessionChannel -> IDuplexSessionChannel

Vea también

Conceptos

Introducción al enrutamiento

Otros recursos

Routing Service