.NET

14 jun, 2007

Uso simplificado do WCF – Windows Communication Foundation

Publicidade

O WCF (Windows Communication Foundation) faz parte do novo Microsoft.Net 3.0, tendo como finalidade permitir a comunicação em aplicações distribuídas. Para ilustrar seu funcionamento, darei um exemplo bem versátil em c de sua utilização, sendo que, logicamente, poderá adaptá-lo a suas necessidades, como acessar bases de dados, etc. Teremos, como exemplo, uma aplicação cliente que o usuário digita qualquer frase e tal informação vai para o servidor e é devolvida novamente ao cliente.

Para utilizar tal exemplo você deverá:

  • Fazer download e Instalar o Microsoft.Net 3.0, no site;
  • Fazer download e Instalar, no mínimo, o Visual Studio 2005 Express (que será usado no exemplo), no site;
  • Fazer download e Instalar, o Visual Studio Extension , no site;
Após isso, dê os seguintes passos:

Passo 1: Acesse o Visual Studio Express 2005. No menu File, clique em New Project, e aparecerá a janela da Figura 1..

Passo 2: Clique no WCF Service Library (onde está marcado), e coloque o nome WCF.Contrato

Passo 3: Vá para o Solution Explorer e aperte o botão direito do mouse sobre References e escolha Add References, como na figura 2.

Passo 4: Na aba .Net, localize System.ServiceModel e depois, clique em OK, de acordo com a figura 3.

Passo 5: Digite o código abaixo:

using System;
using System.ServiceModel;

namespace WCF.Contrato
{
    [ServiceContract]
    public interface IService
     {
        [OperationContract]
         string Ping(string nome);
    }
}

Passo 6: Entre no menu File, depois clique em SalveAll e salve sua aplicação, com o nome WCF.Contrato. Depois vá ao menu Build e clique em Build Solution. (Para facilitar, será usado assemblies privados)

Passo 7: Acesse o menu File, clique em Close Solution e, nesse mesmo menu, clique em New Project, escolhendo WCF Service Library e selecionando o nome WCF.Servidor

Passo 8: Vá para o Solution Explorer e aperte o botão direito do mouse sobre References. Escolha Add References.

Passo 9: Na aba .Browser, procure a pasta WCF.Contrato em seu computador, clique na pasta Bin, depois na pasta Release e selecione o arquivo WCF.Contrato.dll. Feito isso, clique em OK, de acordo com a figura 4.

Passo 10: Vá para o Solution Explorer e aperte o botão direito do mouse sobre References. Escolha Add References.

Passo 11: Na aba .Net, localize System.ServiceModel. Clique em OK.

Passo 12: Digite o código abaixo:

using System;
using System.ServiceModel;
using WCF.Contrato;

namespace WCF.Servidor
{
    public class ServiceImplementation : WCF.Contrato.IService
    {
        public string Ping(string nome)
        { 
          Console.WriteLine("Recebendo do cliente: " nome);
          return nome; 
        }  
    }
}

Passo 13: Entre no menu File, depois clique em SalveAll e salve sua aplicação, com o nome WCF.Servidor. Feito isso, vá ao menu Build e clique em Build Solution.

  • Obs: Os passos 14 até 21, fazem parte da aplicação servidora:

Passo 14: Acesse o menu File e clique em Close Solution. Nesse mesmo menu, clique em New Project, escolha Console Application e coloque o nome Servidor.

Passo 15: Vá para o Solution Explorer e aperte o botão direito do mouse sobre References e escolha Add References.

Passo 16: Na aba .Browser, procure a pasta WCF.Servidor em seu computador, clique na pasta Bin, depois na pasta Release e selecione os arquivos WCF.Contrato.dll e WCF.Servidor.dll.

Passo 17: Vá para o Solution Explorer e aperte o botão direito do mouse sobre References e escolha Add References.

Passo 18: Na aba .Net, localize System.ServiceModel e depois, clique em OK.

Passo 19: Digite o código abaixo:

using System;
using System.Text;
using WCF.Contrato; 
using WCF.Servidor; 
using System.ServiceModel;

namespace Servidor
{
    class Program
    {
        static void Main(string args)
        {
            ServiceHost svh = new ServiceHost(typeof(ServiceImplementation));
              svh.AddServiceEndpoint(typeof(WCF.Contrato.IService), new  
              NetTcpBinding(), "net.tcp://localhost:");
            svh.Open();
            Console.WriteLine("Rodando Servidor...");
            Console.ReadLine();
            svh.Close();
        }
    }
}

Passo 20: Entre no menu File > SalveAll e salve sua aplicação, com o nome WCF.Servidor. Depois vá ao menu Build e clique em Build Solution.

Passo 21: Não feche sua aplicação servidora WCF.Servidor, pois você irá rodá-la em breve. Abra outro Visual Studio Express, para você escrever o código da aplicação cliente.

  • Obs: Os passos 22 até 27, fazem parte da aplicação cliente:

Passo 22: No outro Visual Studio Express, que você abriu, acesse o menu File e clique em New Project. Escolha Console Application e coloque o nome Cliente.

Passo 23: Vá para o Solution Explorer e aperte o botão direito do mouse sobre References. Escolha Add References.

Passo 24: Na aba .Browser, procure a pasta WCF.Servidor em seu computador, clique na pasta Bin, depois na pasta Release e selecione os arquivos WCF.Contrato.dll e WCF.Servidor.dll.

Passo 25: Vá para o Solution Explorer e aperte o botão direito do mouse sobre References e escolha Add References.

Passo 26: Na aba .Net, localize System.ServiceModel e clique em OK.

Passo 27: Digite o código abaixo:

using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using WCFSimple.Contrato;
using WCFSimple.Servidor;

namespace Cliente
{
  class Program
  {
    static void Main(string args)
    {
      try
      {
        ChannelFactory<WCF.Contrato.IService> scf = new  
        ChannelFactory<WCF.Contrato.IService>(new NetTcpBinding(),"net.tcp://localhost:");
                
         WCF.Contrato.IService s = scf.CreateChannel();

         while (true)
         {
          Console.Write("Enviar para o Servidor: ");
          string nome = Console.ReadLine();
          string resposta = s.Ping(nome);
          Console.WriteLine("Resposta vinda do servidor: "  resposta);
         }
      }
      catch (System.Exception)
      {
        Console.WriteLine("Servidor fora do ar");
        Console.ReadLine();
      }
    }
  }
}
  • Agora é só testar a aplicação Servidora e Cliente.

Passo 28: Entre no Visual Studio, onde está a aplicação servidora, clique em Debug e, logo depois, em Start Debugging. Deixe sua aplicação servidora rodando, vá para o Visual Studio da aplicação cliente e faça o mesmo.

Após isso, você perceberá que tudo que for digitado na aplicação cliente irá pingar no servidor e será devolvido o mesmo conteúdo. As figuras 5 e 6 ilustram o funcionamento desta aplicação WCF.

Espero que este artigo ajude, você desenvolvedor, caso necessite desenvolver aplicações em .Net 3.0 usando WCF.

Um abraço pessoal, e até os próximos artigos.