Default Service Behavior
Cet exemple montre comment les paramètres de comportement du service peuvent être configurés. Cet exemple est basé sur l'Getting Started, exemple qui implémente le contrat de service ICalculator
. Cet exemple définit explicitement des comportements de service et des comportements d'opération à l'aide des attributs ServiceBehaviorAttribute et OperationBehaviorAttribute. Vous pouvez configurer les comportements dans les fichiers de configuration ou impérativement dans le code (comme le montre cet exemple).
Dans cet exemple, le client est une application console (.exe) et le service est hébergé par les services IIS (Internet Information Services).
Remarque : |
---|
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent en fin de rubrique. |
La classe de service spécifie des comportements avec l'ServiceBehaviorAttribute et l'OperationBehaviorAttribute comme le montre l'exemple de code suivant. Toutes les valeurs spécifiées sont les valeurs par défaut.
[ServiceBehavior(
AutomaticSessionShutdown=true,
ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerSession,
IncludeExceptionDetailInFaults=false,
UseSynchronizationContext=true,
ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
[OperationBehavior(
TransactionAutoComplete=true,
TransactionScopeRequired=false,
Impersonation=ImpersonationOption.NotAllowed)]
public double Add(double n1, double n2)
{
System.Threading.Thread.Sleep(1600);
return n1 + n2;
}
...
}
Les comportements de service sont spécifiés avec l'attribut ServiceBehaviorAttribute. Le tableau suivant décrit quelques-uns de ces comportements.
Comportement de service | Description |
---|---|
Ferme automatiquement une session à la demande du client. |
|
Spécifie le mode d'accès concurrentiel pour chaque instance de service. |
|
Spécifie le mode de contexte d'instance. |
|
Détermine s'il faut utiliser le contexte de synchronisation fourni, s'il est défini. Utilisez-le pour contrôler s'il faut utiliser un WindowsFormsSynchronizationContext dans les applications Windows Forms. |
|
Détermine si les exceptions d'exécution non prise en charge générales doivent être converties en Fault<string> et envoyées comme un message d'erreur. |
|
Spécifie le niveau d'isolement des transactions. |
|
Détermine si les en-têtes de message inattendus provoquent une condition d'erreur. |
Les comportements d'opération sont spécifiés à l'aide de l'attribut OperationBehaviorAttribute. Le tableau suivant décrit quelques-uns de ces comportements.
Comportement d'opération | Description |
---|---|
Détermine si l'achèvement de l'opération de service valide la transaction en cours. |
|
Détermine si l'opération de service s'inscrit dans une transaction transmise par le client. |
|
Détermine si l'opération de service emprunte l'identité de l'appelant. |
|
Détermine si les instances de service sont recyclées au début ou à la fin de l'appel de l'opération de service. |
Lorsque vous exécutez l'exemple, les demandes et réponses d'opération s'affichent dans la fenêtre de console cliente. Le délai entre les appels est le résultat des appels passés à System.Threading.Thread.Sleep() dans les opérations de service. Le reste des exemples de comportements explique ces comportements de manière plus détaillée. Appuyez sur ENTER dans la fenêtre du client pour fermer celui-ci.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Pour configurer, générer et exécuter l'exemple
Assurez-vous d'avoir effectué la procédure indiquée dans la section Procédure d'installation unique pour les exemples Windows Communication Foundation.
Pour générer l'édition C# ou Visual Basic .NET de la solution, suivez les instructions indiquées dans Génération des exemples Windows Communication Foundation.
Pour exécuter l'exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions indiquées dans Exécution des exemples Windows Communication Foundation.
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.