Condividi tramite


Comportamento predefinito del servizio

Nell'esempio predefinito viene illustrato come configurare le impostazioni del comportamento del servizio. L'esempio è basato su Getting Started, che implementa il ICalculator contratto di servizio. Questo esempio definisce in modo esplicito i comportamenti del servizio e i comportamenti delle operazioni usando gli ServiceBehaviorAttribute attributi e OperationBehaviorAttribute . È possibile configurare i comportamenti nei file di configurazione o 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).

Annotazioni

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 i valori predefiniti.

[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 vengono descritti alcuni di questi 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 opzione quando si desidera controllare se utilizzare un oggetto WindowsFormsSynchronizationContext nelle applicazioni Windows Form.
IncludeExceptionDetailInFaults Determina se le eccezioni generali di esecuzione non gestite devono essere convertite in un Fault<string> e inviate come messaggio di errore.
TransactionIsolationLevel Specifica il livello di isolamento per le transazioni.
ValidateMustUnderstand Determina se le intestazioni di messaggio impreviste causano una condizione di errore.

I comportamenti dell'operazione vengono specificati usando l'attributo OperationBehaviorAttribute . Nella tabella seguente vengono descritti alcuni di questi comportamenti.

Comportamento dell'operazione Descrizione
TransactionAutoComplete Determina se il completamento dell'operazione del servizio commette la transazione corrente.
TransactionScopeRequired Determina se l'operazione del servizio viene inserita in una transazione con flusso client.
Impersonation Determina se l'operazione del servizio impersona l'identità del chiamante.
ReleaseInstanceMode Determina se le istanze del servizio vengono riciclate all'inizio o alla fine della chiamata all'operazione del 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 è dovuto alle chiamate a System.Threading.Thread.Sleep() effettuate nelle operazioni del servizio. Il resto degli esempi di comportamento spiega questi comportamenti in modo più dettagliato. Premere INVIO nella finestra del client per chiudere 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 configurare, compilare ed eseguire l'esempio

  1. Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.

  3. Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.