Condividi tramite


Panoramica della correlazione

Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.

La correlazione è il meccanismo che consente di correlare i messaggi del servizio flusso di lavoro l'uno all'altro o allo stato dell'istanza dell'applicazione, ad esempio una risposta a una richiesta iniziale o un particolare ID dell'ordine allo stato persistente di un flusso di lavoro di elaborazione di un ordine. In questo argomento vengono forniti cenni preliminari sulla correlazione. Gli altri argomenti in questa sezione forniscono informazioni aggiuntive per ogni tipo di correlazione.

Tipi di correlazione

La correlazione può essere basata sul protocollo o sul contenuto. Le correlazioni basate sul protocollo utilizzano dati forniti dall'infrastruttura di recapito dei messaggi per fornire il mapping tra messaggi. I messaggi correlati mediante la correlazione basata sul protocollo vengono correlati l'uno all'altro mediante un oggetto in memoria, ad esempio RequestContext, o per mezzo di un token fornito dal protocollo di trasporto. Le correlazioni basate sul contenuto correlano messaggi l'uno all'altro utilizzando dati specificati dall'applicazione. I messaggi correlati utilizzando la correlazione basata sul contenuto vengono correlati l'uno all'altro per mezzo di alcuni dati definiti dall'applicazione nel messaggio, ad esempio un numero cliente.

Le attività che partecipano alla correlazione utilizzano un elemento CorrelationHandle per associare le attività di messaggistica. Un elemento Send utilizzato per chiamare un servizio e un elemento Receive successivo utilizzato per ricevere un callback dal servizio condividono ad esempio lo stesso elemento CorrelationHandle. Questo modello di base viene utilizzato se la correlazione è basata sul contenuto o sul protocollo. È possibile impostare l'handle di correlazione in modo esplicito in ogni attività oppure le attività possono essere contenute in un'attività CorrelationScope. Nelle attività contenute in un elemento CorrelationScope gli handle di correlazione vengono gestiti da CorrelationScope e non richiedono l'impostazione esplicita di CorrelationHandle. Un ambito CorrelationScope fornisce la gestione di CorrelationHandle per una correlazione request/reply e un tipo di correlazione aggiuntivo. I servizi flusso di lavoro ospitati mediante WorkflowServiceHost dispongono della stessa gestione di correlazione predefinita dell'attività CorrelationScope. In genere con questa gestione di correlazione predefinita molti scenari, attività di messaggistica in un CorrelationScope o un servizio flusso di lavoro non richiedono l'impostazione del rispettivo elemento CorrelationHandle, a meno che più attività di messaggistica siano in parallelo o si sovrappongano, ad esempio due attività Receive in parallelo o due attività Send seguite da due attività Receive. Negli argomenti di questa sezione che analizzano ogni tipo specifico di correlazione vengono fornite ulteriori informazioni sulla correlazione predefinita. Per ulteriori informazioni su attività di messaggistica, vedere Utilizzo delle attività di messaggistica e Procedura: creare un servizio flusso di lavoro con attività di messaggistica.

Correlazione basata sul protocollo

La correlazione basata sul protocollo utilizza il meccanismo di trasporto per correlare messaggi l'uno all'altro e all'istanza appropriata. Alcune correlazioni basate sul protocollo fornite dal sistema includono la correlazione request/reply e la correlazione basata sul contesto. Una correlazione request/reply viene utilizzata per correlare una singola coppia di attività di messaggistica per formare un'operazione bidirezionale, ad esempio un elemento Send accoppiato a un elemento ReceiveReply o un elemento Receive accoppiato a un elemento SendReply. Progettazione flussi di lavoro di Visual Studio 2010 fornisce inoltre un set di modelli di attività per implementare in modo rapido questo modello. Una correlazione basata sul contesto si fonda sul meccanismo di scambio del contesto descritto nella pagina relativa alla specifica del protocollo di scambio del contesto .NET. Per utilizzare la correlazione basata su contesto, è necessario utilizzare un'associazione basata sul contesto, ad esempio BasicHttpContextBinding, WSHttpContextBinding o NetTcpContextBinding sull'endpoint.

Per ulteriori informazioni su correlazioni basate sul protocollo, vedere Scambio del contesto, Duplex durevole e Request/Reply. Per ulteriori informazioni su come utilizzare i modelli di attività di Progettazione flusso di lavoro di Visual Studio 2010, vedere Utilizzo delle attività di messaggistica.

Correlazione basata sul contenuto

La correlazione basata sul contenuto utilizza alcune informazioni nel messaggio per associarlo a una particolare istanza. A differenza della correlazione basata sul protocollo, per la correlazione basata sul contenuto l'autore dell'applicazione deve dichiarare in modo esplicito il percorso in cui si trovano questi dati in ogni messaggio correlato. Le attività che utilizzano la correlazione basata sul contenuto specificano questi dati del messaggio tramite un elemento MessageQuerySet. La correlazione basata sul contenuto risulta utile in fase di comunicazione con i servizi che non utilizzano una delle associazioni di contesto, ad esempio BasicHttpContextBinding. Per ulteriori informazioni su correlazioni basate sul contesto, vedere In base al contenuto.

Vedere anche

Attività

Correlazione basata sul contenuto
Calcolatrice correlata