Delen via


Routeringsscenario's

Hoewel de routeringsservice zeer aanpasbaar is, kan het een uitdaging zijn om efficiënte routeringslogica te ontwerpen bij het maken van een nieuwe configuratie. Er zijn echter verschillende veelvoorkomende scenario's die de meeste routeringsserviceconfiguraties volgen. Hoewel deze scenario's mogelijk niet rechtstreeks van toepassing zijn op uw specifieke configuratie, kunt u beter begrijpen hoe de routeringsservice kan worden geconfigureerd om deze scenario's af te handelen.

Gangbare scenario's

Het meest elementaire gebruik van de routeringsservice is het samenvoegen van meerdere doeleindpunten om het aantal eindpunten dat beschikbaar is voor de clienttoepassingen te verminderen en vervolgens berichtfilters te gebruiken om elk bericht naar de juiste bestemming te routeren. Berichten kunnen worden gerouteerd op basis van vereisten voor logische of fysieke verwerking, zoals een berichttype dat moet worden verwerkt door een specifieke service, of op basis van willekeurige bedrijfsbehoeften, zoals het leveren van prioriteitsverwerking van berichten van een specifieke bron. De volgende tabel bevat enkele veelvoorkomende scenario's en wanneer ze worden aangetroffen:

Scenario Wanneer gebruiken
Serviceversiebeheer U moet meerdere versies van een service ondersteunen of in de toekomst een bijgewerkte service implementeren
Servicegegevenspartitionering U moet een service partitioneren op meerdere hosts
Dynamische update U moet routeringslogica tijdens runtime dynamisch opnieuw configureren om veranderende service-implementaties af te handelen
Multicast U moet één bericht verzenden naar meerdere eindpunten
Protocol bridging U ontvangt berichten via één transportprotocol en het doeleindpunt maakt gebruik van een ander protocol
Foutafhandeling U moet tolerantie bieden voor netwerkstoringen en communicatiefouten

Notitie

Hoewel veel van de gepresenteerde scenario's specifiek zijn voor bepaalde bedrijfsbehoeften of verwerkingsvereisten, kan het plannen van dynamische updates en het gebruik van foutafhandeling vaak worden beschouwd als best practices omdat u routeringslogica tijdens runtime kunt wijzigen en kunt herstellen van tijdelijke netwerk- en communicatiefouten.

Serviceversiebeheer

Wanneer u een nieuwe versie van een service introduceert, moet u vaak de vorige versie onderhouden totdat alle clients naar de nieuwe service zijn overgestapt. Dit is met name essentieel als de service een langlopend proces is dat dagen, weken of zelfs maanden duurt. Normaal gesproken moet u hiervoor een nieuw eindpuntadres voor de nieuwe service implementeren terwijl het oorspronkelijke eindpunt voor de vorige versie behouden blijft.

Met behulp van de routeringsservice kunt u één eindpunt beschikbaar maken voor het ontvangen van berichten van clienttoepassingen en vervolgens elk bericht doorsturen naar de juiste serviceversie op basis van de berichtinhoud. De meest eenvoudige implementatie omvat het toevoegen van een aangepaste header aan het bericht dat de versie van de service aangeeft waarmee het bericht moet worden verwerkt. De routeringsservice kan het XPathMessageFilter gebruiken om elk bericht te controleren op de aanwezigheid van de aangepaste header en het bericht door te sturen naar het juiste doeleindpunt.

Zie Instructies voor het maken van een serviceversieconfiguratie voor de stappen voor het maken van een serviceversiebeheer.

Servicegegevens partitioneren

Bij het ontwerpen van een gedistribueerde omgeving is het vaak wenselijk om de verwerkingsbelasting over meerdere computers te verdelen om hoge beschikbaarheid te bieden, de verwerkingsbelasting op afzonderlijke computers te verminderen of om toegewezen resources te bieden voor een specifieke subset van berichten. Hoewel de routeringsservice geen toegewezen taakverdelingsoplossing vervangt, kan de mogelijkheid om inhoudsgebaseerde routering uit te voeren worden gebruikt om anders vergelijkbare berichten te routeren als specifieke bestemmingen. U hebt bijvoorbeeld mogelijk een vereiste om berichten van een specifieke client afzonderlijk te verwerken van berichten die van andere clients zijn ontvangen.

Zie Procedure voor het maken van een servicegegevenspartitioneringsconfiguratie voor de stappen voor het maken van een servicegegevenspartitionering.

Dynamische routering

Vaak is het wenselijk om de routeringsconfiguratie te wijzigen om te voldoen aan veranderende bedrijfsbehoeften, zoals het toevoegen van een route aan een nieuwere versie van een service, het wijzigen van routeringscriteria of het wijzigen van het doeleindpunt een specifiek bericht waarnaar het filter wordt gerouteerd. Met de routeringsservice kunt u dit doen via de RoutingExtension, waarmee u tijdens de runtime een nieuwe RoutingConfiguration kunt opgeven. De nieuwe configuratie wordt onmiddellijk van kracht, maar is alleen van invloed op nieuwe sessies die door de routeringsservice worden verwerkt.

Zie Instructies voor het implementeren van dynamische routering voor de stappen voor het implementeren van dynamische updates.

Multicast

Bij het routeren van berichten, meestal routert u elk bericht naar één specifiek doeleindpunt. Soms moet u echter een kopie van het bericht doorsturen naar meerdere doeleindpunten. Als u multicast-routering wilt uitvoeren, moeten de volgende voorwaarden waar zijn:

  • De kanaalshape mag geen aanvraag-antwoord zijn (hoewel het eenrichtings- of dubbelzijdig kan zijn),omdat aanvraagantwoorden verplicht zijn om slechts één antwoord te ontvangen door de clienttoepassing als reactie op de aanvraag.

  • Meerdere filters moeten waar retourneren bij het evalueren van het bericht.

Als aan deze voorwaarden wordt voldaan, ontvangt elk doeleindpunt dat is gekoppeld aan een filter dat waar retourneert, een kopie van het bericht.

Protocol Bridging

Bij het routeren van berichten tussen verschillende SOAP-protocollen, gebruikt de Routeringsservice WCF-API's om het bericht van het ene protocol naar het andere te converteren. Dit gebeurt automatisch wanneer de service-eindpunten die door de routeringsservice worden weergegeven, een ander protocol gebruiken dan de clienteindpunten waarnaar berichten worden doorgestuurd. Het is mogelijk om dit gedrag uit te schakelen als de gebruikte protocollen niet standaard zijn; U moet echter uw eigen overbruggingscode opgeven.

Foutafhandeling

In een gedistribueerde omgeving is het niet ongebruikelijk dat er tijdelijke netwerk- of communicatiefouten optreden. Zonder een tussenliggende service, zoals de Routeringsservice, valt de last van het afhandelen van dergelijke fouten op de clienttoepassing. Als de clienttoepassing geen specifieke logica bevat om het opnieuw te proberen in het geval van netwerk- of communicatiefouten en kennis van alternatieve locaties, kan de gebruiker scenario's tegenkomen waarbij een bericht meerdere keren moet worden verzonden voordat het wordt verwerkt door de doelservice. Dit kan leiden tot ontevredenheid van klanten met de toepassing, omdat deze mogelijk als onbetrouwbaar wordt beschouwd.

De routeringsservice probeert dit scenario te verhelpen door robuuste mogelijkheden voor foutafhandeling te bieden voor berichten die te maken krijgen met netwerk- of communicatiegerelateerde fouten. Door een lijst met mogelijke doeleindpunten te maken en deze lijst te koppelen aan elk berichtfilter, verwijdert u het single point of failure dat wordt gemaakt door slechts één mogelijke bestemming te hebben. In het geval van een fout probeert de routeringsservice het bericht te bezorgen bij het volgende eindpunt in de lijst totdat het bericht is bezorgd, er een fout optreedt in de communicatie of alle eindpunten zijn uitgeput.

Zie Procedure: Foutafhandeling voor de stappen die worden gebruikt voor het configureren van foutafhandeling.

In dit gedeelte

Procedure: Serviceversiebeheer

Procedure: Partitionering van servicegegevens

Procedure: Dynamische update

Procedure: Foutafhandeling

Zie ook