InstanceContextMode Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica o número de instâncias de serviço disponíveis para tratar as chamadas contidas em mensagens de entrada.
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- Herança
Campos
PerCall | 1 | Um novo objeto InstanceContext é criado antes de cada chamada e reciclado depois dela. |
PerSession | 0 | Um novo objeto InstanceContext é criado para cada sessão. Se o canal não criar uma sessão, esse valor se comportará como se fosse PerCall. |
Single | 2 | Apenas um objeto InstanceContext é usado para todas as chamadas de entrada e não é reciclado após as chamadas. Se não existir nenhum objeto de serviço, um será criado. |
Exemplos
O código a seguir ilustra como definir a InstanceContextMode classe de serviço:
// 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
Comentários
A System.ServiceModel.InstanceContext classe gerencia a associação entre o canal e os objetos de serviço definidos pelo usuário. Use a InstanceContextMode
enumeração com a ServiceBehaviorAttribute.InstanceContextMode propriedade para especificar o tempo de vida do InstanceContext objeto. Windows Communication Foundation (WCF) pode criar um novo InstanceContext objeto para cada chamada, cada sessão ou especificar que o InstanceContext objeto está associado a um único objeto de serviço. Para obter um exemplo de trabalho, consulte Instancing.
O Single
valor especifica que um único InstanceContext objeto deve ser usado para o tempo de vida do serviço. Várias ressalvas estão associadas ao Single
valor:
Se o ServiceBehaviorAttribute.InstanceContextMode valor estiver definido como
Single
, seu serviço só poderá processar uma mensagem por vez, a menos que você também defina o ConcurrencyMode valor como ConcurrencyMode.Multiple.Para o comportamento de tempo de vida singleton (por exemplo, se o aplicativo host chamar o ServiceHost.ServiceHost construtor e passar um objeto para usar como o serviço), a classe de serviço deverá ser definida ServiceBehaviorAttribute.InstanceContextMode
Single
como, ou uma exceção será gerada quando o host do serviço for aberto.