Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À l’exception de quelques opérations décrites ci-dessous, toutes les opérations de données à l’aide des classes de requête d’assembly sdk sont synchrones.
L’importation d’une solution est une opération qui peut nécessiter des ressources considérables. Il existe donc une option permettant d’exécuter cette opération de manière asynchrone à l’aide de la ExecuteAsyncRequest classe de requête. La DeleteAndPromoteRequest classe de requête effectue des opérations gourmandes en ressources similaires.
L’importation d’une solution améliore de façon asynchrone les performances du système en postponsant l’exécution des messages jusqu’à un moment ultérieur lorsque la charge du serveur peut être inférieure. Les utilisateurs interactifs n’ont pas besoin d’attendre que le message cible s’exécute avant de pouvoir continuer. Cela est particulièrement utile lors de l’importation de solutions qui peuvent prendre quelques minutes ou plus pour s’exécuter.
La fusion de lignes avec un grand nombre d’activités associées ou d’autres types de tables peut également prendre beaucoup de temps pour mettre à jour toutes les lignes associées, de sorte que l’exécution de ces lignes en arrière-plan peut améliorer l’expérience utilisateur.
Note
ImportSolutionRequest, DeleteAndPromoteRequestet MergeRequest sont les seules classes de requête qui peuvent être utilisées avec ExecuteAsyncRequest.
Utilisez la ExecuteAsyncRequest classe de requête pour exécuter un message de manière asynchrone. Vous configurez la requête et transmettez l’instance de requête en tant qu’argument à IOrganizationService.Execute. ExecuteAsyncResponse est retourné avec l’ID de la tâche asynchrone. Vous pouvez (éventuellement) interroger le travail à l’aide de l’ID pour connaître son état actuel.
Vous pouvez utiliser la ExecuteMultipleRequest classe de requête pour mettre en file d’attente plusieurs solutions de manière asynchrone. Pour ce faire, ajoutez une ou plusieurs ExecuteAsync demandes de message à une ExecuteMultiple demande de message. En raison des restrictions de limitation qui améliorent les performances globales du système, un seul message s’exécutant de manière asynchrone est autorisé à s’exécuter à la fois pour chaque organisation.
Pour plus d’informations sur le ExecuteMultiple message, consultez Exécuter plusieurs requêtes à l’aide du Kit de développement logiciel (SDK) pour .NET.
Example
L’exemple suivant montre comment utiliser la ExecuteAsyncRequest classe de demande de message avec la ImportSolutionRequest classe de demande de message.
string ManagedSolutionLocation = @"C:\temp\ManagedSolutionForImportExample.zip";
byte[] fileBytes = File.ReadAllBytes(ManagedSolutionLocation);
ImportSolutionRequest impSolReq = new ImportSolutionRequest()
{
CustomizationFile = fileBytes
};
ExecuteAsyncRequest asyncReq = new ExecuteAsyncRequest()
{
Request = impSolReq
};
var asyncResp = (ExecuteAsyncResponse)svc.Execute(asyncReq);
Guid asyncOperationId = asyncResp.AsyncJobId;
Vous pouvez ensuite interroger la table AsyncOperation à l’aide de la asyncOperationId valeur du travail système avec l’AsyncOperationId correspondant pour détecter quand la valeur StatusCode indique si l’opération a réussi (30), échoué (31) ou a été annulée (32).
Voir aussi
Utiliser les messages avec le SDK pour .NET
Utiliser ExecuteTransaction
Exécuter plusieurs requêtes à l’aide du Kit de développement logiciel (SDK) pour .NET