Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los contratos de enrutamiento definen los patrones de mensaje que el servicio de enrutamiento puede procesar. Cada contrato no tiene tipo y permite que el servicio reciba un mensaje sin conocimiento del esquema o acción del mensaje. Esto permite que el servicio de enrutamiento redirija los mensajes de manera genérica sin configuración adicional para los detalles específicos de los mensajes subyacentes.
Enrutar contratos
Dado que el servicio de enrutamiento acepta un objeto Message WCF genérico, la consideración más importante al seleccionar un contrato es la forma del canal que se utilizará para comunicarse con los clientes y servicios. Al procesar mensajes, el servicio de enrutamiento usa bombas de mensajes simétricas, por lo que, por lo general, 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 la compatibilidad de sesión de un canal cuando no es necesario y no se usa (es decir, cuando SessionMode.Allowed, convierte un IInputSessionChannel en un 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 puntos de conexión de servicio empleados por el servicio de enrutamiento. Estos contratos no tienen tipo, lo que permite la recepción de cualquier tipo de mensaje o acción, y permite que el servicio de enrutamiento controle los mensajes sin conocimiento del esquema de mensajes específico. Para obtener más información sobre los contratos usados por el servicio de enrutamiento, vea Contratos de enrutamiento.
Los contratos proporcionados por el servicio de enrutamiento se encuentran en el System.ServiceModel.Routing espacio de nombres y se describen en la tabla siguiente.
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 |