Compartilhar via


Comportamento padrão do serviço

O exemplo padrão demonstra como as configurações de comportamento do serviço podem ser configuradas. O exemplo é baseado no Guia de Início, que implementa o ICalculator contrato de serviço. Este exemplo define explicitamente comportamentos de serviço e comportamentos de operação usando os atributos ServiceBehaviorAttribute e OperationBehaviorAttribute. Você pode configurar comportamentos em arquivos de configuração ou de forma imperativa no código (como este exemplo 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 build para este exemplo estão localizados no final deste tópico.

A classe de serviço especifica comportamentos com o ServiceBehaviorAttribute e o OperationBehaviorAttribute, conforme 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;
    }
    ...
}

Os comportamentos de serviço são especificados com o ServiceBehaviorAttribute atributo. 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 o contexto de sincronização fornecido deve ser usado se um for definido. Use isso quando quiser controlar se deseja usar um WindowsFormsSynchronizationContext em aplicativos do Windows Forms.
IncludeExceptionDetailInFaults Determina se exceções gerais de execução 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 OperationBehaviorAttribute atributo. A tabela a seguir descreve alguns desses comportamentos.

Comportamento da 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 o exemplo, as solicitações e respostas da operação 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 dos exemplos de comportamento explica 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 avulsa dos 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 o exemplo em uma configuração única ou entre máquinas, siga as instruções em Executando os exemplos do Windows Communication Foundation.