Comportamento padrão de serviço
A amostra Padrão demonstra como as definições de comportamento do serviço podem ser configuradas. A amostra baseia-se na Introdução, que implementa o contrato de serviço ICalculator
. Esta amostra define explicitamente comportamentos de serviço e de operação usando os atributos ServiceBehaviorAttribute e OperationBehaviorAttribute. Você pode configurar comportamentos em arquivos de configuração ou imperativamente no código (como esta amostra demonstra).
Nesta amostra, o cliente é um aplicativo de console (.exe) e o serviço é hospedado pelos Serviços de Informações da Internet (IIS).
Observação
O procedimento de instalação e as instruções de compilação dessa amostra estão no final deste tópico.
A classe de serviço especifica comportamentos com o ServiceBehaviorAttribute e o OperationBehaviorAttribute como mostrado no exemplo de código a seguir. Todos os valores especificados são os padrões.
[ServiceBehavior(
AutomaticSessionShutdown=true,
ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerSession,
IncludeExceptionDetailInFaults=false,
UseSynchronizationContext=true,
ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
[OperationBehavior(
TransactionAutoComplete=true,
TransactionScopeRequired=false,
Impersonation=ImpersonationOption.NotAllowed)]
public double Add(double n1, double n2)
{
System.Threading.Thread.Sleep(1600);
return n1 + n2;
}
...
}
Comportamentos de serviço são especificados com o atributo ServiceBehaviorAttribute. A tabela a seguir descreve alguns desses comportamentos.
Comportamento do serviço | Descrição |
---|---|
AutomaticSessionShutdown | Desliga automaticamente uma sessão a pedido do cliente. |
ConcurrencyMode | Especifica o modo de simultaneidade para cada instância de serviço. |
InstanceContextMode | Especifica o modo de contexto da instância. |
UseSynchronizationContext | Determina se é necessário usar o contexto de sincronização fornecido, se um estiver definido. Use isso quando quiser controlar se deseja usar um WindowsFormsSynchronizationContext em aplicativos do Windows Forms. |
IncludeExceptionDetailInFaults | Determina se as exceções de execução gerais sem tratamento devem ser convertidas em um Fault<string> e enviadas como uma mensagem de falha. |
TransactionIsolationLevel | Especifica o nível de isolamento das transações. |
ValidateMustUnderstand | Determina se cabeçalhos de mensagem inesperados causam uma condição de erro. |
Os comportamentos de operação são especificados usando o atributo OperationBehaviorAttribute. A tabela a seguir descreve alguns desses comportamentos.
Comportamento de operação | Descrição |
---|---|
TransactionAutoComplete | Determina se a conclusão da operação de serviço confirma a transação atual. |
TransactionScopeRequired | Determina se a operação de serviço é inserida em uma transação com fluxo de cliente. |
Impersonation | Determina se a operação de serviço representa a identidade do chamador. |
ReleaseInstanceMode | Determina se as instâncias de serviço são recicladas no início ou no final da chamada de operação de serviço. |
Quando você executa a amostra, as solicitações de operação e as respostas são exibidas na janela do console do cliente. O atraso entre as chamadas é o resultado das chamadas para System.Threading.Thread.Sleep()
feitas nas operações de serviço. O restante das amostras de comportamento explicam esses comportamentos com mais detalhes. Pressione ENTER na janela do cliente para desligar o cliente.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Para configurar, compilar, e executar o exemplo
Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.
Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.
Para executar a amostra em uma configuração de computador único ou entre computadores, siga as instruções contidas em Como executar as amostras do Windows Communication Foundation.