Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Routing Service is een generieke SOAP-tussenstation die fungeert als berichtrouter. De kernfunctionaliteit van de routeringsservice is de mogelijkheid om berichten te routeren op basis van berichtinhoud, waardoor een bericht kan worden doorgestuurd naar een clienteindpunt op basis van een waarde in het bericht zelf, in de koptekst of de berichttekst.
De RoutingService service wordt geïmplementeerd als een WCF-service (Windows Communication Foundation) in de System.ServiceModel.Routing naamruimte. De routeringsservice maakt een of meer service-eindpunten beschikbaar die berichten ontvangen en stuurt elk bericht vervolgens door naar een of meer clienteindpunten op basis van de berichtinhoud. De service biedt de volgende functies:
Routering op basis van inhoud
- Serviceaggregatie
- Serviceversiebeheer
- Prioriteitsroutering
- Dynamische configuratie
Protocolbrug
SOAP-verwerking
Geavanceerde foutafhandeling
Back-up-eindpunten
Hoewel het mogelijk is om een intermediaire service te maken die een of meer van deze doelen bereikt, is een dergelijke implementatie vaak gekoppeld aan een specifiek scenario of een specifieke oplossing en kan deze niet gemakkelijk worden toegepast op nieuwe toepassingen.
De Routeringsservice biedt een algemene, dynamisch configureerbare, pluggable SOAP-intermediair die compatibel is met de WCF-service- en kanaalmodellen en waarmee u inhoudsgebaseerde routering van SOAP-berichten kunt uitvoeren.
Opmerking
De routeringsservice biedt momenteel geen ondersteuning voor routering van WCF REST-services. Als u REST-aanroepen wilt routeren, kunt u overwegen om System.Web.Routing te gebruiken.
Routering op basis van inhoud
Routering op basis van inhoud is de mogelijkheid om een bericht te routeren op basis van een of meer waarden in het bericht. De routeringsservice inspecteert elk bericht en stuurt het naar het doeleindpunt op basis van de inhoud van het bericht en de routeringslogica die u maakt. Routering op basis van inhoud biedt de basis voor serviceaggregatie, serviceversiebeheer en prioriteitsroutering.
Om routering op basis van inhoud te implementeren, maakt de routeringsservice gebruik van MessageFilter-implementaties die worden gebruikt om specifieke waarden binnen de berichten te matchen voordat ze worden gerouteerd. Als een MessageFilter overeenkomt met een bericht, wordt het bericht doorgestuurd naar het doeleindpunt dat is gekoppeld aan het MessageFilter. Berichtfilters worden samengevoegd in filtertabellen (FilterTableCollection) om ingewikkelde routeringslogica te creëren. Een filtertabel kan bijvoorbeeld vijf wederzijds exclusieve berichtfilters bevatten die ertoe leiden dat berichten worden gerouteerd naar slechts één van de vijf doeleindpunten.
Met de routeringsservice kunt u de logica configureren die wordt gebruikt om inhoudsgebaseerde routering uit te voeren, en de routeringslogica tijdens runtime dynamisch bij te werken.
Door het groeperen van berichtfilters in filtertabellen kan routeringslogica worden samengesteld waarmee u meerdere routeringsscenario's kunt beheren, zoals:
- Serviceaggregatie
- Serviceversiebeheer
- Prioriteitsroutering
- Dynamische configuratie
Voor meer informatie over berichtfilters en filtertabellen, zie Routing Inleiding en Berichtfilters.
Serviceaggregatie
Met behulp van routering op basis van inhoud kunt u één eindpunt beschikbaar maken dat berichten ontvangt van externe clienttoepassingen en vervolgens elk bericht doorstuurt naar het juiste interne eindpunt op basis van een waarde in het bericht. Dit is handig om één specifiek eindpunt te bieden voor verschillende back-endtoepassingen en om één toepassingseindpunt aan klanten te presenteren terwijl uw toepassing in verschillende services wordt meegenomen.
Serviceversiebeheer
Wanneer u migreert naar een nieuwe versie van uw oplossing, moet u mogelijk de oude versie parallel onderhouden om bestaande klanten te bedienen. Dit vereist vaak dat clients die verbinding maken met de nieuwere versie, een ander adres moeten gebruiken bij het communiceren met de oplossing. Met de routeringsservice kunt u één service-eindpunt beschikbaar maken dat beide versies van uw oplossing bedient door berichten naar de juiste oplossing te routeren op basis van versiespecifieke informatie in het bericht. Voor een voorbeeld van een dergelijke implementatie raadpleegt u Instructies: Serviceversiebeheer.
Prioriteitsroutering
Wanneer u een service voor meerdere clients levert, hebt u mogelijk een SLA (Service Level Agreement) met enkele partners waarvoor alle gegevens van deze partners afzonderlijk moeten worden verwerkt van die van andere clients. Met behulp van een filter dat zoekt naar klantspecifieke informatie in het bericht, kunt u eenvoudig berichten van specifieke partners routeren naar een eindpunt dat is gemaakt om te voldoen aan hun SLA-vereisten.
Dynamische configuratie
Ter ondersteuning van bedrijfskritieke systemen, waarbij berichten moeten worden verwerkt zonder serviceonderbrekingen, is het essentieel dat u de configuratie van onderdelen binnen het systeem tijdens runtime kunt wijzigen. Ter ondersteuning van deze behoefte biedt de Routeringsservice een IExtension<T> implementatie, de RoutingExtension, waarmee de configuratie van de routeringsservice tijdens runtime dynamisch kan worden bijgewerkt.
Zie Inleiding tot routering voor meer informatie over dynamische configuratie van de Routeringsservice.
Protocol Bridging
Een van de uitdagingen in tussenliggende scenario's is dat de interne eindpunten mogelijk andere transport- of SOAP-versievereisten hebben dan het eindpunt waarop berichten worden ontvangen. Ter ondersteuning van dit scenario kan de Routeringsservice protocollen overbruggen, waaronder het verwerken van het SOAP-bericht naar de MessageVersion die vereist is door de doel-eindpunten. Op deze manier kan één protocol worden gebruikt voor interne communicatie, terwijl een ander protocol kan worden gebruikt voor externe communicatie.
Om de routering van berichten tussen eindpunten met verschillende transporten te ondersteunen, gebruikt de Routeringsservice door het systeem geleverde bindingen die de service in staat stellen om verschillende protocollen te overbruggen. Dit gebeurt automatisch wanneer het service-eindpunt dat wordt weergegeven door de routeringsservice een ander protocol gebruikt dan de clienteindpunten waarnaar berichten worden doorgestuurd.
SOAP-verwerking
Een veelvoorkomende routeringsvereiste is de mogelijkheid om berichten tussen eindpunten te routeren met verschillende SOAP-vereisten. Ter ondersteuning van deze vereiste biedt de routeringsservice een SoapProcessingBehavior service waarmee automatisch een nieuwe MessageVersion wordt gemaakt die voldoet aan de vereisten van het doeleindpunt voordat het bericht naar het wordt doorgestuurd. Dit gedrag maakt ook een nieuwe MessageVersion voor elk antwoordbericht voordat het wordt geretourneerd naar de aanvragende clienttoepassing, om ervoor te zorgen dat de MessageVersion van het antwoord overeenkomt met die van de oorspronkelijke aanvraag.
Zie Inleiding tot routering voor meer informatie over SOAP-verwerking.
Foutafhandeling
In een systeem dat bestaat uit gedistribueerde services die afhankelijk zijn van netwerkcommunicatie, is het belangrijk om ervoor te zorgen dat communicatie binnen uw systeem bestand is tegen tijdelijke netwerkfouten. De routeringsservice implementeert foutafhandeling waarmee u veel scenario's voor communicatiefouten kunt afhandelen die anders kunnen leiden tot een servicestoring.
Als de routeringsservice tijdens het proberen een CommunicationException een bericht te verzenden, een fout tegenkomt, zal foutafhandeling plaatsvinden. Deze uitzonderingen geven meestal aan dat er een probleem is opgetreden tijdens het communiceren met het gedefinieerde clienteindpunt, zoals een EndpointNotFoundException, ServerTooBusyExceptionof CommunicationObjectFaultedException. De code voor foutafhandeling zal ook proberen opnieuw te verzenden wanneer er een TimeoutException optreedt. Dit is een andere veelvoorkomende uitzondering die niet is afgeleid van CommunicationException.
Zie Inleiding tot routering voor meer informatie over foutafhandeling.
Backupeindpunten
Naast de doelclienteindpunten die zijn gekoppeld aan elke filterdefinitie in de filtertabel, kunt u ook een lijst maken met back-upeindpunten waarnaar het bericht wordt doorgestuurd in het geval van een overdrachtsfout. Als er een fout optreedt en er een back-uplijst is gedefinieerd voor de filtervermelding, probeert de routeringsservice het bericht te verzenden naar het eerste eindpunt dat in de lijst is gedefinieerd. Als deze overdrachtspoging mislukt, probeert de service het volgende eindpunt en gaat u door met dit proces totdat de overdrachtspoging is geslaagd, een niet-overdrachtsgerelateerde fout retourneert of alle eindpunten in de back-uplijst een overdrachtsfout hebben geretourneerd.
Voor meer informatie over back-upeindpunten, zie Inleiding routering en Berichtfilters.
Streamen
De routeringsservice kan berichten streamen als u de binding instelt ter ondersteuning van streaming. Er zijn echter enkele voorwaarden waaronder berichten mogelijk moeten worden gebufferd:
- Multicast (buffer voor het maken van extra berichtkopieën).
- Failover (buffer voor het geval het bericht naar een back-up moet worden verzonden).
- System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly is false (buffer voor het presenteren van de MessageFilterTable met een MessageBuffer, zodat filters de hoofdtekst kunnen inspecteren).
- Dynamische configuratie.