Sdílet prostřednictvím


Přehled korelace

Korelace je mechanismus pro vzájemné propojení zpráv služby pracovního postupu nebo stavu instance aplikace, jako je odpověď na počáteční požadavek nebo konkrétní ID objednávky na trvalý stav pracovního postupu zpracování objednávek. Toto téma obsahuje přehled korelace. Další témata v této části obsahují další informace o jednotlivých typech korelace.

Typy korelace

Korelace může být založená na protokolu nebo na obsahu. Korelace založené na protokolu používají data poskytovaná infrastrukturou doručování zpráv k zajištění mapování mezi zprávami. Zprávy, které korelují pomocí korelace založené na protokolu, spolu souvisejí pomocí objektu v paměti, například RequestContext, nebo pomocí tokenu poskytnutého přenosovým protokolem. Korelace založené na obsahu vzájemně souvisejí se zprávami pomocí dat zadaných aplikací. Zprávy, které korelují pomocí korelace založené na obsahu, vzájemně souvisí s některými daty definovanými aplikací ve zprávě, jako je číslo zákazníka.

Aktivity, které se účastní korelace, používají CorrelationHandle k vzájemnému propojení aktivit zasílání zpráv. Například Send, který se používá k volání služby, a následný Receive, který slouží k přijetí zpětného volání ze služby, sdílí stejné CorrelationHandle. Tento základní vzor se používá bez ohledu na to, jestli je korelace založená na obsahu nebo protokolu. Popisovač korelace lze explicitně nastavit pro každou aktivitu, nebo mohou být aktivity zahrnuty do aktivity CorrelationScope. Aktivity obsažené v CorrelationScope mají své korelační handly spravované CorrelationScope a nevyžadují, aby bylo CorrelationHandle explicitně nastaveno. Obor CorrelationScope poskytuje CorrelationHandle správu pro korelaci odpovědí na žádost a jeden další typ korelace. Služby pracovních postupů hostované pomocí WorkflowServiceHost mají stejnou výchozí správu korelací jako CorrelationScope aktivita. Tato výchozí správa korelací obecně znamená, že v mnoha scénářích aktivity zasílání zpráv ve CorrelationScope nebo ve službě pracovního postupu nevyžadují vlastní sadu korelací, pokud nejsou prováděny paralelně nebo se nepřekrývají, například dvě CorrelationHandle aktivity prováděné paralelně, nebo dvě Receive aktivity následované dvěma Send aktivitami. Další informace o výchozí korelaci najdete v tématech v této části, která pokrývají každý konkrétní typ korelace. Další informace o aktivitách zasílání zpráv naleznete v tématu Aktivity zasílání zpráv a Postupy: Vytvoření služby pracovního postupu s aktivitami zasílání zpráv.

Protocol-Based Korelace

Korelace založená na protokolu používá transportní mechanismus k vzájemnému propojení zpráv a příslušné instance. Mezi systémové korelace protokolů patří korelace odpovědí na požadavky a korelace založená na kontextu. Korelace odpovědí na požadavek se používá ke korelaci jedné dvojice aktivit zasílání zpráv za účelem vytvoření obousměrné operace, například Send spárované s nebo ReceiveReplyReceive spárované s SendReply. Návrhář pracovních postupů sady Visual Studio poskytuje také sadu šablon aktivit pro rychlou implementaci tohoto modelu. Korelace založená na kontextu je založená na mechanismu výměny kontextu popsaném ve specifikaci protokolu .NET Context Exchange Protocol. Pokud chcete použít korelaci založenou na kontextu, musí být v koncovém bodu použita kontextová vazba, například BasicHttpContextBinding, WSHttpContextBinding nebo NetTcpContextBinding.

Další informace o korelaci protokolu naleznete v tématu Durable Duplex a Request-Reply. Další informace o používání šablon aktivit Návrháře pracovních postupů sady Visual Studio naleznete v tématu Aktivity zasílání zpráv. Ukázkový kód najdete v ukázce NetContextExchangeCorrelation .

Korelace založená na obsahu

Korelace založená na obsahu používá některé informace ve zprávě k přidružení k určité instanci. Na rozdíl od korelace založené na protokolu vyžaduje korelace založená na obsahu, aby autor aplikace explicitně uvedl, kde se tato data dají najít v každé související zprávě. Aktivity, které používají korelaci založenou na obsahu, určují tato data zpráv pomocí MessageQuerySet. Korelace založená na obsahu je užitečná při komunikaci se službami, které nepoužívají jednu z kontextových vazeb, například BasicHttpContextBinding.

Viz také