Tâche 2 : activer la persistance pour le service fiable
Dans cette tâche, vous allez décorer le service que vous avez créé dans la tâche 1 avec les attributs qui vous permettent de rendre l'état de votre service persistant après chaque appel d'opération réussi.
Pour décorer le service avec les attributs de service fiables
Ouvrez Service1.cs (ou Service1.vb si vous avez créé une solution Visual Basic).
Dans le volet Explorateur de solutions, sous le nœud de projet SimpleDurableService, cliquez avec le bouton droit sur le sous-dossier Références et sélectionnez Ajouter la référence.
Dans la boîte de dialogue Ajouter la référence, sous l'onglet .NET, sélectionnez System.WorkflowServices et cliquez sur OK.
Ajoutez l'instruction using suivante dans votre fichier source C# :
Si vous avez créé une solution Visual Basic, cliquez avec le bouton droit de la souris sur le nœud de projet SimpleDurableService et sélectionnez Propriétés. Sélectionnez l'onglet Références et, sous Espaces de noms importés, sélectionnez System.ServiceModel.Description.
Pour rendre le service persistant, vous devez décorer la classe Service1 avec les attributs DurableServiceAttribute et SerializableAttribute, comme indiqué dans l'exemple suivant.
L'attribut DurableServiceAttribute spécifie que les informations d'état pour votre service WCF peuvent être rendues persistantes dans un magasin de persistances, tel qu'une base de données ou un fichier. De même, le type de service doit être sérialisable afin qu'il puisse être transmis au magasin de persistances.
Décorez les opérations de service avec l'attribut DurableOperationAttribute comme indiqué dans l'exemple suivant. Cet attribut spécifie que l'état de l'instance du service sera enregistré une fois que l'opération aura été effectuée.
Les propriétés CanCreateInstance et CompletesInstance spécifient que l'instance du service fiable sera créée ou terminée après la fin réussie de l'opération décorée. Pour plusieurs opérations de ce didacticiel, les première et dernière opérations contrôlent le comportement de l'instance du service.
Les opérations décorées avec l'attribut DurableOperationAttribute qui possède les valeurs par défaut ne peuvent rendre persistantes que les informations d'état pour une entrée d'instance de service existante dans le magasin de persistances. Toutefois, si vous créez un contrat de service où System.ServiceModel.SessionMode.NotAllowed a la valeur true, la propriété CanCreateInstance de chaque attribut DurableOperationAttribute doit avoir la valeur true.
Une fois le service décoré avec les attributs appropriés, vous devez configurer le fichier de configuration et faire référence au magasin de persistances que vous souhaitez utiliser.
Pour configurer votre service fiable
Ouvrez App.config.
Modifiez les paramètres de configuration du point de terminaison pour référencer un contexte, tel que WSHttpContextBinding.
<endpoint address ="" binding="wsHttpContextBinding" contract="SimpleDurableService.IService1" />
Les liaisons de contexte doivent être utilisées parce qu'un DurableOperationContext est utilisé par le client pour identifier une instance de service spécifique. Après avoir appelé une opération de demande/réponse et avoir reçu une réponse du service, le client utilisera la valeur InstanceId pour chaque appel d'opération suivant afin que le client s'associe lui-même avec l'instance de service correspondante. Si ce mécanisme de suivi n'a pas été utilisé, lorsqu'une instance de service est arrêtée ou déconnectée du client, le client ne pourra pas rétablir une connexion avec une instance de service spécifique.
Ajoutez le nœud enfant suivant à votre nœud de comportement.
<behaviors> <serviceBehaviors> <behavior name="SimpleDurableService.Service1Behavior"> <!-- To avoid disclosing metadata information, set the following value to false and remove the preceding metadata endpoint before deployment. --> <serviceMetadata httpGetEnabled="True"/> <!-- To receive exception details in faults for debugging purposes, set the following value to true. Set the value to false before deployment to avoid disclosing exception information. --> <serviceDebug includeExceptionDetailInFaults="False" /> <persistenceProvider type="System.ServiceModel.Persistence.SqlPersistenceProviderFactory, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DurableServiceStore" persistenceOperationTimeout = "00:00:10" lockTimeout="00:01:00" serializeAsText="true"/> </behavior> </serviceBehaviors> </behaviors>
Le PersistenceProviderElement définit le type de PersistenceProvider que votre service utilisera. Dans ce didacticiel, la SqlPersistenceProviderFactory est utilisée pour créer une nouvelle instance du type PersistenceProvider qui se connecte à une base de données SQL. À chaque fois que l'opération Ajouter est appelée et effectuée avec succès, une nouvelle instance de service est créée et ses informations d'état sont stockées dans la base de données SQL.
Ajoutez la chaîne de connexion pour la base de données SQL que votre instance de service utilisera à des fins de persistance.
</system.serviceModel> <connectionStrings> <add name="DurableServiceStore" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=NetFx35Samples_DurableServiceStore;Integrated Security=SSPI"/> </connectionStrings> </configuration>
![]() |
---|
Ce didacticiel utilise la même base de données que celle utilisée pour le Durable Workflow Services Sample. Par conséquent, la chaîne de connexion est la même. Pour autoriser l'accès au magasin fiable, exécutez le script Createstores.cmd à partir de One-Time Setup Procedure for the Windows Communication Foundation Samples. |
Dans la tâche suivante, vous allez créer un client qui peut accéder à votre service fiable.
Voir aussi
Tâches
Tâche 1 : définir et implémenter le contrat de service fiable
Tâche 3 : créer un client de service fiable
Autres ressources
Didacticiel : créer un service fiable
Copyright © 2007 par Microsoft Corporation. Tous droits réservés.