Delen via


Correlatieoverzicht

Correlatie is het mechanisme voor het koppelen van werkstroomserviceberichten aan elkaar of aan de status van het toepassingsexemplaren, zoals een antwoord op een eerste aanvraag of een bepaalde order-id voor de persistente status van een werkstroom voor orderverwerking. Dit onderwerp bevat een overzicht van correlatie. De andere onderwerpen in deze sectie bevatten aanvullende informatie voor elk type correlatie.

Typen correlatie

Correlatie kan gebaseerd zijn op protocollen of inhoud. Correlaties op basis van protocollen maken gebruik van gegevens die worden geleverd door de infrastructuur voor berichtbezorging om de toewijzing tussen berichten te bieden. Berichten die zijn gecorreleerd met behulp van correlatie op basis van protocollen, zijn gerelateerd aan elkaar met behulp van een object in het geheugen, zoals een RequestContext, of door een token dat wordt geleverd door het transportprotocol. Correlaties op basis van inhoud hebben betrekking op elkaar met behulp van door de toepassing opgegeven gegevens. Berichten die zijn gecorreleerd met behulp van correlatie op basis van inhoud, zijn gerelateerd aan elkaar door bepaalde toepassingsgedefinieerde gegevens in het bericht, zoals een klantnummer.

Activiteiten die deelnemen aan correlatie gebruiken een CorrelationHandle om de berichtenactiviteiten aan elkaar te koppelen. Bijvoorbeeld, een Send die wordt gebruikt om een service aan te roepen en een volgende Receive die wordt gebruikt voor het ontvangen van een callback van de service, delen hetzelfde CorrelationHandle. Dit basispatroon wordt gebruikt of de correlatie gebaseerd is op inhoud of op basis van een protocol. De correlatiehandgreep kan expliciet worden ingesteld voor elke activiteit of de activiteiten kunnen worden opgenomen in een CorrelationScope activiteit. Activiteiten in een CorrelationScope groep hebben hun correlatie-ingangen die worden beheerd door de CorrelationScope en hoeven CorrelationHandle niet expliciet te worden ingesteld. Een CorrelationScope bereik biedt CorrelationHandle beheer voor een aanvraag-antwoordcorrelatie en één extra correlatietype. Werkstroomservices die worden gehost met behulp van WorkflowServiceHost hetzelfde standaardcorrelatiebeheer als de CorrelationScope activiteit. Dit standaardcorrelatiebeheer betekent over het algemeen dat in veel scenario's berichtenactiviteiten in een CorrelationScope of een werkstroomservice hun set niet vereisen CorrelationHandle , tenzij meerdere berichtenactiviteiten parallel of overlappen, zoals twee Receive activiteiten parallel, of twee Send activiteiten gevolgd door twee Receive activiteiten. Meer informatie over standaardcorrelatie vindt u in de onderwerpen in deze sectie die betrekking hebben op elk specifiek type correlatie. Zie Berichtenactiviteiten en procedures voor meer informatie over berichtenactiviteiten: Een werkstroomservice maken met berichtenactiviteiten.

Correlatie op basis van protocol

Correlatie op basis van protocollen maakt gebruik van het transportmechanisme om berichten aan elkaar en het juiste exemplaar te relateren. Sommige door het systeem geleverde protocolcorrelatie zijn correlatie tussen aanvragen en antwoorden en op context gebaseerde correlatie. Een correlatie tussen aanvragen en antwoorden wordt gebruikt om één paar berichtenactiviteiten te correleren om een tweerichtingsbewerking te vormen, zoals een gekoppeld aan een SendReceiveReply, of een Receive gekoppeld aan een SendReply. Visual Studio Workflow Designer biedt ook een set activiteitssjablonen om dit patroon snel te implementeren. Een contextgebaseerde correlatie is gebaseerd op het contextuitwisselingsmechanisme dat wordt beschreven in de specificatie van het .NET Context Exchange-protocol. Als u correlatie op basis van context wilt gebruiken, moet u een contextbinding zoals BasicHttpContextBinding, WSHttpContextBinding of NetTcpContextBinding op het eindpunt gebruiken.

Zie Durable Duplex en Request-Reply voor meer informatie over protocolcorrelatie. Zie Berichtenactiviteiten voor meer informatie over het gebruik van de visual Studio Workflow Designer-activiteiten. Zie het voorbeeld netContextExchangeCorrelation voor voorbeeldcode.

Correlatie op basis van inhoud

Correlatie op basis van inhoud maakt gebruik van bepaalde informatie in het bericht om deze aan een bepaald exemplaar te koppelen. In tegenstelling tot correlatie op basis van protocollen moet de auteur van de toepassing expliciet aangeven waar deze gegevens in elk gerelateerd bericht kunnen worden gevonden. Activiteiten die gebruikmaken van correlatie op basis van inhoud, geven deze berichtgegevens op met behulp van een MessageQuerySet. Correlatie op basis van inhoud is handig wanneer u communiceert met services die geen van de contextbindingen gebruiken, zoals BasicHttpContextBinding.

Zie ook