Ne pas utiliser l’exécution en parallèle dans les plug-ins et les activités de workflow
Catégorie : Conception, performances, sécurité, capacité de prise en charge
Potentiel d’impact : Élevé
Symptômes
Les de multithreading ou de threads en parallèle dans les plug-ins ou les activités de workflow personnalisées peuvent endommager ceux-ci dans les connexions. Par exemple, exécuter des threads en parallèle peut enregistrer des exceptions comme :
Generic SQL error.
The transaction active in this session has been committed or aborted by another session.
En outre, les objets non thread-safe, tels que les éléments dans l’espace de noms System.Collections peuvent être endommagés par les threads en parallèle.
Recommandation
Le service Sandbox a été conçu pour exécuter des appels dans un ordre spécifique dans le cadre d’une transaction. Le développement des plug-ins ou des activités de workflow personnalisés pour effectuer des appels de threads en parallèle ou de multithreading ne sont pas pris en charge. Développez vos plug-ins et vos activités de workflow personnalisées sachant que les appels effectués seront passés de manière séquentielle et peuvent devoir être annulés.
Notes
L’utilisation de l’exécution en parallèle d’un programme client est une pratique prise en charge pour optimiser les performances en conséquence. Cette procédure est spécifique au code écrit pour être exécuté dans un plug-in ou une activité de workflow personnalisée.
Schémas problématiques
Les plug-ins et les activités de workflow personnalisées s’exécutent en une transaction simple et plusieurs threads entrés par une exécution en parallèle peuvent endommager la transaction. Les exemples suivants présentent des modèles et méthodes qui ne doivent pas être employés dans les plug-ins et les activités de workflow personnalisées :
- Utilisation du modèle asynchrone basé sur les tâches
- Utilisation de la bibliothèque parallèle de tâches
- Utilisation du threading géré
Informations supplémentaires
L’utilisation et la mise à jour d’objets de contexte du pipeline partagé peuvent entraîner des résultats inattendus dans ces objets ou que ceux-ci soient endommagées. L’impact entraînerait un échec du plug-in ou de l’activité de workflow personnalisée.
Voir aussi
Traitement en parallèle, concurrence et programmation asynchrone dans .NET
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).