Partager via


Comment : contrôler l'instanciation de service

La définition du mode d'instance d'un service vous permet de spécifier quand un System.ServiceModel.InstanceContext (et son objet de service associé, défini par l'utilisateur) est créé. Consultez l'énumération InstanceContextMode pour connaître les modes possibles. Pour plus d'informations sur le sujet suivant les comportements, consultez Configuration et extension de l'exécution à l'aide de comportements. Pour obtenir des exemples fonctionnels, consultez Service: Behaviors Samples.

Pour contrôler la durée de vie de l'instance de service en utilisant du code

  1. Appliquez ServiceBehaviorAttribute à la classe de service.

  2. Affectez à la propriété InstanceContextMode l'une des valeurs suivantes : PerCall, PerSession ou Single.

    <ServiceBehaviorAttribute(InstanceContextMode:=InstanceContextMode.PerCall)> _
    Public Class CalculatorService
    
    [ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
    

Exemple

L'exemple de code suivant affecte à la propriété InstanceContextMode de l'attribut ServiceBehaviorAttribute la valeur PerCall.

' Define a service contract.
<ServiceContract([Namespace]:="http://Microsoft.ServiceModel.Samples")> _
Public Interface ICalculator
    <OperationContract()> _
    Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract()> _
    Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract()> _
    Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract()> _
    Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
End Interface

' Service class which implements the service contract.
<ServiceBehaviorAttribute(InstanceContextMode:=InstanceContextMode.PerCall)> _
Public Class CalculatorService
    Implements ICalculator

    Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Add
        Return n1 + n2

    End Function


    Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Subtract
        Return n1 - n2
    End Function

    Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Multiply
        Return n1 * n2
    End Function

    Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Divide
        Return n1 / n2
    End Function
End Class
// Define a service contract.
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
    [OperationContract]
    double Add(double n1, double n2);
    [OperationContract]
    double Subtract(double n1, double n2);
    [OperationContract]
    double Multiply(double n1, double n2);
    [OperationContract]
    double Divide(double n1, double n2);
}

// Service class which implements the service contract.
[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
public class CalculatorService : ICalculator
{
    public double Add(double n1, double n2)
    {
        return n1 + n2;
    }

    public double Subtract(double n1, double n2)
    {
        return n1 - n2;
    }

    public double Multiply(double n1, double n2)
    {
        return n1 * n2;
    }

    public double Divide(double n1, double n2)
    {
        return n1 / n2;
    }
}

Voir aussi

Référence

ServiceBehaviorAttribute
InstanceContextMode
InstanceContextMode

Autres ressources

Service: Behaviors Samples