Introdução ao Windows Communication Foundation

Windows Communication Foundation, ou simplemente WCF, foi introduzido ao .NET Framework na versão 3.0 e é um conjunto de APIs responsável pela comunicação de aplicações distribuídas.

Pensando em tecnologia Microsoft, historicamente temos várias tecnologias para comunicação entre sistemas, por exemplo, DCOM, que pode ser feito através de Component Services ou manualmente, MSMQ, Web Services e .Net Remoting.

Todas as tecnologias citadas acima possuem características próprias e se adequam melhor para determinados cenários de uso, mas elas não são facilmente interoperáveis. Se eu tenho determinada funcionalidade rodando com MSMQ e preciso que ela também funcione com Web Services, com certeza essa adequação não será um trabalho fácil, sendo necessário isolar a lógica de negócio do código que gerencia a comunicação através de MSMQ para, posteriormente, criar uma camada de Web Services em cima da lógica de negócio recém isolada. Notem aqui que uma boa parte do trabalho do desenvolvedor se dá em gerenciar os protocolos de comunicação, que apesar de divertido (pelo menos eu acho) é trabalhoso e não resolve o que a maioria dos desenvolvedores são pagos para fazer, que é tratar de problemas relacionados aos negócios.

O WCF foi criado para ser um modelo de programação unificado para os sistemas distribuídos, possibilitando o uso de várias tecnologias de comunicação que, na maioria das vezes, são definidas através de arquivos de configuração e seu funcionamento básico ocorre pelos ABC's (Address, Binding e Contract) que compõe os endpoints:

 

image

 

  • Address: Referencia uma URI para onde as mensagens podem ser enviadas para o serviço, pode ser indicado via arquivo config.
  • Binding: Indica o protocolo utilizado quando mensagens são enviadas para o endereço do serviço, pode ser indicado via arquivo config.
  • Contract: Conjunto de operações e tipo de dados de um serviço, este último precisa ser descrito via código.

Notem pela figura acima que o serviço WCF pode ter mais de um endpoint, o que significa que, dependo da necessidade, é possível atender a mais de um protocolo de comunicação ao mesmo tempo e com grande parte disso através de simples configurações!!!

Um serviço WCF pode utilizar como Host um executável .Net, um serviço do Windows, o IIS ou o WAS (Windows Activation Service) do Windows 2008 e pode ter como Client um aplicativo .Net para qualquer protocolo de comunicação ou qualquer aplicativo escrito em qualquer linguagem de programação se forem utilizados protocolos interoperáveis como SOAP, WS-* ou Http com REST.

Espero que tenham gostado e por enquanto é isso. Nos próximos posts pretendo intercalar tópicos avançados, para quem já conhece a tecnologia, com tópicos introdutórios, para quem está começando.

Até a próxima pessoal!!!

Rafael Godinho