Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A kérés-válasz korreláció egy Receive/SendReply párral kétirányú műveletet valósít meg egy munkafolyamat-szolgáltatásban, és egy Send/ReceiveReply olyan párral, amely kétirányú műveletet hív meg egy másik webszolgáltatásban. Ha kétirányú műveletet invokál egy WCF szolgáltatásban, a szolgáltatás lehet hagyományos imperatív kódalapú Windows Communication Foundation (WCF) szolgáltatás, vagy lehet munkafolyamat-szolgáltatás. A kérelem-válasz korreláció használatához kétirányú kötést kell használni, például BasicHttpBinding. Akár kétirányú műveletet inicializál, akár implementál, a korrelációs inicializálás lépései hasonlóak, és ez a szakasz ismerteti.
Korreláció használata Two-Way műveletben a Receive/SendReply használatával
Egy Receive/SendReply pár kétirányú művelet megvalósítására szolgál egy munkafolyamat-szolgáltatásban. A futtatókörnyezet kérés-válasz korrelációt használ annak biztosítására, hogy a válasz a megfelelő hívónak legyen elküldve. Ha egy munkafolyamatot `WorkflowServiceHost` környezetben, amely a munkafolyamat-szolgáltatásokra jellemző, hostolnak, akkor elegendő az alapértelmezett korrelációs inicializálás. Ebben a forgatókönyvben egy munkafolyamat használ Receive/SendReply párokat, és nincs szükség konkrét korrelációs konfigurációra.
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.
A Request-Reply korreláció explicit inicializálása
Ha más kétirányú műveletek párhuzamosak, akkor a korrelációt explicit módon kell konfigurálni. Ez úgy végezhető el, hogy megadjuk a CorrelationHandle és RequestReplyCorrelationInitializer, vagy elhelyezzük a Receive/SendReply a CorrelationScope belsejében. Ebben a példában a kérés-válasz korreláció egy Receive/SendReply párra van konfigurálva.
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.
A korreláció explicit konfigurálása helyett egy CorrelationScope tevékenység használható. CorrelationScope implicit módon CorrelationHandle biztosítja a benne található üzenetkezelési tevékenységeket. Ebben a példában egy Receive/SendReply pár egy CorrelationScope-ben található. Nincs szükség explicit korrelációs konfigurációra.
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.
Ha további korrelációkra van szükség, akkor ezek konfigurálhatók a megfelelő üzenetkezelési tevékenységek CorrelationInitializers tulajdonsága segítségével a kívánt CorrelationInitializer típusok használatával.
Korreláció használata Two-Way műveletben a Send/ReceiveReply használatával
Bár a Receive tevékenység csak az általa WorkflowServiceHostüzemeltetett munkafolyamat-szolgáltatásban használható, Send és a Send/ReceiveReply pár bármely olyan munkafolyamatban használható, amely metódust kell meghívnia egy webszolgáltatásban. Ha a munkafolyamat üzemeltetése az WorkflowServiceHost használatával történik, akkor az előző szakaszban leírt alapértelmezett korreláció érvényes, de ha nem, akkor a korrelációt vagy explicit módon kell konfigurálni a kívánt CorrelationInitializer és CorrelationHandle, vagy az implicit leíró kezelését használva az CorrelationScope segítségével.
Ha Szolgáltatáshivatkozás hozzáadása funkciót használ kétirányú műveleteket tartalmazó szolgáltatásnál, a rendszer olyan tevékenységeket hoz létre, amelyek belsőleg magukba foglalják a Send/ReceiveReply pártevékenységet a kifejezetten megadott Kérés/Válasz korrelációval.