Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O exemplo ChannelFactory demonstra como um aplicativo cliente pode criar um canal com a ChannelFactory classe em vez de um cliente gerado. Este exemplo é baseado nos Primeiros Passos, que implementa um serviço de calculadora.
Observação
O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.
Este exemplo utiliza a classe ChannelFactory<TChannel> para criar um canal para um endpoint de serviço. Normalmente, para criar um canal para um ponto de extremidade de serviço, você gera um tipo de cliente com a ServiceModel Metadata Utility Tool (Svcutil.exe) e cria uma instância do tipo gerado. Você também pode criar um canal usando a ChannelFactory<TChannel> classe, como demonstrado neste exemplo. O serviço criado pelo código de exemplo a seguir é idêntico ao serviço em Introdução.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");
WSHttpBinding binding = new WSHttpBinding();
ChannelFactory<ICalculator> factory = new
ChannelFactory<ICalculator>(binding, address);
ICalculator channel = factory.CreateChannel();
Importante
Se você estiver executando este exemplo em um cenário entre máquinas, deverá substituir "localhost" no código anterior pelo nome totalmente qualificado da máquina que está executando o serviço. Este exemplo não usa a configuração para definir o endereço do ponto de extremidade, portanto, isso deve ser feito em código.
Uma vez que o canal é criado, as operações de serviço podem ser invocadas como com um cliente gerado.
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = channel.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
Para fechar o canal, deve primeiro ser convertido numa interface IClientChannel. Isso ocorre porque o canal como gerado é declarado no aplicativo cliente usando a ICalculator interface, que tem métodos como Add e Subtract mas não Close. O Close método tem origem na ICommunicationObject interface.
// Close the channel.
((IClientChannel)client).Close();
Quando você executa o exemplo, as solicitações de operação e as respostas são exibidas na janela do console do cliente. Pressione ENTER na janela do cliente para desligar o aplicativo cliente.
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.
Para configurar, compilar e executar o exemplo
Verifique se você executou o procedimento de instalação do One-Time para os exemplos do Windows Communication Foundation.
Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation. Observe que este exemplo não habilita a publicação de metadados. Você deve primeiro habilitar a publicação de metadados para este exemplo para regenerar o tipo de cliente.
Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.
Para executar a máquina cruzada de amostra
Substitua "localhost" no código a seguir pelo nome totalmente qualificado da máquina que está executando o serviço.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");