InstanceContextMode Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt die Anzahl von Dienstinstanzen an, die verfügbar sind, um die in eingehenden Nachrichten enthaltenen Aufrufe zu behandeln.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- Vererbung
Felder
PerCall | 1 | Ein neues InstanceContext-Objekt wird vor jedem Aufruf erstellt und im Anschluss wiederverwendet. |
PerSession | 0 | Ein neues InstanceContext-Objekt wird zu jeder Sitzung erstellt. Wenn der Kanal keine Sitzung erstellt, verhält sich dieser Wert wie PerCall. |
Single | 2 | Nur ein InstanceContext-Objekt wird für alle eingehenden Aufrufe verwendet und nicht bei den nachfolgenden Aufrufen wiederverwendet. Wenn ein Dienstobjekt nicht vorhanden ist, wird eins erstellt. |
Beispiele
Am folgenden Code ist zu erkennen, wie InstanceContextMode für eine Dienstklasse angegeben wird:
// 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
Hinweise
Die System.ServiceModel.InstanceContext Klasse verwaltet die Zuordnung zwischen dem Kanal und den benutzerdefinierten Dienstobjekten. Verwenden Sie die InstanceContextMode
-Enumeration mit der ServiceBehaviorAttribute.InstanceContextMode-Eigenschaft, um die Lebensdauer des InstanceContext-Objekts anzugeben. Windows Communication Foundation (WCF) kann für jeden Aufruf, jede Sitzung ein neues InstanceContext Objekt erstellen oder angeben, dass das InstanceContext Objekt an ein einzelnes Dienstobjekt gebunden ist. Ein Arbeitsbeispiel finden Sie unter "Instancing".
Der Single
-Wert gibt an, dass ein einzelnes InstanceContext-Objekt für die gesamte Lebensdauer des Dienstes verwendet werden sollte. Mehrere Vorbehalte sind dem Single
Wert zugeordnet:
Wenn der ServiceBehaviorAttribute.InstanceContextMode Wert auf
Single
"Festgelegt" festgelegt ist, kann Ihr Dienst nur jeweils eine Nachricht verarbeiten, es sei denn, Sie legen den ConcurrencyMode Wert auch auf ConcurrencyMode.Multiple.Beim Laufzeitverhalten von Singleton-Klassen (z. B. wenn die Hostanwendung den ServiceHost.ServiceHost-Konstruktor aufruft und ein Objekt zur Verwendung als Dienst übergibt), muss die Serviceklasse ServiceBehaviorAttribute.InstanceContextMode auf
Single
festlegen, oder es wird eine Ausnahme ausgelöst, wenn der Diensthost geöffnet wird.