Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I contratti di routing definiscono i modelli di messaggio che il servizio di routing può elaborare. Ogni contratto è senza tipi e consente al servizio di ricevere un messaggio senza conoscere lo schema o l'azione del messaggio. In questo modo il servizio di routing instrada i messaggi in modo generico senza una configurazione aggiuntiva per le specifiche dei messaggi sottostanti instradati.
Contratti di routing
Poiché il servizio di routing accetta un oggetto messaggio WCF generico, la considerazione più importante quando si seleziona un contratto è la forma del canale che verrà utilizzato durante la comunicazione con i client e i servizi. Durante l'elaborazione dei messaggi, il servizio di routing utilizza pompe di messaggio simmetriche, pertanto la forma del contratto in ingresso deve corrispondere alla forma del contratto in uscita. Tuttavia, esistono casi in cui il dispatcher del modello di servizio può modificare le forme, ad esempio quando il dispatcher converte un canale duplex in un canale request-reply o rimuove il supporto della sessione da un canale quando non è necessario e non viene usato ( ovvero quando SessionMode.Allowed, converte un IInputSessionChannel in un IInputChannel).
Per supportare questi gestori di messaggi, il servizio di routing fornisce contratti nello spazio dei nomiSystem.ServiceModel.Routing, che devono essere usati per definire gli endpoint di servizio utilizzati dal servizio di routing. Questi contratti sono senza un tipo specifico, il che consente la ricezione di qualsiasi tipo di messaggio o azione e permette al servizio di routing di elaborare i messaggi senza conoscere lo schema del messaggio specifico. Per altre informazioni sui contratti usati dal servizio di routing, vedere Contratti di routing.
I contratti forniti dal servizio di routing si trovano nello System.ServiceModel.Routing spazio dei nomi e sono descritti nella tabella seguente.
Contratto | Forma | Profilo del canale |
---|---|---|
ISimplexDatagramRouter | ModalitàSessione = ModalitàSessione.Consentito AsyncPattern = true IsOneWay = true |
IInputChannel -> IOutputChannel |
ISimplexSessionRouter | SessionMode = SessionMode.Required AsyncPattern = true IsOneWay = true |
IInputSessionChannel -> IOutputSessionChannel |
IRequestReplyRouter | ModalitàSessione = ModalitàSessione.Consentito AsyncPattern = true |
IReplyChannel -> IRequestChannel |
IDuplexSessionRouter | SessionMode=SessionMode.Required CallbackContract=typeof(ISimplexSession) AsyncPattern = true IsOneWay = true FlussoTransazione(OpzioneFlussoTransazione.Consentito) |
IDuplexSessionChannel -> IDuplexSessionChannel |