Ler em inglês

Partilhar via


Como: Usar o ChannelFactory

A classe genérica ChannelFactory<TChannel> é usada em cenários avançados que exigem a criação de uma fábrica de canais que pode ser usada para criar mais de um canal.

Para criar e usar a classe ChannelFactory

  1. Crie e execute um serviço WCF (Windows Communication Foundation). Para obter mais informações, consulte Projetando e implementando serviços, Configurando serviços e Serviços de hospedagem.

  2. Use a ServiceModel Metadata Utility Tool (Svcutil.exe) para gerar o contrato (interface) para o cliente.

  3. No código do cliente, use a ChannelFactory<TChannel> classe para criar vários ouvintes de ponto de extremidade.

Exemplo

using System;
using System.ServiceModel;

// This code generated by svcutil.exe.
[ServiceContract()]
interface IMath
{
    [OperationContract()]
     double Add(double A, double B);
}

public class Math : IMath
{
    public double Add(double A, double B)
    {
        return A + B;
    }
}

public sealed class Test
{
    static void Main()
    {
        // Code not shown.
    }

    public void Run()
    {
        // This code is written by an application developer.
        // Create a channel factory.
        BasicHttpBinding myBinding = new BasicHttpBinding();
    
        EndpointAddress myEndpoint = new EndpointAddress("http://localhost/MathService/Ep1");

        ChannelFactory<IMath> myChannelFactory = new ChannelFactory<IMath>(myBinding, myEndpoint);

        // Create a channel.
        IMath wcfClient1 = myChannelFactory.CreateChannel();
        double s = wcfClient1.Add(3, 39);
        Console.WriteLine(s.ToString());
    ((IClientChannel)wcfClient1).Close();

        // Create another channel.
        IMath wcfClient2 = myChannelFactory.CreateChannel();
        s = wcfClient2.Add(15, 27);
        Console.WriteLine(s.ToString());
    ((IClientChannel)wcfClient2).Close();
    myChannelFactory.Close();
    }
}