Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Korelace odpovědí na žádost se používá s párem Receive/SendReply k implementaci obousměrné operace ve službě pracovního postupu a s Send/ReceiveReply dvojicí, která vyvolá obousměrnou operaci v jiné webové službě. Při vyvolání obousměrné operace ve službě WCF může být služba buď tradiční imperativní služba Windows Communication Foundation (WCF), nebo může být službou pracovního postupu. Pokud chcete použít korelaci odpovědi na požadavek, musí se použít obousměrná vazba, například BasicHttpBinding. Bez ohledu na to, jestli se vyvolá nebo implementuje obousměrná operace, jsou kroky inicializace korelace podobné a jsou popsané v této části.
Použití korelace v operaci Two-Way s metodou Receive/SendReply
Pár Receive/SendReply slouží k realizaci obousměrné operace v pracovním procesu služby. Modul runtime používá korelaci žádosti a odpovědi, aby se zajistilo, že je odpověď odeslána správnému volajícímu. Pokud je pracovní postup hostovaný pomocí WorkflowServiceHost, což je případ pro služby pracovního postupu, pak je dostatečná výchozí inicializace korelace. V tomto scénáři Receive/SendReply se pár používá v pracovním postupu a nevyžaduje se žádná konkrétní konfigurace korelace.
Receive StartOrder = new Receive
{
CanCreateInstance = true,
ServiceContractName = OrderContractName,
OperationName = "StartOrder"
};
SendReply ReplyToStartOrder = new SendReply
{
Request = StartOrder,
Content = … // Contains the return value, if any.
};
// Construct a workflow using StartOrder and ReplyToStartOrder.
Explicitní inicializace korelace Request-Reply
Pokud jsou další obousměrné operace paralelně, měla by být korelace explicitně nakonfigurovaná. To lze provést zadáním CorrelationHandle a RequestReplyCorrelationInitializer, nebo umístěním Receive/SendReply uvnitř CorrelationScope. V tomto příkladu je korelace odpovědi na žádost nakonfigurovaná u páru Receive/SendReply .
Variable<CorrelationHandle> RRHandle = new Variable<CorrelationHandle>();
Receive StartOrder = new Receive
{
CanCreateInstance = true,
ServiceContractName = OrderContractName,
OperationName = "StartOrder",
CorrelationInitializers =
{
new RequestReplyCorrelationInitializer
{
CorrelationHandle = RRHandle
}
}
};
SendReply ReplyToStartOrder = new SendReply
{
Request = StartOrder,
Content = … // Contains the return value, if any.
};
// Construct a workflow using StartOrder and ReplyToStartOrder.
Místo explicitní konfigurace korelace CorrelationScope je možné použít aktivitu. CorrelationScope poskytuje implicitní CorrelationHandle pro aktivity zasílání zpráv, které obsahuje. V tomto příkladu Receive/SendReply je dvojice obsažena uvnitř objektu CorrelationScope. Nevyžaduje se žádná explicitní konfigurace korelace.
Receive StartOrder = new Receive
{
CanCreateInstance = true,
ServiceContractName = OrderContractName,
OperationName = "StartOrder"
};
SendReply ReplyToStartOrder = new SendReply
{
Request = StartOrder,
Content = … // Contains the return value, if any.
};
CorrelationScope s = new CorrelationScope
{
Body = new Sequence
{
Activities =
{
StartOrder,
// Activities that create the reply.
ReplyToStartOrder
}
}
};
// Construct a workflow using the CorrelationScope.
Pokud jsou požadovány další korelace, je možné je nakonfigurovat pomocí CorrelationInitializers vlastnosti příslušných aktivit zasílání zpráv pomocí požadovaných CorrelationInitializer typů.
Použití korelace v operaci Two-Way s metodou Send/ReceiveReply
I když aktivitu Receive lze použít pouze ve službě pracovního postupu hostované WorkflowServiceHost, pár Send a Send/ReceiveReply lze použít v jakémkoli pracovním postupu, který musí vyvolat metodu ve webové službě. Pokud je pracovní postup hostován pomocí WorkflowServiceHost, pak platí výchozí korelace popsaná v předchozí části. Pokud ne, musí být korelace nakonfigurována buď explicitně pomocí požadovaného CorrelationInitializer a CorrelationHandle, nebo pomocí implicitního správy popisovačů CorrelationScope.
Při použití funkce Add Service Reference na službu s obousměrnými operacemi se vygenerují aktivity, které interně zabalí aktivitu páru Send/ReceiveReply s výslovně specifikovanou korelací žádost/odpověď.