InstanceContextMode Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica el número de instancias de servicio disponibles para administrar llamadas que se encuentran en mensajes entrantes.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- Herencia
Campos
PerCall | 1 | Se crea con anterioridad un nuevo objeto InstanceContext y se recicla después de cada llamada. |
PerSession | 0 | Se creará un nuevo objeto InstanceContext para cada sesión. Si el canal no crea ninguna sesión, este valor se comporta como si fuera PerCall. |
Single | 2 | Sólo se utiliza un objeto InstanceContext para todas las llamadas entrantes y no se recicla después de las llamadas. Si un objeto de servicio no existe, se crea uno. |
Ejemplos
El siguiente código muestra cómo definir el valor de InstanceContextMode para una clase de servicio:
// 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
Comentarios
La System.ServiceModel.InstanceContext clase administra la asociación entre el canal y los objetos de servicio definidos por el usuario. Utilice la enumeración InstanceContextMode
con la propiedad ServiceBehaviorAttribute.InstanceContextMode para especificar la duración del objeto InstanceContext. Windows Communication Foundation (WCF) puede crear un nuevo InstanceContext objeto para cada llamada, cada sesión o especificar que el InstanceContext objeto está enlazado a un único objeto de servicio. Para obtener un ejemplo de trabajo, consulte Instancing( Creación de instancias).
El valor Single
especifica que un objeto InstanceContext único debería utilizarse durante el servicio. Hay varias advertencias asociadas al Single
valor:
Si el ServiceBehaviorAttribute.InstanceContextMode valor se establece
Single
en , el servicio solo puede procesar un mensaje a la vez a menos que también establezca el ConcurrencyMode valor en ConcurrencyMode.Multiple.En el caso del comportamiento de duración de singleton (por ejemplo, si la aplicación host llama al constructor ServiceHost.ServiceHost y pasa un objeto que se utilice como el servicio), la clase del servicio debe establecer ServiceBehaviorAttribute.InstanceContextMode en
Single
o se inicia una excepción cuando el host de servicio se abre.