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
Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.
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.
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.