Desenvolvimento - C#

Windows Communication Foundation – Uma abordagem teórica

O autor pretende com este artigo apresentar o Windows Communication Foundation de forma introdutória e mostrar o objetivo da tecnologia.

por Leonardo Bruno Bentes Lima



Objetivos:

Apresentar o Windows Communication Foundation de forma introdutória e mostrar o objetivo da tecnologia.

Aplica-se a:

Desenvolvimento de aplicações distribuídas utilizando a plataforma .NET e SOA.

Introdução

Com o advento da plataforma .NET, a tarefa de criar aplicações distribuídas ficou menos penosa. Seja pela facilidade de criar e consumir Web Services, pela performance e flexibilidade gerenciada do .NET Remoting ou pela robustez do Enterprise Service (COM+), não esquecendo o velho MSMQ.

Mas se temos tudo isso à nossa disposição, por que mudar? Na próxima seção mostrarei esses motivos e tentarei explicar de forma acessível o que realmente é o WCF.

Por que mudar?

Quando a Microsoft anunciou o desenvolvimento do Windows Longhorn (Atualmente a versão client chama-se Windows Vista) e sua API de desenvolvimento WinFx (Atualmente .NET 3.0) composto basicamente e originalmente por: Indigo (Atual Windows Communication Foundation), Avalon (Atual Windows Presentation Foundation) e WinFS, surgiram muitas dúvidas em relação a plataforma .NET, principalmente devido ao WCF. Se já temos tantas tecnologias a nossa disposição, qual o objetivo da Microsoft? É mais uma tecnologia de comunicação para escolhermos?

Na verdade a Microsoft quis com o WCF convergir todas as tecnologias de comunicação existentes em uma única tecnologia que permitisse ao desenvolvedores terem os mesmos recursos de antes e não precisarem mais se preocupar com as especificidades de cada uma delas. Por exemplo: Se você decidir usar ASP.NET Web Service, terá que ter em mente as limitações dos protocolos que você a disposição (onde os principais são HTTP e SOAP). Caso decida usar .NET Remoting, terá que saber diante mão que sua aplicação não terá interoperabilidade com outras plataformas, enfim, seja qual for a escolha tecnológica, a linha de desenvolvimento terá que se adaptar à tecnologia escolhida, além dessa decisão ter que ser tomada antes do início do desenvolvimento. Como veremos na próxima seção, com o WCF o desenvolvedor tem que se preocupar apenas em desenvolver a lógica. As questões relativas a forma de acesso, protocolos, interoperabilidade, etc. são apenas configurações que podem ser feitas a qualquer momento. A palavra chave é convergência.

O que é o WCF

O WCF é um framework que nos possibilita construir e rodar aplicações orientadas a serviço, e como principais benefícios temos: modelo de programação unificado, suporte a SOA (Service Oriented Architecture), neutralidade de protocolo, interoperabilidade baseada em padrões de mercado, segurança integrada, arquitetura flexível e extensível, entre outras características.

Vejamos algumas características com um pouco mais de detalhe.

  • Modelo de programação unificado: As características das tecnologias que me referi na seção anterior continuam presentes no WCF, e podemos utilizá-las de forma mais prática e robusta. Para resumir são elas:
    • .NET Remoting, para aplicações .NET nas duas pontas
    • ASP.NET Web Services, que nos fornece interoperabilidade acima de tudo
    • Enterprise Service, nos fornece suporte a sincronização, transações distribuídas, segurança integrada, etc
    • WSE, estende o ASP.NET Web Service para suportar padrões abertos conhecidos como especificações WS-*
    • MSMQ, nos fornece suporte à mensagens assíncronas como umas das características principais

  • SOA: O WCF é baseado nos princípios do SOA, que entre outras coisas prega o baixo acoplamento entre os serviços, utilização de contratos e uso de protocolos padrão de mercado

  • Neutralidade de protocolo: O WCF possui alguns bindings(conjunto de informações configuráveis que dizem entre outras coisas qual o protocolo usado na comunicação com o serviço) pré-definidos e um único serviço pode ser acessado por múltiplos protocolos simultaneamente.

Um serviço WCF é composto por três partes: Service Class, Host e EndPoint

Service Class: Como o nome sugere, é a classe que irá expor seus métodos no serviço

Host: Todo serviço WCF precisa ser hospedado em um host que pode ser o IIS, Windows Service, WAS ou outro processo

EndPoint: Composto por três partes fundamentais, representa uma visão do serviço, expondo como e onde o serviço pode ser acessado. São elas:

Address: É basicamente um URI, um Identity e um Header para localizar o serviço Binding: Determina como o serviço será acessado. O WCF já tem alguns bindings pré-definidos.

Contract: É a definição do que o EndPoint expõe para o exterior.

Portanto, um único serviço WCF pode ser acessado de várias maneiras de acordo com a configuração do EndPoint. Por exemplo: Um serviço pode ser configurado para ser acesso via HTTP/SOAP e TCP/SOAP binário. Então se o cliente deseja interoperabilidade usa a primeira opção, caso deseje performance usa a segunda e tudo isso sem digitar uma linha de código no seu Service Class ou no Client.

Conclusão:

Neste primeiro artigo sobre WCF quis dar uma visão geral da tecnologia e clarear algumas dúvidas em relação aos objetivos do WCF e em que cenário ele pode ser usado. Nos próximos artigos irei abordar o tema de forma mais técnica e prática. Até lá.

Referências

  • Windows Communication Foundation Roadmap
    http://msdn.microsoft.com/winfx/reference/communication/default.aspx?pull=/library/en-us/dnlong/html/wcfroadmap.asp

  • Windows Communication Foundation Architecture Overview
    http://msdn.microsoft.com/winfx/technologies/communication/default.aspx?pull=/library/en-us/dnlong/html/wcfarch.asp

  • Windows Communication Foundation - FAQ
    http://msdn.microsoft.com/windowsvista/support/faqs/communication/default.aspx
  • Leonardo Bruno Bentes Lima

    Leonardo Bruno Bentes Lima - Microsoft Most Valuable Professional, consultor em tecnologia .NET. Possui ampla experiência no desenvolvimento e analise de sistemas, dos quais 6 anos na plataforma .Net. Palestrante em diversos eventos sobre tecnologia .NET no Brasil e exterior. Atualmente trabalha Ivia informática (www.ivia.com.br).