o-spacerun: yes">

capnet43.jpg

Clique aqui para ler todos os artigos desta edição

.NET 3.0

WCF

Windows Communication Foundation

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·       O que é Windows Communication Foundation;

·       Fundamentos da computação distribuída com WCF;

·       Address, Binding, Contract;

·       Criando servidores WCF e clientes.

WCF, .NET 3.0, Visual Studio 2005, C#.

 

Muito tem se falado em .NET Framework 3.0 e seus pilares: WF, WCF, WPF e CardSpace. Neste artigo, estudaremos como funciona um desses pilares: o Windows Communication Foundation, entendendo sua arquitetura e funcionamento. No final criaremos um pequeno aplicativo utilizando os conceitos aqui apresentados.

Não vou me aprofundar na teoria referente ao Windows Communication Foundation, pois existem artigos muito bons na MSDN explicando detalhadamente toda essa teoria. Para facilitar a leitura, sempre associe Windows Communication Foundation com a sigla WCF.

Computação distribuída e WCF

Antes do .NET 3.0, existiam diversas tecnologias para desenvolvimento de aplicações distribuídas. Podemos citar aqui as mais comuns: Web Services, .NET Remoting, COM+ Enterprise Services e Message Queue.

Cada uma delas resolvia (e ainda resolvem) uma série de problemas de comunicação inter-processos, mas perceba que para cada implementação devemos conhecer uma série de especificações referente a cada tecnologia. A idéia do WCF é reunir algumas dessas tecnologias em um único framework otimizado, seguro, interoperável e com diversos novos recursos.

O WCF foi projetado baseado em regras da SOA (Arquitetura Orientada a Serviços) onde alguns dos princípios são: abstração, reusabilidade, baixo acoplamento entre serviço e cliente, contratos e comunicação através de mensagens.

Não entraremos em detalhes sobre SOA, mas recomendo que o leitor estude algo, pois essa é uma forte tendência em desenvolvimento e distribuição de software. Veja um exemplo na Figura 1 do processo de comunicação.

 

Figura 1. Comunicação através de mensagens

Através da ilustração, percebemos que a troca de mensagens pode ser feita entre serviços/clientes e serviços/serviços. Essa troca de mensagens é uma das principais características da arquitetura SOA.

Um serviço pode ser descrito como uma aplicação que fornece um grupo de funcionalidades que outras aplicações ou serviços podem utilizar e tem a característica de ser autônomo, ou seja, um serviço não precisa depender de outro serviço para funcionar.

O WCF utiliza mensagens para se comunicar. Mensagens são conjuntos de dados trocados entre o cliente e serviço. As mensagens são transferidas usando o protocolo SOAP, permitindo assim a utilização do WCF como serviço para outras plataformas.

Quando um serviço WCF se comunica com outras plataformas, é utilizado SOAP em formato XML, e quando essa comunicação ocorre entre processos WCF, a mensagem é codificada utilizando formato binário, garantindo assim excelente performance.

Podemos utilizar como protocolos de transporte: IPC, TCP, HTTP, P2P e Message Queue. Neste artigo, utilizaremos o protocolo TCP para comunicação. Toda a infra-estrutura de classes disponíveis no WCF está no namespace System.ServiceModel e as classes utilizadas para serialização estão em System.Runtime.Serialization.

Composição de um serviço WCF

Todo serviço WCF é composto por três partes: classe de serviço (Service Class), ambiente para hospedagem (Host) e um ou mais pontos de conexão (Endpoint). A classe de serviço contém os métodos que desejamos expor para as aplicações externas. Essa classe deverá implementar uma interface que servirá como “contrato” para o nosso serviço.

Devemos marcar essa interface com o atributo [ServiceContract] e cada um dos métodos que desejarmos publicar com o atributo [OperationContract]. Veja na Listagem 1 um exemplo.

 

Listagem 1. Definição da interface (contrato) do serviço

[ServiceContract]

public interface IServicoTeste

{

  [OperationContract]

  void DizerOla(string nomePessoa);

}

 

Depois de criada a interface, criamos uma classe que implemente essa interface. Veja um exemplo na Listagem 2.

 

Listagem 2. Implementação da classe de serviço

public class Servico : IServicoTeste

{

  public void DizerOla(string nomePessoa)

  {

    Console.WriteLine("Olá " + nomePessoa);

  }

}

 

O ambiente para hospedagem (Host) é responsável pelo fornecimento de instâncias da classe de serviço para os clientes ou outros serviços, afinal a classe de serviço não pode funcionar sozinha. Veja na Figura 2 um exemplo de como funciona o ambiente de hospedagem.

 

...

Quer ler esse conteúdo completo? Tenha acesso completo