Partage via


Fournisseurs de magasin d'instances, de requête et de contrôle

Un magasin d'instances est un conteneur logique d'instances dans lequel les données et les métadonnées d'instance sont stockées et pour lequel aucun stockage physique dédié n'est requis. Il peut contenir des informations durables dans une base de données SQL Server ou des informations d'état non durables dans une mémoire. .NET Framework version 4 inclut le magasin d'instances du flux de travail SQL, qui correspond à une implémentation concrète d'un magasin d'instances et qui permet aux flux de travail de rendre les données et les métadonnées d'instance persistantes dans une base de données SQL Server 2005 ou SQL Server 2008. Pour plus d'informations, consultez la page Instance Stores (https://go.microsoft.com/fwlink/?LinkId=181533) (en anglais) dans l'aide de .NET Framework. AppFabric prend uniquement en charge la persistance des instances de service du flux de travail dans les bases de données SQL Server 2008.

Pour utiliser un magasin d'instances avec les outils AppFabric (cmdlets Windows PowerShell et extensions du Gestionnaire des services Internet) et le service de gestion du flux de travail (WMS, Workflow Management Service), vous devez développer un fournisseur de magasin d'instances, un fournisseur de requête d'instances et un fournisseur de contrôle des instances pour celui-ci. Les sections suivantes décrivent ces trois types de fournisseurs.

Notes

L'API des fournisseurs de requête et de contrôle des instances est basée sur .NET Framework 2.0 tandis que l'API du fournisseur de magasin d'instances est basée sur .NET Framework version 4

Fournisseurs de magasin d'instances

Un fournisseur de magasin d'instances d'un magasin d'instances expose une API que les clients appellent pour créer des objets magasin d'instances. Ceux-ci permettent au client d'enregistrer une instance du flux de travail dans le magasin d'instances sous-jacent (par exemple, une base de données SQL Server) ou de charger une instance à partir du magasin d'instances.

AppFabric inclut un fournisseur de magasin d'instances pour le magasin d'instances du flux de travail SQL. Pour prendre en charge un autre magasin d'instances, vous devez créer un fournisseur de magasin d'instances pour celui-ci. Pour ce faire, vous devez créer une classe dérivée de la classe InstanceStoreProvider et implémenter des méthodes permettant de créer un magasin d'instances, tel que SqlWorkflowInstanceStore. Pour plus d'informations, consultez la rubrique Procédure de développement d'un fournisseur de magasin d'instances.

Fournisseurs de requête d'instances

Un fournisseur de requête d'instances d'un magasin d'instances permet d'émettre des requêtes auprès de celui-ci. Lorsque vous utilisez une cmdlet telle que Get-ASAppServiceInstance pour interroger les instances d'un magasin d'instances, celle-ci crée un objet fournisseur de requête et appelle des méthodes sur l'objet. L'objet fournisseur de requête crée des requêtes et les exécute auprès du magasin d'instances, puis il renvoie les résultats à la cmdlet. Les extensions du Gestionnaire des services Internet AppFabric utilisent les cmdlets dans la majorité des scénarios dans lesquels des requêtes sont exécutées sur des magasins d'instances. Elles dépendent donc également des fournisseurs de requête.

Tous les fournisseurs de requête implémentent la même API et fournissent une couche d'abstraction via les magasins d'instances sous-jacents. AppFabric inclut un fournisseur de requête d'instances pour le magasin d'instances du flux de travail SQL, qui permet d'interroger les instances stockées dans la base de données de persistance SQL Server. Lorsque le fournisseur de requête SQL reçoit une requête d'un client (tel qu'une cmdlet Windows PowerShell), il interroge et extrait les données d'instance de la base de données SQL Server et envoie le jeu de résultats au client. L'implémentation du fournisseur de requête d'instances pour le magasin d'instances du flux de travail SQL a lieu dans le fichier Microsoft.ApplicationServer.StoreManagement.dll.

Pour prendre en charge l'interrogation d'un autre type de magasin d'instances, vous devez disposer d'un fournisseur de requête d'instances pour ce magasin. Pour créer un fournisseur de requête personnalisé, vous devez créer une classe dérivée de la classe InstanceQueryProvider et implémenter des méthodes permettant d'exécuter des requêtes pour le compte du client. Pour plus d'informations, consultez la rubrique Procédure de développement d'un fournisseur de requête d'instances.

Fournisseurs de contrôle des instances

Un fournisseur de contrôle des instances permet à un client d'émettre des commandes de contrôle auprès des instances d'un magasin d'instances et d'extraire les commandes qui doivent être exécutées sur une instance. Lorsque vous utilisez une cmdlet Windows PowerShell d'AppFabric pour contrôler (interrompre, reprendre, etc.) une instance d'un magasin d'instances, celle-ci crée un objet fournisseur de contrôle et appelle une méthode sur l'objet pour ajouter la commande à la file d'attente de commandes. Le fournisseur de contrôle met à jour la file d'attente de commandes stockée dans le magasin d'instances. Un hôte générique tel que le service de gestion du flux de travail crée un objet fournisseur de contrôle et appelle une méthode sur celui-ci pour extraire la commande stockée dans la file d'attente de commandes, puis l'exécuter. Le service WMS notifie le fournisseur de contrôle de l'échec ou de la réussite de l'exécution. Si l'exécution a réussi, le fournisseur de contrôle supprime la commande de la file d'attente. Sinon, le service WMS notifie le fournisseur de contrôle de l'échec afin que celui-ci entreprenne l'action appropriée.

Outre le transfert d'une commande de la file d'attente vers le service WMS, un fournisseur de contrôle des instances transfère un jeu de propriétés contenant des métadonnées vers l'instance sur laquelle la commande a été émise. Ce jeu de propriétés inclut le nom de site et le chemin d'accès virtuel au service de l'instance. Le fournisseur de contrôle obtient ces métadonnées du magasin d'instances. Le service WMS utilise ces métadonnées pour accéder au point de terminaison de contrôle des instances exposé par l'instance du service et appelle les méthodes appropriées sur le point de terminaison.

Tous les fournisseurs de requête implémentent la même API et fournissent une couche d'abstraction via les magasins d'instances sous-jacents. AppFabric inclut un fournisseur de contrôle des instances pour le magasin d'instances du flux de travail SQL, qui permet d'émettre des commandes de contrôle sur les instances stockées dans la base de données de persistance SQL Server. L'implémentation du fournisseur de contrôle des instances du magasin d'instances du flux de travail SQL a lieu dans le fichier Microsoft.ApplicationServer.StoreManagement.dll. Pour prendre en charge l'émission de commandes auprès d'instances stockées dans un autre type de magasin d'instances, vous devez développer un fournisseur de contrôle des instances pour ce magasin.

Pour créer un fournisseur de contrôle personnalisé, vous devez créer une classe dérivée de la classe InstanceControlProvider et implémenter des méthodes permettant d'ajouter des commandes à la file d'attente de commandes ou d'en extraire de celle-ci pour le compte des clients. Pour plus d'informations, consultez la rubrique Procédure de développement d'un fournisseur de contrôle des instances.

Fournisseur de contrôle des instances pour le magasin d'instances du flux de travail SQL

AppFabric inclut un fournisseur de contrôle des instances pour le magasin d'instances du flux de travail SQL. Le fournisseur de contrôle des instances met à jour la file d'attente de commandes dans la base de données SQL Server. Lorsque vous exécutez une cmdlet de contrôle sur le magasin d'instances du flux de travail SQL, le fournisseur de contrôle des instances reçoit la demande et stocke les informations relatives à la commande dans la file d'attente de commandes dans la base de données SQL Server. Le service WMS utilise le fournisseur de contrôle des instances pour extraire la commande de la file d'attente de commandes, exécute celle-ci par rapport au magasin d'instances du flux de travail SQL, puis la supprime de la file d'attente si son exécution réussit. L'implémentation du fournisseur de contrôle des instances pour le magasin d'instances du flux de travail SQL a lieu dans le fichier Microsoft.ApplicationServer.StoreManagement.dll.

Les points suivants s'appliquent au fournisseur de contrôle des instances pour le magasin d'instances du flux de travail SQL :

  • Il traite immédiatement et de manière synchrone la commande Supprimer. Les autres commandes sont placées dans la file d'attente de commandes avant que le fournisseur de contrôle ne les transmette au service WMS à des fins de traitement.

  • La file d'attente de commandes est une file d'attente Premier entré, premier sorti (FIFO). Le fournisseur de contrôle ajoute une nouvelle commande à la fin de la file d'attente et lit celle-ci à partir du début. Il renvoie la commande la plus ancienne non verrouillée par le service WMS.

  • Le fournisseur de contrôle peut stocker une seule commande par instance présente dans la file d'attente. Lorsqu'il reçoit une demande de mise en file d'attente pour une instance pour laquelle une commande existe déjà dans la file d'attente, il écrase la commande existante si celle-ci n'est pas verrouillée. Si elle est verrouillée ou dans un état d'attente, le fournisseur de contrôle renvoie une erreur.

  • Il place un verrou provisoire, qui expire au bout de 65 secondes, après avoir lu une commande dans la file d'attente. Lorsqu'il reçoit une notification du service WMS à propos d'une exécution réussie de la commande, le fournisseur supprime celle-ci de la file d'attente.

  • Il réexécute la commande à cinq reprises si son exécution échoue. La file d'attente de commandes met à jour un compteur des échecs de tentatives d'exécution. Si l'exécution de la commande échoue pour la cinquième fois, le fournisseur la supprime de la file d'attente.

  • Il met à jour un fichier journal des erreurs d'exécution des commandes dans la base de données. Celui-ci stocke les métadonnées concernant les échecs des commandes et le motif de ceux-ci. Il inclut au plus un échec d'exécution de commande par instance. Chaque entrée du journal inclut le type de commande, l'ID de l'instance, le code d'erreur, le message d'erreur, l'heure de la dernière tentative d'exécution, l'ID de l'ordinateur sur lequel la commande a été exécutée, ainsi que le nombre de tentatives d'exécutions.

    Une entrée de journal correspondant à une instance est supprimée lorsqu'une nouvelle commande est mise en file d'attente pour l'instance ou lorsqu'un utilisateur supprime l'instance du magasin d'instances à l'aide d'une cmdlet, par exemple, Remove-ASAppServiceInstance.

  • Le fournisseur de contrôle enlève les commandes de la file d'attente par lots de 10.

Voir aussi

Concepts

Procédure de développement d'un fournisseur de magasin d'instances
Procédure de développement d'un fournisseur de requête d'instances
Procédure de développement d'un fournisseur de contrôle des instances
Procédure de configuration de fournisseurs de magasin d'instances, de requête et de contrôle

  2012-03-05