Quando estamos fazendo testes com serviços WCF, a idéia é sempre criar um serviço e consumí-lo em alguma aplicação cliente para testar se tudo corre como esperado. Mas quando o exemplo é simples, onde queremos testar apenas algumas funcionalidades, podemos utilizar uma técnica para criar o host e também, no mesmo projeto, poderíamos consumir o serviço sem a necessidade de criar um projeto dummy para isso.
As primeiras linhas consistem na criação e configuração do host e, depois que ele estiver aberto, então podemos recorrer ao uso da classe genérica ChannelFactory<TChannel> que podemos informar o contrato que estamos utilizando/testando, o ponto de acesso (endpoint) e o binding. O método CreateChannel utiliza o endpoint e o binding especificado no construtor para criar e estabelecer o canal de comunicação.
string address = “http://localhost:9388“;
using (ServiceHost host = new ServiceHost(typeof(Servico), new Uri[] { new Uri(address) }))
{
host.AddServiceEndpoint(typeof(IContrato), new BasicHttpBinding(), string.Empty);
host.Open();
using (ChannelFactory<IContrato> srv =
new ChannelFactory<IContrato>(new BasicHttpBinding(), new EndpointAddress(address)))
{
Console.WriteLine(srv.CreateChannel().Metodo(“Israel Aece”));
}
}