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 |