InstanceContextMode Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje počet instancí služeb, které jsou k dispozici pro zpracování volání obsažených v příchozích zprávách.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- Dědičnost
Pole
PerCall | 1 | Nový InstanceContext objekt se vytvoří před každým voláním a recykluje ho. |
PerSession | 0 | Pro každou relaci se vytvoří nový InstanceContext objekt. Pokud kanál nevytvoří relaci, tato hodnota se chová, jako by byla PerCall. |
Single | 2 | Pro všechna příchozí volání se používá pouze jeden InstanceContext objekt a po volání se nereklásuje. Pokud objekt služby neexistuje, vytvoří se jeden objekt. |
Příklady
Následující kód ukazuje, jak nastavit InstanceContextMode třídu služby:
// 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
Poznámky
Třída System.ServiceModel.InstanceContext spravuje přidružení mezi kanálem a objekty služby definované uživatelem. InstanceContextMode
Pomocí výčtu ServiceBehaviorAttribute.InstanceContextMode s vlastností určete životnost objektuInstanceContext. Windows Communication Foundation (WCF) může vytvořit nový InstanceContext objekt pro každé volání, každou relaci nebo určit, že InstanceContext je objekt vázán na jeden objekt služby. Pracovní příklad najdete v tématu Instanceng.
Hodnota Single
určuje, že jeden InstanceContext objekt by měl být použit po dobu životnosti služby. K hodnotě Single
je přidruženo několik upozornění:
ServiceBehaviorAttribute.InstanceContextMode Pokud je hodnota nastavená na
Single
, může vaše služba zpracovat pouze jednu zprávu najednou, pokud také nenastavíte ConcurrencyMode hodnotu na ConcurrencyMode.Multiple.Pokud například aplikace hostitele volá ServiceHost.ServiceHost konstruktor a předává objekt, který má být používán jako služba, musí být třída služby nastavena ServiceBehaviorAttribute.InstanceContextMode na
Single
nebo je vyvolána výjimka při otevření hostitele služby.