Procedura: implementare un'operazione del servizio asincrona
Nelle applicazioni Windows Communication Foundation (WCF), un'operazione del servizio può essere implementata in modo sincrono o asincrono senza imporre al client la modalità di chiamata. È possibile, ad esempio, che operazioni del servizio asincrone vengano chiamate in modo sincrono e che operazioni del servizio sincrone vengano chiamate in modo asincrono. Per un esempio in cui viene illustrato come chiamare in modo asincrono un'operazione in un'applicazione client, vedere Procedura: chiamare operazioni del servizio WCF in modo asincrono. Per ulteriori informazioni sulle operazioni sincrone e asincrone, vedere Progettazione dei contratti di servizio e Operazioni sincrone e asincrone.
Implementazione di un'operazione del servizio in modo asincrono
Nel contratto di servizio, dichiarare una coppia di metodi asincroni in base alle linee guida di progettazione asincrona .NET. Il metodo Begin prende un parametro, un oggetto callback e un oggetto di stato e restituisce un System.IAsyncResult e un metodo End corrispondente che prende un System.IAsyncResult e restituisce il valore restituito. Per ulteriori informazioni sulle chiamate asincrone, vedere Asynchronous Programming Design Patterns.
Contrassegnare il metodo Begin della coppia di metodi asincroni con l'attributo System.ServiceModel.OperationContractAttribute e impostare la proprietà System.ServiceModel.OperationContractAttribute.AsyncPattern su true. Nel codice seguente, ad esempio, vengono eseguiti i passaggi 1 e 2.
Implementare la coppia di metodi Begin/End nella classe del servizio in base alle linee guida di progettazione asincrona. Nell'esempio di codice seguente viene illustrata un'implementazione nella quale una stringa viene scritta nella console sia nella parte Begin che nella parte End dell'operazione del servizio asincrona e viene restituito al client il valore restituito dell'operazione End. Per un esempio completo di codice, vedere la sezione degli esempi.
Esempio
Negli esempi di codice seguenti viene illustrato:
- Un'interfaccia del contratto di servizio con:
- Un'operazione
SampleMethod
sincrona. - Un'operazione
BeginSampleMethod
asincrona. - Una coppia di operazioni
BeginServiceAsyncMethod
/EndServiceAsyncMethod
asincrone.
- Un'operazione
- Un'implementazione del servizio tramite un oggetto System.IAsyncResult.
Vedere anche
Concetti
Progettazione dei contratti di servizio
Operazioni sincrone e asincrone