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 LimaApresentar 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
http://msdn.microsoft.com/winfx/reference/communication/default.aspx?pull=/library/en-us/dnlong/html/wcfroadmap.asp
http://msdn.microsoft.com/winfx/technologies/communication/default.aspx?pull=/library/en-us/dnlong/html/wcfarch.asp
http://msdn.microsoft.com/windowsvista/support/faqs/communication/default.aspx