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
Assicurarsi di aver eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.
Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Building the Windows Communication Foundation Samples.
Per eseguire l'esempio in un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.