Sdílet prostřednictvím


Kontrakty pro směrování

Kontrakty směrování definují vzory zpráv, které může služba směrování zpracovat. Každý kontrakt je bez typů a umožňuje službě přijímat zprávu bez znalosti schématu zprávy nebo akce. To umožňuje směrovací službě obecně směrovat zprávy bez další konfigurace pro specifika směrovaných podkladových zpráv.

Kontrakty pro směrování

Vzhledem k tomu, že směrovací služba přijímá obecný objekt zprávy WCF, je nejdůležitějším aspektem při výběru kontraktu tvar kanálu, který se použije při komunikaci s klienty a službami. Při zpracování zpráv služba Směrování používá symetrická čerpadla zpráv, takže obecně tvar příchozího kontraktu musí odpovídat tvaru odchozího kontraktu. Existují však případy, kdy dispečer modelu služby může upravit obrazce, například když dispečer převede duplexní kanál na kanál odpovědi požadavku nebo odebere podporu relace z kanálu, pokud není vyžadována a nepoužívá se (to znamená, že SessionMode.Allowed, převod IInputSessionChannel na IInputChannel).

Aby služba směrování podporovala tato čerpadla zpráv, poskytuje kontrakty v System.ServiceModel.Routing oboru názvů, které musí být použity při definování koncových bodů služby používané službou směrování. Tyto kontrakty jsou bez typů, což umožňuje příjem jakéhokoli typu zprávy nebo akce a umožňuje službě směrování zpracovávat zprávy bez znalosti konkrétního schématu zpráv. Další informace o kontraktech používaných službou směrování naleznete v tématu Kontrakty směrování.

Kontrakty poskytované službou Směrování jsou umístěny v System.ServiceModel.Routing oboru názvů a jsou popsány v následující tabulce.

Smlouva Tvar Obrazec kanálu
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

Viz také