Comportamento predefinito del servizio

Nell’esempio Default viene illustrato come configurare le impostazioni per il comportamento del servizio. L'esempio si basa su Introduzione, che implementa il contratto di servizio ICalculator. In questo esempio vengono definiti in modo esplicito i comportamenti del servizio e i comportamenti dell'operazione utilizzando gli attributi ServiceBehaviorAttribute e OperationBehaviorAttribute. È possibile configurare i comportamenti nei file di configurazione oppure in modo imperativo nel codice, come illustrato in questo esempio.

In questo esempio, il client è un'applicazione console (.exe) e il servizio è ospitato da Internet Information Services (IIS).

Nota

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

La classe del servizio specifica i comportamenti con ServiceBehaviorAttribute e OperationBehaviorAttribute, come illustrato nell'esempio di codice seguente. Tutti i valori specificati sono le impostazioni predefinite.

[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;
    }
    ...
}

I comportamenti del servizio vengono specificati con l'attributo ServiceBehaviorAttribute. Nella tabella seguente sono descritti alcuni di tali comportamenti.

Comportamento del servizio Descrizione
AutomaticSessionShutdown Arresta automaticamente una sessione alla richiesta del client.
ConcurrencyMode Specifica la modalità di concorrenza per ogni istanza del servizio.
InstanceContextMode Specifica la modalità di contesto dell'istanza.
UseSynchronizationContext Determina se utilizzare il contesto di sincronizzazione fornito, se impostato. Usare questa proprietà quando si desidera controllare se usare un WindowsFormsSynchronizationContext in applicazioni Windows Forms.
IncludeExceptionDetailInFaults Determina se le eccezioni di esecuzione generali non gestite devono essere convertite in una Fault<string> e inviate come messaggio di errore.
TransactionIsolationLevel Specifica il livello di isolamento per le transazioni.
ValidateMustUnderstand Determina se intestazioni impreviste del messaggio provocano una condizione di errore.

I comportamenti dell'operazione vengono specificati utilizzando l'attributo OperationBehaviorAttribute. Nella tabella seguente sono descritti alcuni di tali comportamenti.

Comportamento dell'operazione Descrizione
TransactionAutoComplete Determina se il completamento dell'operazione del servizio esegue il commit della transazione corrente.
TransactionScopeRequired Determina se l'operazione del servizio si integra in una transazione propagata dal client.
Impersonation Determina se l'operazione del servizio rappresenta l'identità del chiamante.
ReleaseInstanceMode Determina se le istanze del servizio vengono riciclate all'inizio o alla fine della chiamata dell'operazione di servizio.

Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console client. Il ritardo tra le chiamate è il risultato delle chiamate a System.Threading.Thread.Sleep() eseguite nelle operazioni del servizio. Gli altri esempi di comportamento illustrano questi comportamenti in maggiore dettaglio. Premere INVIO nella finestra del client per arrestare il client.

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.

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di aver eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Building the Windows Communication Foundation Samples.

  3. Per eseguire l'esempio in un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.