Procedura: accedere ai servizi con un contratto duplex

Una funzionalità di Windows Communication Foundation (WCF) è la possibilità di creare un servizio che utilizza un modello di messaggistica duplex. Questo modello consente a un servizio di comunicare con il client tramite un callback. In questo argomento vengono illustrati i passaggi per creare un client WCF in una classe client che implementa l'interfaccia di callback.

Un'associazione duale espone l'indirizzo IP del client al servizio. Nel client è necessario implementare un meccanismo di protezione in grado di garantire che il client si connetta solo a servizi ritenuti attendibili.

Per un'esercitazione sulla creazione di servizi e client WCF di base, vedere Esercitazione introduttiva.

Per accedere a un servizio duplex

  1. Creare un servizio che contiene due interfacce. La prima interfaccia è per il servizio, la seconda è per il callback. Per ulteriori informazioni sulla creazione di un servizio duplex, vedere Procedura: creare un contratto duplex.

  2. Eseguire il servizio.

  3. Utilizzare lo ServiceModel Metadata Utility Tool (Svcutil.exe) per generare contratti (interfacce) per il client. Per informazioni su tale procedura, vedere Procedura: creare un client di Windows Communication Foundation.

  4. Implementare l'interfaccia di callback nella classe client, come illustrato nell'esempio seguente.

    public class CallbackHandler : ICalculatorDuplexCallback
    {
        public void Result(double result)
        {
            Console.WriteLine("Result ({0})", result);
        }
        public void Equation(string equation)
        {
            Console.WriteLine("Equation({0})", equation);
        }
    }
    
    Public Class CallbackHandler 
    Implements ICalculatorDuplexCallback
       Public Sub Result (ByVal result As Double)
          Console.WriteLine("Result ({0})", result)
       End Sub
        Public Sub Equation(ByVal equation As String)
            Console.Writeline("Equation({0})", equation)
        End Sub
    End Class
    
  5. Creare un'istanza della classe InstanceContext. Il costruttore richiede un'istanza della classe client.

    InstanceContext site = new InstanceContext(new CallbackHandler());
    
    Dim site As InstanceContext = New InstanceContext(new CallbackHandler())
    
  6. Creare un'istanza del client WCF utilizzando il costruttore che richiede un oggetto InstanceContext. Il secondo parametro del costruttore è il nome di un endpoint contenuto nel file di configurazione.

    CalculatorDuplexClient wcfClient = 
    new CalculatorDuplexClient(site, "default")
    
    Dim wcfClient As New CalculatorDuplexClient(site, "default")
    
  7. Chiamare i metodi del client WCF secondo le esigenze.

Esempio

Nell'esempio di codice seguente viene descritto come creare una classe client che accede a un contratto duplex.

Protezione

Vedere anche

Attività

Procedura: creare un contratto duplex
Procedura: creare un client di Windows Communication Foundation
Procedura: utilizzare ChannelFactory

Altre risorse

Esercitazione introduttiva
ServiceModel Metadata Utility Tool (Svcutil.exe)