Sdílet prostřednictvím


Směrovací služba

Směrovací služba je obecný zprostředkovatel SOAP, který funguje jako směrovač zpráv. Základní funkce služby směrování je schopnost směrovat zprávy na základě obsahu zprávy, což umožňuje přeposlat zprávu do koncového bodu klienta na základě hodnoty samotné zprávy v záhlaví nebo textu zprávy.

Je RoutingService implementována jako služba Windows Communication Foundation (WCF) v System.ServiceModel.Routing oboru názvů. Směrovací služba zveřejňuje jeden nebo více koncových bodů služby, které přijímají zprávy, a pak jednotlivé zprávy směruje na jeden nebo více koncových bodů klienta na základě obsahu zprávy. Služba poskytuje následující funkce:

  • Směrování na základě obsahu

    • Agregace služeb

    • Správa verzí služby

    • Směrování podle priority

    • Dynamická konfigurace

  • Přemostění protokolu

  • Zpracování PROTOKOLU SOAP

  • Pokročilé zpracování chyb

  • Koncové body zálohování

I když je možné vytvořit zprostředkující službu, která dosahuje jednoho nebo více těchto cílů, často je taková implementace svázaná s konkrétním scénářem nebo řešením a nelze ji snadno použít u nových aplikací.

Směrovací služba poskytuje obecný, dynamicky konfigurovatelný zprostředkující protokol SOAP, který je kompatibilní s modely služby WCF a kanálu a umožňuje provádět směrování zpráv založených na obsahu založených na protokolu SOAP.

Poznámka:

Služba směrování v současné době nepodporuje směrování služeb WCF REST. Pokud chcete směrovat volání REST, zvažte použití System.Web.Routing nebo směrování žádostí o aplikaci.

Směrování na základě obsahu

Směrování na základě obsahu je schopnost směrovat zprávu na základě jedné nebo více hodnot obsažených ve zprávě. Služba směrování kontroluje každou zprávu a směruje ji do cílového koncového bodu na základě obsahu zprávy a logiky směrování, kterou vytvoříte. Směrování na základě obsahu poskytuje základ pro agregaci služeb, správu verzí služeb a směrování podle priority.

Aby bylo možné implementovat směrování založené na obsahu, služba směrování spoléhá na MessageFilter implementace, které se používají ke shodě konkrétních hodnot v rámci zpráv, které se mají směrovat. Pokud MessageFilter odpovídá zprávě, zpráva je směrována do cílového koncového bodu přidruženého k MessageFilter. Filtry zpráv jsou seskupené do tabulek filtrů (FilterTableCollection) pro vytvoření komplexní logiky směrování. Tabulka filtrů může například obsahovat pět vzájemně se vylučujících filtrů zpráv, které způsobují směrování zpráv pouze do jednoho z pěti cílových koncových bodů.

Služba směrování umožňuje nakonfigurovat logiku, která se používá k provádění směrování na základě obsahu, a také dynamicky aktualizovat logiku směrování za běhu.

Pomocí seskupování filtrů zpráv do tabulek filtrů je možné vytvořit logiku směrování, která umožňuje zpracovávat několik scénářů směrování, jako jsou:

  • Agregace služeb

  • Správa verzí služby

  • Směrování podle priority

  • Dynamická konfigurace

Další informace o filtrech zpráv a filtrech tabulek naleznete v tématu Úvod ke směrování a Filtry zpráv.

Agregace služby

Pomocí směrování založeného na obsahu můžete zveřejnit jeden koncový bod, který přijímá zprávy z externích klientských aplikací, a pak směruje každou zprávu do příslušného interního koncového bodu na základě hodnoty ve zprávě. To je užitečné nabídnout jeden konkrétní koncový bod pro celou řadu back-endových aplikací a také prezentovat jeden koncový bod aplikace zákazníkům a zároveň zohlednit aplikaci do různých služeb.

Verze služby

Při migraci na novou verzi vašeho řešení možná budete muset zachovat starou verzi paralelně, aby sloužila stávajícím zákazníkům. Často to vyžaduje, aby klienti připojující se k novější verzi při komunikaci s řešením používali jinou adresu. Služba směrování umožňuje zveřejnit jeden koncový bod služby, který obsluhuje obě verze vašeho řešení směrováním zpráv do příslušného řešení na základě informací specifických pro verzi obsažených ve zprávě. Příklad takové implementace naleznete v tématu Postupy: Správa verzí služby.

Prioritní směrování

Při poskytování služby pro více klientů můžete mít smlouvu o úrovni služeb (SLA) s některými partnery, kteří vyžadují, aby se všechna data od těchto partnerů zpracovávala odděleně od ostatních klientů. Pomocí filtru, který hledá informace specifické pro zákazníky obsažené ve zprávě, můžete snadno směrovat zprávy od konkrétních partnerů do koncového bodu, který byl vytvořen tak, aby splňoval jejich požadavky na smlouvu SLA.

Dynamická konfigurace

Pro podporu kritických systémů, kdy je nutné zpracovávat zprávy bez přerušení služeb, je důležité, abyste mohli upravit konfiguraci komponent v systému za běhu. Pro podporu této potřeby poskytuje IExtension<T> směrovací služba implementaci, RoutingExtensionkterá umožňuje dynamickou aktualizaci konfigurace směrovací služby za běhu.

Další informace o dynamické konfiguraci služby směrování naleznete v tématu Úvod ke směrování.

Přemostění protokolu

Jedním z problémů ve zprostředkovatelských scénářích je, že interní koncové body můžou mít jiné požadavky na přenos nebo verzi PROTOKOLU SOAP než koncový bod, na který se zprávy přijímají. Pro podporu tohoto scénáře může směrovací služba přemostět protokoly, včetně zpracování zprávy SOAP na MessageVersion požadované cílové koncové body. Tímto způsobem lze použít jeden protokol pro interní komunikaci, zatímco jiný lze použít pro externí komunikaci.

Aby služba Routing Service podporovala směrování zpráv mezi koncovými body s různými přenosy, používá systémové vazby, které službě umožňují přemostění různých protokolů. K tomu dochází automaticky, když koncový bod služby vystavený službou směrování používá jiný protokol než koncové body klienta, na které jsou zprávy směrovány.

Zpracování protokolu SOAP

Běžným požadavkem směrování je schopnost směrovat zprávy mezi koncovými body s různými požadavky protokolu SOAP. Pro podporu tohoto požadavku poskytuje SoapProcessingBehavior služba směrování, která automaticky vytvoří novou verzi MessageVersion , která splňuje požadavky cílového koncového bodu před tím, než se zpráva na ni směruje. Toto chování také vytvoří novou messageVersion pro všechny zprávy odpovědi před vrácením do žádající klientské aplikace, aby se zajistilo, že MessageVersion odpovědi odpovídá zprávě původního požadavku.

Další informace o zpracování protokolu SOAP naleznete v tématu Úvod ke směrování.

Zpracování chyb

V systému složeného z distribuovaných služeb, které spoléhají na síťovou komunikaci, je důležité zajistit, aby komunikace v rámci vašeho systému byla odolná vůči přechodným selháním sítě. Služba směrování implementuje zpracování chyb, které vám umožní zpracovat mnoho scénářů selhání komunikace, které by jinak mohly vést k výpadku služby.

Pokud služba směrování narazí při pokusu CommunicationException o odeslání zprávy, provede se zpracování chyb. Tyto výjimky obvykle značí, že při pokusu o komunikaci s definovaným koncovým bodem klienta, jako EndpointNotFoundExceptionje například , ServerTooBusyExceptionnebo CommunicationObjectFaultedException. Kód pro zpracování chyb se také zachytí a pokusí se znovu odeslat, když dojde k výjimce TimeoutException , což je další běžná výjimka, která není odvozena z CommunicationException.

Další informace o zpracování chyb naleznete v tématu Úvod ke směrování.

Koncové body zálohování

Kromě koncových bodů cílového klienta přidruženého ke každé definici filtru v tabulce filtru můžete také vytvořit seznam koncových bodů zálohování, na které se zpráva bude směrovat v případě selhání přenosu. Pokud dojde k chybě a pro položku filtru je definován seznam záloh, služba směrování se pokusí odeslat zprávu do prvního koncového bodu definovaného v seznamu. Pokud tento pokus o přenos selže, služba vyzkouší další koncový bod a pokračuje v tomto procesu, dokud pokus o přenos nebude úspěšný, vrátí chybu související s přenosem nebo všechny koncové body v seznamu záloh vrátily chybu přenosu.

Další informace okoncovýchch

Streamování

Pokud nastavíte vazbu na podporu streamování, může směrovací služba úspěšně streamovat zprávy. Existují však určité podmínky, za kterých může být nutné ukládat zprávy do vyrovnávací paměti:

  • Vícesměrové vysílání (vyrovnávací paměť pro vytvoření dalších kopií zpráv)

  • Převzetí služeb při selhání (vyrovnávací paměť pro případ, že se zpráva musí odeslat do zálohy)

  • System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly je false (vyrovnávací paměť pro zobrazení MessageFilterTable s messageBufferem, aby filtry mohly zkontrolovat tělo)

  • Dynamická konfigurace

Viz také