Compartilhar via


ChannelFactory<TChannel> Classe

Definição

Uma fábrica que cria canais de diferentes tipos que são usados pelos clientes para enviar mensagens para pontos de extremidade de serviço configurados de várias forma.

generic <typename TChannel>
public ref class ChannelFactory : System::ServiceModel::ChannelFactory, System::ServiceModel::Channels::IChannelFactory<TChannel>
public class ChannelFactory<TChannel> : System.ServiceModel.ChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory<'Channel>
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory
    interface ICommunicationObject
    interface IChannelFactory<'Channel>
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)

Parâmetros de tipo

TChannel

O tipo de canal produzido pela fábrica de canais. Esse tipo deve ser IOutputChannel ou IRequestChannel.

Herança
ChannelFactory<TChannel>
Derivado
Implementações

Exemplos

O exemplo a seguir mostra como criar uma fábrica de canais e usá-la para criar e gerenciar canais.

    BasicHttpBinding binding = new BasicHttpBinding();
    EndpointAddress address = new EndpointAddress("http://localhost:8000/ChannelApp");

    ChannelFactory<IRequestChannel> factory =
        new ChannelFactory<IRequestChannel>(binding, address);

    IRequestChannel channel = factory.CreateChannel();
    channel.Open();
    Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");
    Message reply = channel.Request(request);
    Console.Out.WriteLine(reply.Headers.Action);
    reply.Close();
    channel.Close();
    factory.Close();
}

O exemplo de código a seguir mostra como inserir programaticamente um comportamento do cliente antes da criação do objeto de canal pela fábrica.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
  Public Shared Sub Main()
    Try
      ' Picks up configuration from the config file.
      Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

      ' Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

      Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()

      ' Done with service. 
      wcfClientChannel.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.Read()
    Catch fault As FaultException(Of SampleFault)
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
      Console.Read()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message)
      Console.Read()
    End Try
  End Sub

Comentários

Essa classe genérica permite cenários mais avançados em que há um requisito para criar uma fábrica de canais que pode ser usada para criar mais de um tipo de canal.

Ao adicionar comportamentos programaticamente, o comportamento é adicionado à propriedade Behaviors apropriada no ChannelFactory antes da criação de qualquer canal. Consulte a seção de exemplo para obter um exemplo de código.

Frequentemente, aplicativos cliente ou chamadas (por exemplo, aplicativos de camada intermediária também são aplicativos cliente) usando esse tipo também têm necessidades complexas de gerenciamento de estado, bem como necessidades de desempenho. Para obter mais informações sobre esses cenários, consulte Middle-Tier aplicativos cliente.

Construtores

ChannelFactory<TChannel>()

Inicializa uma nova instância da classe ChannelFactory<TChannel>.

ChannelFactory<TChannel>(Binding)

Inicializa uma nova instância da classe ChannelFactory<TChannel>.

ChannelFactory<TChannel>(Binding, EndpointAddress)

Inicializa uma nova instância da classe ChannelFactory<TChannel> com um endereço de associação e ponto de extremidade especificados.

ChannelFactory<TChannel>(Binding, String)

Inicializa uma nova instância da classe ChannelFactory<TChannel> com uma associação especificada e um endereço remoto.

ChannelFactory<TChannel>(ServiceEndpoint)

Inicializa uma nova instância da classe ChannelFactory<TChannel> que produz canais com um ponto de extremidade especificado.

ChannelFactory<TChannel>(String)

Inicializa uma nova instância da classe ChannelFactory<TChannel> com um nome de configuração de ponto de extremidade especificado.

ChannelFactory<TChannel>(String, EndpointAddress)

Inicializa uma nova instância da classe ChannelFactory<TChannel> associada a um nome especificado para a configuração do ponto de extremidade e o endereço remoto.

ChannelFactory<TChannel>(Type)

Inicializa uma nova instância da classe ChannelFactory<TChannel>.

Propriedades

Credentials

Obtém as credenciais usadas pelos clientes para comunicar um ponto de extremidade de serviço pelos canais produzidos pela fábrica.

(Herdado de ChannelFactory)
DefaultCloseTimeout

Obtém o intervalo de tempo padrão fornecido para que uma operação de fechamento seja concluída.

(Herdado de ChannelFactory)
DefaultOpenTimeout

Obtém o intervalo de tempo padrão fornecido para uma operação aberta ser concluída.

(Herdado de ChannelFactory)
Endpoint

Obtém o ponto de extremidade de serviço ao qual os canais produzidos pela fábrica se conectam.

(Herdado de ChannelFactory)
IsDisposed

Obtém um valor que indica se o objeto de comunicação foi descartado.

(Herdado de CommunicationObject)
State

Obtém um valor que indica o estado atual do objeto de comunicação.

(Herdado de CommunicationObject)
ThisLock

Obtém o bloqueio mutuamente exclusivo que protege a instância de classe durante uma transição de estado.

(Herdado de CommunicationObject)

Métodos

Abort()

Faz com que um objeto de comunicação faça a transição imediatamente de seu estado atual para o estado de fechamento.

(Herdado de CommunicationObject)
ApplyConfiguration(String)

Inicializa a fábrica de canais com os comportamentos fornecidos por um arquivo de configuração especificado e com aqueles no ponto de extremidade de serviço da fábrica de canais.

(Herdado de ChannelFactory)
BeginClose(AsyncCallback, Object)

Inicia uma operação assíncrona para fechar um objeto de comunicação.

(Herdado de CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Inicia uma operação assíncrona para fechar um objeto de comunicação com um tempo limite especificado.

(Herdado de CommunicationObject)
BeginOpen(AsyncCallback, Object)

Inicia uma operação assíncrona para abrir um objeto de comunicação.

(Herdado de CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Inicia uma operação assíncrona para abrir um objeto de comunicação dentro de um intervalo de tempo especificado.

(Herdado de CommunicationObject)
Close()

Faz com que um objeto de comunicação faça a transição de seu estado atual para o estado fechado.

(Herdado de CommunicationObject)
Close(TimeSpan)

Faz com que um objeto de comunicação faça a transição de seu estado atual para o estado fechado dentro de um intervalo de tempo especificado.

(Herdado de CommunicationObject)
CreateChannel()

Cria um canal de um tipo especificado para um endereço de ponto de extremidade especificado.

CreateChannel(Binding, EndpointAddress)

Cria um canal de um tipo especificado que é usado para enviar mensagens para um ponto de extremidade de serviço configurado com uma associação especificada.

CreateChannel(Binding, EndpointAddress, Uri)

Cria um canal de um tipo especificado que é usado para enviar mensagens para um ponto de extremidade de serviço em um endereço de transporte especificado configurado com uma associação especificada.

CreateChannel(EndpointAddress)

Cria um canal que é usado para enviar mensagens para um serviço em um endereço de ponto de extremidade específico.

CreateChannel(EndpointAddress, Uri)

Cria um canal usado para enviar mensagens para um serviço em um endereço de ponto de extremidade específico por meio de um endereço de transporte especificado.

CreateChannel(String)

Cria um canal que é usado para enviar mensagens para um serviço cujo ponto de extremidade está configurado de maneira especificada.

CreateChannelWithActAsToken(SecurityToken)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança em um endereço de ponto de extremidade específico.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança em um endereço de ponto de extremidade específico por meio de um endereço de transporte especificado.

CreateChannelWithIssuedToken(SecurityToken)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança emitido.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança emitido em um endereço de ponto de extremidade específico.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Cria um canal que é usado para enviar mensagens para um serviço com um token de segurança emitido em um endereço de ponto de extremidade específico por meio de um endereço de transporte especificado.

CreateChannelWithOnBehalfOfToken(SecurityToken)

Cria um canal que é usado para enviar mensagens para um serviço com um token de segurança em nome.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Cria um canal que é usado para enviar mensagens para um serviço com um token em nome de segurança em um endereço de ponto de extremidade específico.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Cria um canal que é usado para enviar mensagens para um serviço com um token em nome de segurança em um endereço de ponto de extremidade específico por meio de um endereço de transporte especificado.

CreateDescription()

Cria uma descrição do ponto de extremidade de serviço.

CreateFactory()

Cria a fábrica de canais para o ponto de extremidade atual da fábrica.

(Herdado de ChannelFactory)
EndClose(IAsyncResult)

Conclui uma operação assíncrona para fechar um objeto de comunicação.

(Herdado de CommunicationObject)
EndOpen(IAsyncResult)

Conclui uma operação assíncrona para abrir um objeto de comunicação.

(Herdado de CommunicationObject)
EnsureOpened()

Abrirá a fábrica de canais atual se ela ainda não estiver aberta.

(Herdado de ChannelFactory)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Fault()

Faz com que um objeto de comunicação faça a transição de seu estado atual para o estado com falha.

(Herdado de CommunicationObject)
GetCommunicationObjectType()

Obtém o tipo de objeto de comunicação.

(Herdado de CommunicationObject)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetProperty<T>()

Retorna o objeto digitado solicitado, se presente, da camada apropriada na pilha do canal ou null se não estiver presente.

(Herdado de ChannelFactory)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeEndpoint(Binding, EndpointAddress)

Inicializa o ponto de extremidade de serviço da fábrica de canais com uma associação e um endereço especificados.

(Herdado de ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Inicializa o ponto de extremidade de serviço da fábrica de canais com um ponto de extremidade especificado.

(Herdado de ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Inicializa o ponto de extremidade de serviço da fábrica de canais com um endereço e uma configuração especificados.

(Herdado de ChannelFactory)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
OnAbort()

Encerra a fábrica de canais interno da fábrica de canais atual.

(Herdado de ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Inicia uma operação de fechamento assíncrona na fábrica do canal interno da fábrica de canais atual que tem um objeto de estado associado a ela.

(Herdado de ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Inicia uma operação de abertura assíncrona na fábrica de canais interno da fábrica de canais atual que tem um objeto de estado associado a ela.

(Herdado de ChannelFactory)
OnClose(TimeSpan)

As chamadas fecham na fábrica de canais internos com um tempo limite especificado para a conclusão da operação.

(Herdado de ChannelFactory)
OnClosed()

Invocado durante a transição de um objeto de comunicação para o estado de fechamento.

(Herdado de CommunicationObject)
OnClosing()

Invocado durante a transição de um objeto de comunicação para o estado de fechamento.

(Herdado de CommunicationObject)
OnEndClose(IAsyncResult)

Conclui uma operação de fechamento assíncrona na fábrica de canais interno da fábrica de canais atual.

(Herdado de ChannelFactory)
OnEndOpen(IAsyncResult)

Conclui uma operação aberta assíncrona na fábrica de canais interno da fábrica de canais atual.

(Herdado de ChannelFactory)
OnFaulted()

Insere o processamento em um objeto de comunicação depois que ele faz a transição para o estado com falha devido à invocação de uma operação de falha síncrona.

(Herdado de CommunicationObject)
OnOpen(TimeSpan)

As chamadas são abertas na fábrica de canais interno da fábrica de canais atual com um tempo limite especificado para a conclusão da operação.

(Herdado de ChannelFactory)
OnOpened()

Inicializa uma cópia somente leitura do objeto ClientCredentials para a fábrica de canais.

(Herdado de ChannelFactory)
OnOpening()

Cria a fábrica de canais internos para o canal atual.

(Herdado de ChannelFactory)
Open()

Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto.

(Herdado de CommunicationObject)
Open(TimeSpan)

Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto dentro de um intervalo de tempo especificado.

(Herdado de CommunicationObject)
ThrowIfDisposed()

Gerará uma exceção se o objeto de comunicação for descartado.

(Herdado de CommunicationObject)
ThrowIfDisposedOrImmutable()

Gerará uma exceção se o objeto de comunicação a propriedade State não estiver definida como o estado Created.

(Herdado de CommunicationObject)
ThrowIfDisposedOrNotOpen()

Gera uma exceção se o objeto de comunicação não estiver no estado Opened.

(Herdado de CommunicationObject)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Eventos

Closed

Ocorre quando um objeto de comunicação faz a transição para o estado fechado.

(Herdado de CommunicationObject)
Closing

Ocorre quando um objeto de comunicação faz a transição para o estado de fechamento.

(Herdado de CommunicationObject)
Faulted

Ocorre quando um objeto de comunicação faz a transição para o estado com falha.

(Herdado de CommunicationObject)
Opened

Ocorre quando um objeto de comunicação faz a transição para o estado aberto.

(Herdado de CommunicationObject)
Opening

Ocorre quando um objeto de comunicação faz a transição para o estado de abertura.

(Herdado de CommunicationObject)

Implantações explícitas de interface

IAsyncDisposable.DisposeAsync()

Uma fábrica que cria canais de diferentes tipos que são usados pelos clientes para enviar mensagens para pontos de extremidade de serviço configurados de várias forma.

(Herdado de ChannelFactory)
IDisposable.Dispose()

Fecha a fábrica de canais atual.

(Herdado de ChannelFactory)

Métodos de Extensão

ConfigureAwait(IAsyncDisposable, Boolean)

Configura como as esperas nas tarefas retornadas de um descartável assíncrono serão executadas.

Aplica-se a

Acesso thread-safe

Esse tipo é thread safe.