InstanceContextMode Enumerazione
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica il numero di istanze del servizio disponibili per la gestione delle chiamate contenute nei messaggi in ingresso.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- Ereditarietà
Campi
PerCall | 1 | Prima di ogni chiamata viene creato un nuovo oggetto InstanceContext che, al termine di ogni chiamata, viene riciclato. |
PerSession | 0 | A ogni sessione viene creato un nuovo oggetto InstanceContext. Se il canale non crea alcuna sessione, questo valore funziona come se fosse PerCall. |
Single | 2 | Per tutte le chiamate in ingresso viene utilizzato un solo oggetto InstanceContext. Tale oggetto, inoltre, non viene riciclato al termine delle chiamate. Se non esiste alcun oggetto servizio, ne viene creato uno. |
Esempio
Nell'esempio di codice seguente viene illustrato come impostare l'enumerazione InstanceContextMode di una classe di servizio:
// 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
Commenti
La System.ServiceModel.InstanceContext classe gestisce l'associazione tra il canale e gli oggetti servizio definiti dall'utente. L'enumerazione InstanceContextMode
può essere utilizzata con la proprietà ServiceBehaviorAttribute.InstanceContextMode per specificare la durata dell'oggetto InstanceContext. Windows Communication Foundation (WCF) può creare un nuovo InstanceContext oggetto per ogni chiamata, ogni sessione o specificare che l'oggetto InstanceContext è associato a un singolo oggetto servizio. Per un esempio funzionante, vedere Creazione di istanze.
Il valore Single
specifica che per la durata del servizio deve essere utilizzato un solo oggetto InstanceContext. Al valore sono associate Single
diverse avvertenze:
Se il ServiceBehaviorAttribute.InstanceContextMode valore è impostato su
Single
, il servizio può elaborare un solo messaggio alla volta, a meno che non si imposti anche il ConcurrencyMode valore su ConcurrencyMode.Multiple.In caso di funzionamento di durata Singleton (ad esempio, l'applicazione host chiama il costruttore ServiceHost.ServiceHost e passa un oggetto da utilizzare come servizio), la classe del servizio deve impostare la proprietà ServiceBehaviorAttribute.InstanceContextMode su
Single
. In caso contrario viene generata un'eccezione all'apertura dell'host del servizio.