Condividi tramite


Contratti di routing

I contratti routing definiscono i modelli di messaggio che possono essere elaborati dal servizio di routing. Ogni contratto è sprovvisto di tipi e consente la ricezione di un messaggio da parte del servizio senza conoscere l'azione o lo schema del messaggio. In questo modo il servizio di routing può indirizzare in modo generico i messaggi senza ulteriore configurazione per le specifiche dei messaggi sottostanti indirizzati.

Contratti di routing

Poiché il servizio di routing accetta un oggetto WCF Message generico, la considerazione più importante in fase di scelta di un contratto ricade sulla forma del canale che verrà utilizzato per le comunicazioni con i client e i servizi. In caso di elaborazione di messaggi, il servizio di routing utilizza message pump simmetrici, quindi la forma del contratto in ingresso deve in genere corrispondere alla forma del contratto in uscita. Esistono tuttavia alcuni casi in cui il dispatcher del modello di servizi può modificare le forme, ad esempio nel caso in cui il dispatcher converte un canale duplex in un canale request/reply oppure rimuove il supporto della sessione da un canale quando non è richiesto e non viene utilizzato (ovvero, quando SessionMode.Allowed converte IInputSessionChannel in IInputChannel).

Per supportare questi message pump, il servizio di routing fornisce contratti nello spazio dei nomi System.ServiceModel.Routing, che deve essere utilizzato in caso di definizione degli endpoint servizio utilizzati dal servizio di routing. Questi contratti sono sprovvisti di tipi. In questo modo è possibile ricevere qualsiasi azione o tipo di messaggio e il servizio di routing può gestire i messaggi senza conoscere lo schema del messaggio specifico. Per ulteriori informazioni sui contratti utilizzati dal servizio di routing, vedere Contratti di routing.

I contratti forniti dal servizio di routing si trovano nello spazio dei nomi System.ServiceModel.Routing e vengono descritti nella tabella seguente.

Contratto Forma Forma del canale

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

Vedere anche

Concetti

Introduzione al routing

Altre risorse

Routing Service