Neste artigo, vamos fugir um pouco da parte teórica e começar já na parte prática do artigo, pois os exemplos que serão criados irão demonstrar com clareza os pontos teóricos sobre a tecnologia WCF (Windows Comunication Foundation).

Utilizando o Visual Studio 2010, vamos construir um aplicativo HelloWorld em WCF. Realizaremos os seguintes passos:

  • Criar o projeto e solução;
  • Criar a interface do contrato de serviço WCF;
  • Implementar o serviço WCF.

Vamos criar o serviço WCF manualmente a partir do zero, o que significa que não vamos utilizar qualquer template do Visual Studio para criar o serviço. Também vamos criar o aplicativo host e o aplicativo cliente manualmente, o que inclui gerar os arquivos de configuração de proxy manualmente utilizando a ferramenta svcutils.exe.

No mundo real, é recomendável utilizar os templates do Visual Studio para ajudar com essas tarefas, mas para efeito didático vamos realizar esse trabalho de forma manual, o que nos dá uma ótima oportunidade de entender o que realmente é o WCF.

Criando a solução e o projeto HelloWorld

Antes de podermos construir o serviço WCF, precisamos criar uma solução para os nossos projetos. O leitor fique à vontade para criar as pastas nos diretórios de sua preferência. Para este artigo utilizaremos o seguinte diretório: “C:\Artigos\2013\WCF\HelloWorld”.

Teremos uma subpasta para a solução e abaixo desta pasta de solução, teremos uma subpasta para cada projeto.

OBS: Você não precisa criar manualmente esses diretórios através do Windows Explorer, o Visual Studio irá criá-los automaticamente quando você cria as soluções e os projetos.

Agora, siga estes passos para criar o nosso primeiro projeto HelloWorld:

  • Inicie o Visual Studio 2010.
  • Vá ao menu File | New | Project. A janela de diálogo New Project será exibida.
  • Selecione Other Project Types | Visual Studio Solutions e escolha o template Blank Solution.
  • Nomeie como HelloWorld.
Criando a Solução

Figura 1: Criando a Solução

Ao clicar em OK o Visual Studio irá criar uma solução vazia como demonstra a figura a seguir:

Solução criada

Figura 2: Solução criada

No Solution Explorer, clique com botão direito sobre a solução e selecione Add | New Project, no menu de contexto.

A tela de criação de projetos será apresentada. Procure o template de projeto “Class Library”, que fica no menu “Visual C#” | “Windows”. Nomeie o projeto como “HelloWorldService” e clique no botão OK:

Criando a Class Library HelloWorldService

Figura 3: Criando a Class Library HelloWorldService

Você deve ter notado que já há um template para o WCF Service Application no Visual Studio 2010. Neste artigo não vamos usar este template. Em vez disso, vamos criar tudo por nós mesmos para que você saiba qual é o propósito de cada template. Esta é uma excelente maneira para entender esta tecnologia.

Depois de clicar no botão OK, o Visual Studio irá criar vários arquivos para você. O primeiro arquivo é o arquivo de projeto. Este é um arquivo XML no diretório do projeto, e é chamado HelloWorldService.csproj.

O Visual Studio também cria um arquivo de classe vazia, chamado Class1.cs. Mais tarde vamos mudar esse nome padrão para um mais significativo, e alterar o seu Namespace para o nosso próprio.

Temos agora uma nova solução e um projeto. Em seguida, vamos desenvolver e construir este serviço. Mas, antes de prosseguir, precisamos fazer duas modificações:

  • Clique no botão Show All Files na barra de ferramentas da Solution Explorer. É o segundo botão da esquerda. Ao clicar neste botão serão mostrados todos os arquivos e diretórios do disco rígido do projeto, mesmo os itens que não estão incluídos no projeto.
  • Altere o namespace padrão do projeto. A partir do Solution Explorer, clique com botão direito sobre o projeto HelloWorldService, selecione Properties no menu de contexto. Você vai ver a caixa de diálogo Properties. Na guia Application, altere o namespace padrão (Default Namespace) para “MyWCFServices”.
Alterando a namespace padrão do projeto HelloWorldService

Figura 4: Alterando a namespace padrão do projeto HelloWorldService

Por último, a fim de desenvolver um serviço WCF, precisamos adicionar uma referência ao namespace System.ServiceModel ao projeto.

Clicando com o botão direito sobre o projeto, clique em Add reference. Na Aba .Net se encontra a referência que precisamos:

Adicionando a referência System.ServiceModel

Figura 4: Adicionando a referência System.ServiceModel

Criando a Interface de Contrato

Vamos agora criar uma Interface, clique com o botão direito no projeto na Solution Explorer e clique em “Add new item” e selecione o tipo Interface, nomeie como IHelloWorldService.

Agora, um arquivo de interface vazio foi adicionado ao projeto. Siga os passos abaixo para personalizá-lo.

A) Adicione uma instrução usando:

using System.ServiceModel;

B) Adicionar um atributo ServiceContract à interface. Isto irá designar a interface como uma interface de contrato de serviço WCF.

[ServiceContract]

C) Adicionar um método GetMessage à interface. Este método vai ter uma string como entrada e retornar outra string como resultado. Ele também tem um atributo, OperationContract.

[OperationContract]String GetMessage (String nome);

D) Mudar a interface para pública.

O Código da Interface se encontra a seguir:

Listagem 1: Iterface IHelloWorldService


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace MyWCFServices
{
    [ServiceContract]
    public interface IHelloWorldService
    {
        [OperationContract]
        String GetMessage(String name);
    }
}

Implementando o contrato de serviço HelloWorldService

Agora que nós definimos uma interface de contrato de serviços, temos de implementá-la. Para este fim, vamos voltar a usar o arquivo de classe vazia que o Visual Studio criou, e modificá-lo para torná-lo a classe de implementação do nosso serviço.

Antes de modificar este arquivo, temos de mudar o nome. Na janela Solution Explorer, clique com botão direito sobre os arquivos Class1.cs, selecione Rename no menu de contexto, e digite HelloWorldService.cs.

Em seguida, siga os passos abaixo para personalizar este arquivo de classe:

  1. Mude o namespace de HelloWorldService para MyWCFServices.
  2. Faça a classe herdar a interface criada (IHelloWorldService)
  3. Adicione um método GetMessage para a classe. Este é um método simples que retorna uma string.

Listagem 2: Classe HelloWorldService.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyWCFServices
{
    public class HelloWorldService : IHelloWorldService
    {
        public String GetMessage(String name)
        {
            return "Hello world from " + name + "!";
        }
    }
}

Agora dê um Build no projeto. Se não houver nenhum erro de compilação, isso significa que você criou com sucesso o seu primeiro serviço WCF.

Em seguida, vamos hospedar este serviço WCF em um ambiente e criar uma aplicação cliente para consumi-lo.

Neste artigo criamos um serviço WCF básico, que posteriormente poderá ser hospedado e consumido por aplicações clientes.

Espero que com esses exemplos práticos o leitor tenha a oportunidade de conhecer como o WCF funciona e as etapas que precisamos realizar para utilizar essa tecnologia.

Com isso chegamos ao fim de mais um artigo. Espero que seja útil, até mais e abraços.