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.
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:
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:
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”.
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:
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:
- Mude o namespace de HelloWorldService para MyWCFServices.
- Faça a classe herdar a interface criada (IHelloWorldService)
- 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.