Udostępnij za pośrednictwem


Kontrakty routingu

Kontrakty routingu definiują wzorce komunikatów, które usługa routingu może przetwarzać. Każdy kontrakt jest bez typów i umożliwia usłudze odbieranie komunikatu bez znajomości schematu lub akcji komunikatu. Dzięki temu usługa routingu może ogólnie kierować komunikaty bez dodatkowej konfiguracji dla specyficznych dla trasowanych komunikatów bazowych.

Kontrakty routingu

Ponieważ usługa routingu akceptuje ogólny obiekt komunikatów WCF, najważniejszą kwestią podczas wybierania kontraktu jest kształt kanału, który będzie używany podczas komunikacji z klientami i usługami. Podczas przetwarzania komunikatów usługa routingu używa symetrycznych pomp komunikatów, więc ogólnie kształt kontraktu przychodzącego musi być zgodny z kształtem kontraktu wychodzącego. Istnieją jednak przypadki, w których dyspozytor modelu usługi może modyfikować kształty, takie jak gdy dyspozytor konwertuje kanał dwukierunkowy na kanał żądania-odpowiedź, lub usuwa obsługę sesji z kanału, gdy nie jest wymagany i nie jest używany (tj. gdy sessionMode.Allowed, konwertowanie IInputSessionChannel na IInputSessionChannel).

Aby obsługiwać te pompy komunikatów, usługa routingu udostępnia kontrakty w System.ServiceModel.Routing przestrzeni nazw, która musi być używana podczas definiowania punktów końcowych usługi używanych przez usługę routingu. Kontrakty te są bez typów, co umożliwia otrzymanie dowolnego typu komunikatu lub akcji i umożliwia usłudze Routing Service obsługę komunikatów bez znajomości określonego schematu komunikatów. Aby uzyskać więcej informacji na temat kontraktów używanych przez usługę routingu, zobacz Routing Contracts (Kontrakty routingu).

Kontrakty udostępniane przez usługę routingu znajdują się w System.ServiceModel.Routing przestrzeni nazw i są opisane w poniższej tabeli.

Kontrakt Kształt Kształt kanału
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

Zobacz też