InstanceContextMode Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает количество экземпляров служб, доступных для обработки вызовов, содержащихся в входящих сообщениях.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- Наследование
Поля
| Имя | Значение | Описание |
|---|---|---|
| PerSession | 0 | Для каждого сеанса создается новый InstanceContext объект. Если канал не создает сеанс, это значение ведет себя так, как если бы это было PerCall. |
| PerCall | 1 | Новый InstanceContext объект создается до и перезапускается после каждого вызова. |
| 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 управляет связью между каналом и пользовательскими объектами службы. Используйте перечисление со свойством InstanceContextModeServiceBehaviorAttribute.InstanceContextMode , чтобы указать время существования InstanceContext объекта. Windows Communication Foundation (WCF) может создавать новый InstanceContext объект для каждого вызова, каждого сеанса или указывать, что InstanceContext объект привязан к одному объекту службы. Пример работы см. в разделе "Instancing".
Значение Single указывает, что один InstanceContext объект должен использоваться в течение времени существования службы. Несколько предостережения связаны со значением Single :
ServiceBehaviorAttribute.InstanceContextMode Если задано
Singleзначение, служба может обрабатывать только одно сообщение одновременно, если значение не задано ConcurrencyModeConcurrencyMode.Multiple.Для поведения одноэлементного времени существования (например, если ведущее приложение вызывает ServiceHost.ServiceHost конструктор и передает объект для использования в качестве службы), класс службы должен задать значение
SingleServiceBehaviorAttribute.InstanceContextMode , или исключение возникает при открытии узла службы.