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žby, 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
| Name | Hodnota | Description |
|---|---|---|
| PerSession | 0 | Pro každou relaci se vytvoří nový InstanceContext objekt. Pokud kanál nevytvoří relaci, tato hodnota se chová, jako by byla PerCall. |
| PerCall | 1 | InstanceContext Nový objekt se vytvoří před a recyklován po každém volání. |
| Single | 2 | Pro všechna příchozí volání se používá pouze jeden InstanceContext objekt a po voláních se nereykluje. 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. Pomocí výčtu InstanceContextModeServiceBehaviorAttribute.InstanceContextMode s vlastností určete životnost objektu InstanceContext . Windows Communication Foundation (WCF) může vytvořit nový InstanceContext objekt pro každé volání, každou relaci nebo určit, že InstanceContext objekt je svázán s jedním objektem služby. Pracovní příklad najdete v tématu Vytváření instancí.
Hodnota Single určuje, že jeden InstanceContext objekt by měl být použit po celou dobu životnosti služby. K hodnotě Single je přidruženo několik upozornění:
Pokud je hodnota nastavena ServiceBehaviorAttribute.InstanceContextMode na
Single, vaše služba může zpracovat pouze jednu zprávu najednou, pokud nenastavíte ConcurrencyMode hodnotu na ConcurrencyMode.Multiplehodnotu .Pro chování životnosti jednohotonu (například pokud hostitelská aplikace volá ServiceHost.ServiceHost konstruktor a předává objekt, který se má použít jako služba), třída služby musí být nastavena ServiceBehaviorAttribute.InstanceContextMode na
Single, nebo je vyvolána výjimka při otevření hostitele služby.