Criando um serviço WCF básico

Veja neste artigo um passo a passo do processo de criação de um serviço WCF utilizando Windows Communication Foundation 4.0.

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:

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:


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:


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:

  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.


Artigos relacionados