Étendue du convoi des transactions
Cette rubrique s'applique à Windows Workflow Foundation 4.
Cet exemple montre comment créer un modèle d'activité de messagerie de convoi parallèle conjointement avec un TransactedReceiveScope pour modéliser un protocole où un certain nombre d'opérations peuvent se produire dans n'importe quel ordre dans le cadre de la même transaction. Cet exemple montre également comment un TransactedReceiveScope crée automatiquement une transaction lorsque aucune transaction n'est passée au serveur, de sorte que le client n'utilise aucune transaction.
Cet exemple est composé deux projets de workflow qui représentent le client et le serveur. Le projet client exécute un workflow qui commence en envoyant un message pour démarrer le workflow serveur, ce qui initialise une corrélation et démarre une étendue transactionnelle pour le reste des activités de messagerie. L'activité Sequence cliente contient une paire Send et ReceiveReply initiale, puis une activité Parallel avec trois branches. Chaque branche envoie un message unidirectionnel au serveur. La propriété CompletionCondition de l'activité Parallel a la valeur false afin que les trois branches se terminent.
Le workflow serveur est semblable au workflow client, excepté que les activités de messagerie sont orientées vers le côté serveur de la communication et qu'elles sont contenues dans une activité TransactedReceiveScope afin que tout le travail effectué s'exécute dans le cadre de la même transaction. Lorsque le premier message est reçu sur le serveur, une transaction est créée et est rendue ambiante pour l'étendue du corps TransactedReceiveScope, afin que toute activité de cette étendue puisse accéder à la transaction. Ensuite, toutes les réceptions s'exécutent en parallèle. Toutes les réceptions doivent s'exécuter une seule et unique fois, tel que décrit par la condition d'achèvement sur l'activité parallèle. Il existe un point de persistance implicite à la fin du corps TransactedReceiveScope et l'opération de persistance est également exécutée dans le cadre de la même transaction.
Pour utiliser cet exemple
À l'aide de Visual Studio 2010, ouvrez le fichier solution ParallelConvoySample.sln.
Pour générer la solution, appuyez sur F6.
Vérifiez que les deux projets sont configurés pour démarrer.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la solution, puis sélectionnez Définir les projets de démarrage.
Sélectionnez Plusieurs projets de démarrage et vérifiez que l'action pour les deux projets a la valeur Démarrer.
Pour exécuter la solution, appuyez sur CTRL+F5.
Le serveur imprime
Server is running
, ce qui indique le serveur est prêt.Appuyez sur n'importe quelle touche dans la fenêtre de console cliente pour démarrer l'exemple.
Remarque : |
---|
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.
<LecteurInstall>:\WF_WCF_Samples
Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.
<LecteurInstall>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactedConvoyScope
|