Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O exemplo ChannelFactory demonstra como um aplicativo cliente pode criar um canal com a ChannelFactory classe em vez de um cliente gerado. Este exemplo baseia-se no Guia de Introdução que implementa um serviço de calculadora.
Observação
O procedimento de instalação e as instruções de build para este exemplo estão localizados no final deste tópico.
Este exemplo usa a classe ChannelFactory<TChannel> para criar um canal para um ponto de extremidade de serviço. Normalmente, para criar um canal para um ponto de extremidade de serviço, você gera um tipo de cliente com a Ferramenta de Utilitário de Metadados do ServiceModel (Svcutil.exe) e cria uma instância do tipo gerado. Você também pode criar um canal usando a ChannelFactory<TChannel> classe, conforme demonstrado neste exemplo. O serviço criado pelo código de exemplo a seguir é idêntico ao serviço na seção Getting Started.
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 do computador 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 no código.
Depois que o canal é criado, as operações de serviço podem ser invocadas da mesma forma que 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, ele precisa primeiro ser convertido em uma 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 não Close. O Close método é originado na ICommunicationObject interface.
// Close the channel.
((IClientChannel)client).Close();
Quando você executa o exemplo, as solicitações e respostas da operação 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 avulsa dos exemplos do Windows Communication Foundation.
Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation. Observe que este exemplo não habilita a publicação de metadados. Primeiro, você deve habilitar a publicação de metadados para este exemplo para regenerar o tipo de cliente.
Para executar o exemplo em uma configuração única ou entre máquinas, siga as instruções em Executando os exemplos do Windows Communication Foundation.
Para executar o exemplo em vários computadores
Substitua "localhost" no código a seguir pelo nome totalmente qualificado do computador que está executando o serviço.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");