Comportamento predefinito del servizio

In questo esempio viene illustrato come configurare le impostazioni del comportamento del servizio. L'esempio si basa su Esempio della guida introduttiva, 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 dell'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. Utilizzare questa proprietà quando si desidera controllare se utilizzare un WindowsFormsSynchronizationContext nelle applicazioni Windows Form.

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 avere eseguito 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 Generazione degli esempi Windows Communication Foundation.

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

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.