InstanceContextMode Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa liczbę wystąpień usługi dostępnych do obsługi wywołań zawartych w komunikatach przychodzących.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- Dziedziczenie
Pola
PerCall | 1 | Nowy InstanceContext obiekt jest tworzony przed każdym wywołaniem i poddawany jego ponownemu przetworzeniu. |
PerSession | 0 | Nowy InstanceContext obiekt jest tworzony dla każdej sesji. Jeśli kanał nie utworzy sesji, ta wartość zachowuje się tak, jakby była PerCallto . |
Single | 2 | Tylko jeden InstanceContext obiekt jest używany dla wszystkich połączeń przychodzących i nie jest odzyskiwanych po wywołaniach. Jeśli obiekt usługi nie istnieje, zostanie utworzony. |
Przykłady
Poniższy kod ilustruje sposób ustawiania InstanceContextMode klasy usługi:
// 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
Uwagi
Klasa System.ServiceModel.InstanceContext zarządza skojarzeniem między kanałem a obiektami usługi zdefiniowanymi przez użytkownika. Użyj wyliczenia InstanceContextMode
z właściwością ServiceBehaviorAttribute.InstanceContextMode , aby określić okres istnienia InstanceContext obiektu. Windows Communication Foundation (WCF) może utworzyć nowy InstanceContext obiekt dla każdego wywołania, każdej sesji lub określić, że InstanceContext obiekt jest powiązany z pojedynczym obiektem usługi. Aby zapoznać się z przykładem roboczym, zobacz Instancing( Instancing).
Wartość Single
określa, że pojedynczy InstanceContext obiekt powinien być używany przez okres istnienia usługi. Kilka zastrzeżeń jest skojarzonych z wartością Single
:
Jeśli wartość jest ustawiona ServiceBehaviorAttribute.InstanceContextMode na
Single
, usługa może przetwarzać tylko jeden komunikat w danym momencie, chyba że ustawiono ConcurrencyMode również wartość ConcurrencyMode.Multiplena .W przypadku zachowania okresu istnienia pojedynczego (na przykład jeśli aplikacja hosta wywołuje ServiceHost.ServiceHost konstruktor i przekazuje obiekt do użycia jako usługę), klasa usługi musi ustawić wartość ServiceBehaviorAttribute.InstanceContextMode
Single
, lub zgłaszany jest wyjątek podczas otwierania hosta usługi.