Partilhar via


Comportamento de serviço padrão

O exemplo Padrão demonstra como as configurações de comportamento de serviço podem ser configuradas. O exemplo é baseado na Introdução, que implementa o ICalculator contrato de serviço. Este exemplo define explicitamente comportamentos de serviço e comportamentos de operação usando os ServiceBehaviorAttribute atributos e OperationBehaviorAttribute . Você pode configurar comportamentos em arquivos de configuração ou imperativamente em código (como este exemplo demonstra).

Neste exemplo, o cliente é um aplicativo de console (.exe) e o serviço é hospedado pelo IIS (Serviços de Informações da Internet).

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados 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;
    }
    ...
}

Os comportamentos de serviço são especificados com o ServiceBehaviorAttribute atributo. A tabela a seguir descreve alguns desses comportamentos.

Comportamento do serviço Description
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 estiver definido. Use isso quando quiser controlar se deseja usar um WindowsFormsSynchronizationContext em aplicativos do Windows Forms.
IncludeExceptionDetailInFaults Determina se as exceções gerais de execução não tratadas devem ser convertidas em uma Fault<string> mensagem de falha e enviadas como uma mensagem de falha.
TransactionIsolationLevel Especifica o nível de isolamento para transações.
ValidateMustUnderstand Determina se cabeçalhos de mensagens inesperadas 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 Description
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 se alista em uma transação de 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 de operação e as respostas são exibidas na janela do console do cliente. O atraso entre as chamadas é o resultado das chamadas feitas System.Threading.Thread.Sleep() nas operações de atendimento. O restante das amostras 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. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  3. Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.