InstanceContextMode Перечисление

Определение

Задает число экземпляров службы, доступных для обработки вызовов, содержащихся во входящих сообщениях.

public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode = 
Public Enum InstanceContextMode
Наследование
InstanceContextMode

Поля

PerCall 1

Новый объект InstanceContext создается перед каждым вызовом и удаляется после него.

PerSession 0

Для каждого сеанса создается новый объект InstanceContext. Если канал не создает сеанс, это значение ведет себя так, как если бы оно было PerCall.

Single 2

Для всех входящих вызовов используется только один объект InstanceContext, который не удаляется после этих вызовов. Если объект службы отсутствует, он создается.

Примеры

В следующем коде показано, как задать InstanceContextMode для класса службы:

// Service class which implements the service contract.
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
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;
    }
}
' Service class which implements the service contract.
Public Class CalculatorService
Implements ICalculator

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

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

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

    Public Function Divide(n1 As Double, n2 As Double) As Double Implements ICalculator.Divide
        Return n1 / n2
    End Function

End Class

Комментарии

Класс System.ServiceModel.InstanceContext управляет связью между каналом и объектами определяемой пользователем службы. Чтобы задать время существования объекта InstanceContextMode, используйте перечисление ServiceBehaviorAttribute.InstanceContextMode со свойством InstanceContext. Windows Communication Foundation (WCF) может создать новый InstanceContext объект для каждого вызова, каждого сеанса или указать, что InstanceContext объект привязан к одному объекту службы. Рабочий пример см. в разделе "Instancing".

Значение Single указывает, что в течение времени существования службы должен использоваться единственный объект InstanceContext. Несколько предостережения связаны со значением Single :

  • ServiceBehaviorAttribute.InstanceContextMode Если задано Singleзначение, служба может обрабатывать только одно сообщение одновременно, если значение не задано ConcurrencyMode ConcurrencyMode.Multiple.

  • Что касается поведения времени существования одного элемента (например, если ведущее приложение вызывает конструктор ServiceHost.ServiceHost и передает объект для использования в качестве службы), класс службы должен задать для ServiceBehaviorAttribute.InstanceContextMode значение Single, иначе при открытии узла службы будет выдано исключение.

Применяется к

См. также раздел