InstanceContextMode Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает число экземпляров службы, доступных для обработки вызовов, содержащихся во входящих сообщениях.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum 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
, иначе при открытии узла службы будет выдано исключение.