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

  1. Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. 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.

  3. 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.