Contratti di routingRouting Contracts

I contratti routing definiscono i modelli di messaggio che possono essere elaborati dal servizio di routing.Routing contracts define the message patterns that the Routing Service can process. 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.Each contract is typeless and allows the service to receive a message without knowledge of the message schema or action. In questo modo il servizio di routing può indirizzare in modo generico i messaggi senza ulteriore configurazione per le specifiche dei messaggi sottostanti indirizzati.This allows the Routing Service to generically route messages without additional configuration for the specifics of the underlying messages being routed.

Contratti di routingRouting Contracts

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.Because the Routing Service accepts a generic WCF Message object, the most important consideration when selecting a contract is the shape of the channel that will be used when communicating with the clients and services. 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.When processing messages, the Routing Service uses symmetrical message pumps, so generally the shape of the inbound contract must match the shape of the outbound contract. Tuttavia, vi sono casi in cui il dispatcher del modello del servizio possa modificare le forme, ad esempio quando il dispatcher converte un canale duplex in un canale di richiesta-risposta o rimuove il supporto della sessione da un canale quando non è obbligatorio e non è in uso (ovvero Quando SessionMode, la conversione un IInputSessionChannel in un IInputChannel).However, there are cases where the Service Model’s dispatcher can modify the shapes, such as when the dispatcher converts a duplex channel into a request-reply channel, or removes the session support from a channel when it is not required and is not being used (that is, when SessionMode.Allowed, converting an IInputSessionChannel into an 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.To support these message pumps, the Routing Service provides contracts in the System.ServiceModel.Routing namespace, which must be used when defining the service endpoints used by the Routing Service. 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.These contracts are typeless, which allows the receipt of any message type or action, and allows the Routing Service to handle messages without knowledge of the specific message schema. Per ulteriori informazioni sui contratti utilizzati dal servizio di Routing, vedere contratti Routing.For more information about the contracts used by the Routing Service, see Routing Contracts.

I contratti forniti dal servizio di routing si trovano nello spazio dei nomi System.ServiceModel.Routing e vengono descritti nella tabella seguente.The contracts provided by the Routing Service are located in the System.ServiceModel.Routing namespace, and are described in the following table.

ContrattoContract FormaShape Forma del canaleChannel Shape
ISimplexDatagramRouter SessionMode = SessionMode.AllowedSessionMode = SessionMode.Allowed

AsyncPattern = trueAsyncPattern = true

IsOneWay = trueIsOneWay = true
IInputChannel -> IOutputChannelIInputChannel -> IOutputChannel
ISimplexSessionRouter SessionMode = SessionMode.RequiredSessionMode = SessionMode.Required

AsyncPattern = trueAsyncPattern = true

IsOneWay = trueIsOneWay = true
IInputSessionChannel -> IOutputSessionChannelIInputSessionChannel -> IOutputSessionChannel
IRequestReplyRouter SessionMode = SessionMode.AllowedSessionMode = SessionMode.Allowed

AsyncPattern = trueAsyncPattern = true
IReplyChannel -> IRequestChannelIReplyChannel -> IRequestChannel
IDuplexSessionRouter SessionMode=SessionMode.RequiredSessionMode=SessionMode.Required

CallbackContract=typeof(ISimplexSession)CallbackContract=typeof(ISimplexSession)

AsyncPattern = trueAsyncPattern = true

IsOneWay = trueIsOneWay = true

TransactionFlow(TransactionFlowOption.Allowed)TransactionFlow(TransactionFlowOption.Allowed)
IDuplexSessionChannel -> IDuplexSessionChannelIDuplexSessionChannel -> IDuplexSessionChannel

Vedere ancheSee Also

Servizio di routingRouting Service
Introduzione al routingRouting Introduction