Destaques

Certificações Prometric 20% e Second Shot LEVE A SUA CARREIRA EM INFORMÁTICA até o SEU PRÓXIMO DESTINO ECONOMIZE ATÉ 20% NOS PACOTES DE CERTIFICAÇÃO DA MICROSOFT COM SEGUNDAS TENTATIVAS GRÁTIS http://bit.ly/bkRfRc

Ler Artigo Completo

Palestra Cloud Computing na ULBRA/PVH Na semana de informática da Ulbra de Porto Velho/RO, tive a oportunidade pelo SENAI/RO de ir debater sobre Cloud Computing & SQL Azure, segue fotos do evento: [caption id="attachment_320" align="aligncenter"...

Ler Artigo Completo

MS lança Visual Studio focado na nuvem Família Visual Studio crescendo, foi divulgado nesta terça-feira, 03 de agosto o lançamento de do Visual Studio LightSwitch, especial para foco em desenvolvimento na Nuvem. Por enquanto será...

Ler Artigo Completo

Palestras no Tech Ed 2010 Disponíveis! Bem vindos ao Tech·Ed 2010 O maior evento técnico brasileiro voltado para profissionais de TI e Desenvolvedores que utilizam a tecnologia Microsoft em seu dia a dia, este ano vem repleto de novidades. Você...

Ler Artigo Completo

Microsoft em Números Se você anda antenado nas notícias do “mundo Microsoft” deve ter ouvido falar na semana passada sobre as vendas do Windows 7 terem alcançado o número de 150 milhões de cópias em 8 meses, o que...

Ler Artigo Completo

  • Prev
  • Next

Windows Communication Foundation

Categoria: .NET Framework, Arquitetura, Geral, Visual C#, WCF

Olá,

Noooossa, quanto tempo… Já fazia quase 100 dias que ninguém postava nada aqui hein?!?!, Que coisa feia… rsrsr.

É galera, graças a Deus todos nos estivemos envolvidos em grandes projetos nos últimos meses que exigiam nosso tempo quase que integral e isso deixou nossa comunidade bem desatualizada. Eis que venho aqui quebrar esse jejum de artigos. :D

E antes de começar o artigo gostaria de parabenizar o Ricardo Machado pois o filho dele Heitor nasceu hoje. Parabéns meu véio, bem vindo ao clube e que deus abençoe voçês. agora vamos lá.

Irei fazer uma breve introdução sobre uma tecnologia que já esta no mercado há três anos, vou falar sobre o Windows Communication Foundation ou WCF para os íntimos.

Bem, como esse artigo é de cunho introdutório, ele terá pouco código, apenas pequenos exemplos tornando a explicação do conceito mais clara. Expondo assim, sua estrutura e conceitos básicos. Segundo o Wikipédia o Windows Communication Foundation é:

“Um modelo de programação unificado e ambiente de execução criado pela Microsoft que visa à construção de aplicações orientadas a serviços cujo objetivo principal é permitir que analistas e desenvolvedores criem aplicações para funcionarem sob o sistema operacional Windows”.

Ou seja, nada mais é do que um Framework para desenvolvimento de sistemas distribuídos que foi lançado como um dos grandes pilares do .NET Framework 3.0 e foi desenvolvido para consolidar e estender as APIs de versões anteriores do Framework. Isso mesmo, essa tecnologia uni e estende as APIs do ASP.NET Web Services.NET  Remoting, Enterprise Services(COM+) e o Message Queue.

O WCF unificou as varias tecnologias de programação distribuída na plataforma da Microsoft em um único modelo, baseando-se na arquitetura orientada a serviço (SOA). Sendo totalmente desacoplado das regras de negócio que serão expostas pelo serviço o WC tornou-se consideravelmente mais fácil de ser desenvolvido e estudado.

Estrutura

A estrutura do WCF não é muito complexa, pois utilizamos conceitos puros de desenvolvimento .NET para criação do contrato e da classe que representara o serviço. O WCF também suporta a utilização de tipos complexos como classes que criamos para atender uma determinada necessidade.

Então você me pergunta: O que é contrato? – o contrato nada mais é do que uma parte do serviço, ou seja, as funcionalidades (Métodos) do serviço que queremos expor para ser consumidos.

O primeiro passo para a criação de um serviço é a definição do ou dos contratos. É o contrato que determinará quais operações estarão expostas, quais informações essas operações precisam para serem executadas e também qual será o tipo de retorno. Em termos programáticos, o contrato nada mais é do que uma Interface que deverá possuir os métodos (apenas suas assinaturas) que serão expostos. Essa interface que servira de contrato obrigatoriamente devera ser decorada com o atributo ServiceContract, caso contrario será gerada uma exceção do tipo InvalidOperationException antes da abertura do Host.

Vale salientar que nem todos os membros expostos pela interface devem ser disponibilizadas para o serviço e justamente por isso todas as operações que serão disponibilizadas devem ser decoradas com o atributo OperationContract, lembrando que o WCF exige termos no mínimo uma operação definida com esse atributo, já que não faz sentido publica um serviço sem nem uma operação a ser executada.

Caso a interface não tenha nenhuma operação definida com este atributo, será gerada uma exceção do tipo InvalidOperationException que também será disparada antes da abertura do Host.

O código abaixo exemplifica uma interface simples:

using System;
using System.ServiceModel;

[ServiceContract]
public interface IContrato
{
 [OperationContract]
 Produto ListarProdutos(string tipo);
}

Como podemos notar, o método ListarProdutos retorna uma instancia da classe Produto. Nesse momento, entram em ação dois novos atributos: DataContract e DataMember, ambos contidos dentro do namespace System.Runtime.Serialization, fornecidos pelo assenmby System.Runtime.Serialization.dll.

O atributo DataContract determina que uma classe poderá ser exposta através de um serviço WCF, e deve ser aplicado a todas as classes que estão referenciadas como parâmetros ou tipo de retorno em uma Interface(Contrato).

Já o atributo DataMember devera ser aplicado ao campos e propriedades que devem ser expostos através do serviço. Esse atributo controlara a visibilidade do campo ou da propriedade para os clientes que consomem o serviço.

O código abaixo exemplifica a classe Produto:

using System;
using System.Runtime.Serialization;

[DataContract]
public class Produto
{
 [DataMember]
 public string Tipo { get; set; }
}

Definindo o contrato do serviço e fazendo todas as configurações necessárias nos tipos que serão expostos, o próximo passo é a criação da classe que representará o serviço. Esta classe devera ter implementado todos os membros expostos pela Interface que define o contrato do serviço, incluído aqueles que não estão marcados com o atributo OperationContract, lembrando que tal implementação é uma imposição da linguagem e não do WCF.  Essa implementação poder conter sua própria regra de negocio, além disso, as classes que representam o serviço podem configurar alguns recursos fornecidos pelo WCF e que estão acessíveis através de behaviors, como por exemplo: transações, sessões, seguranças e muitos outros.

O exemplo abaixo mostra como o WCF desacopla totalmente a regra de negocio de sua API, vemos que a classe que representa o serviço não possui nenhuma configuração do WCF.

using System;

public class Servico : IContrato
{
 public Produto ListarProduto(string tipo)
 {
 return new Produto() { Tipo = tipo };
 }
}

Mas então você deve estar se perguntando:

– Se essa classe possui apenas a regra de negocio não contendo nenhuma configuração do WCF, então como ela ira trabalhar?

E eu respondo:

– Fácil, ela será consumida pelo WCF. E antes que você pergunte como será a configuração para que essa classe fique responsável  por atender as requisições. Eu logo respondo que isso será realizado através do host.

Mas isso fica para o próximo post :p

Hehe… Com já dizia o sábio: “palma palma não priemos canico”… Prometo não demorar mais do que 100 dias para postar o próximo… rsrsrs

Bruno Castrillon
MCTS – Web Application

Switch to our mobile site