Partager via


Magasins d'instances

Un magasin d’instances est un conteneur logique d’instances. Il s’agit de l’endroit où les données et métadonnées de l’instance sont stockées. Un magasin d’instances n’implique pas de stockage physique dédié. Un magasin d’instances 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 4.6.1 est fourni avec le magasin d’instances de flux de travail SQL, qui est une implémentation concrète d’un magasin d’instances qui permet aux flux de travail de conserver les données et les métadonnées d’instance dans une base de données SQL Server 2005 ou SQL Server 2008. En outre, Windows Server App Fabric fournit également une implémentation concrète d’un magasin d’instances. Pour plus d’informations, consultez Windows Server App Fabric Instance Store, Query et Control Providers.

L’API de persistance est l’interface entre un hôte et un magasin d’instances qui permet à l’hôte d’envoyer des demandes de commande (par exemple, LoadWorkflowCommand et SaveWorkflowCommand) au magasin d’instances. L’implémentation concrète de cette API est appelée fournisseur de persistance. Le fournisseur de persistance reçoit les demandes d’un hôte et modifie le magasin d’instances.

Les hôtes et les magasins d’instances sont enfichables afin qu’un hôte puisse être utilisé avec de nombreux magasins d’instances, et qu’un magasin d’instances peut être utilisé avec de nombreux hôtes. Un magasin d’instances est généralement optimisé pour les modèles d’utilisation d’un hôte particulier, bien que le magasin d’instances et l’hôte puissent évoluer sur des cycles de vie indépendants. Par exemple, WorkflowServiceHost et SqlWorkflowInstanceStore sont conçus pour fonctionner correctement ensemble. Vous pouvez créer votre propre magasin d’instances pour conserver les données et les métadonnées des instances de service de flux de travail et utiliser ce magasin d’instances avec WorkflowServiceHost. Par exemple, vous pouvez créer un OracleWorkflowInstanceStore qui permet aux flux de travail de conserver des informations dans une base de données Oracle au lieu de les enregistrer dans une base de données SQL Server.

Il est courant que les hôtes soient étendus avec des fonctionnalités supplémentaires qui modifient les objets persistants. Par exemple, un système de persistance d’instance peut avoir un hôte de flux de travail, une extension qui prend en charge l’opération « Suspendre » et un magasin d’instances SQL. L’hôte de flux de travail peut envoyer une commande standard telle que Enregistrer ou Charger pour enregistrer ou charger un flux de travail à partir d’un magasin d’instances ou pour enregistrer un flux de travail dans un magasin d’instances. L’extension de suspension peut ajouter des sémantiques supplémentaires aux commandes permettant d’enregistrer et de charger des instances de flux de travail afin qu’une instance de flux de travail suspendue ne puisse pas être chargée. Le fournisseur de persistance pour le magasin d’instances SQL comprend les commandes d’enregistrement et de chargement des instances de flux de travail, et implémente les commandes en appelant les procédures stockées appropriées qui modifient les tables d’objets persistants dans une base de données SQL Server.

Un hôte agit en tant que propriétaire d’instance dans un magasin d’instances. Il peut se comporter comme le propriétaire de plusieurs instances avec plusieurs magasins d'instances en même temps. L’hôte fournit des GUID pour les clés d’instance associées aux instances. Une clé d’instance est un alias unique qui identifie une instance. Le système de persistance crée, met à jour et supprime les informations du propriétaire de l’instance lors de l’exécution des commandes demandées par les hôtes.

La liste suivante contient les étapes importantes impliquées dans l’interaction de l’hôte avec le magasin d’instances :

  1. Obtenez un InstanceStore à partir d’un fournisseur de persistance.

  2. Obtenez le handle sur une instance en appelant la CreateInstanceHandle méthode sur InstanceStore.

  3. Appelez des commandes sur le handle d’instance en appelant la Execute méthode sur InstanceStore.

  4. Examinez le InstanceView résultat retourné par InstanceStore.Execute pour déterminer les résultats des commandes.