Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os contratos de roteamento definem os padrões de mensagem que o Serviço de Roteamento pode processar. Cada contrato é sem tipo e permite que o serviço receba uma mensagem sem conhecimento do esquema ou da ação da mensagem. Isso permite que o Serviço de Roteamento rote mensagens genericamente sem configuração adicional para as especificações das mensagens subjacentes que estão sendo roteadas.
Contratos de roteamento
Como o Serviço de Roteamento aceita um objeto de mensagem WCF genérico, a consideração mais importante ao selecionar um contrato é a forma do canal que será usado ao se comunicar com os clientes e serviços. Ao processar mensagens, o Serviço de Roteamento usa bombas de mensagem simétricas, portanto, geralmente, a forma do contrato de entrada deve corresponder à forma do contrato de saída. No entanto, há casos em que o dispatcher do Modelo de Serviço pode modificar as formas, como quando o dispatcher converte um canal duplex em um canal de solicitação-resposta ou remove o suporte de sessão de um canal quando ele não é necessário e não está sendo usado (ou seja, quando SessionMode.Allowed, convertendo um IInputSessionChannel em um IInputChannel).
Para dar suporte a essas bombas de mensagem, o Serviço de Roteamento fornece contratos no System.ServiceModel.Routing namespace, que devem ser usados ao definir os pontos de extremidade de serviço usados pelo Serviço de Roteamento. Esses contratos são sem tipo, o que permite o recebimento de qualquer tipo de mensagem ou ação e permite que o Serviço de Roteamento manipule mensagens sem conhecimento do esquema de mensagem específico. Para obter mais informações sobre os contratos usados pelo Serviço de Roteamento, consulte Contratos de Roteamento.
Os contratos fornecidos pelo Serviço de Roteamento estão localizados no System.ServiceModel.Routing namespace e são descritos na tabela a seguir.
| Contrato | Forma | Forma do 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 |