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

Comments

  • Anonymous
    September 19, 2008
    Olá Rafael, tudo certo? Você comentou sobre o uso de mais de um endpoint para um mesmo serviço. Quando olhamos a definição de um serviço pelo modelo WCF, ele é descrito como orientado a mensagens, multi-host e multi-protocolo. Realmente, podemos ter um mesmo serviço oferecendo diferentes endpoints, cada endpoint eventualmente com bindings diferentes, atendendo a protocolos diferentes. Uma discussão que surge é: como tratar os aspectos de segurança, autenticação e autorização através de diferentes endpoints de um mesmo serviço? Nesse ponto, um link bem legal que gostaria de dividir com você é esse: WCF Security Guidance Project Ref.: http://www.codeplex.com/WCFSecurity Um abraço! Parabéns pelo post! :) Waldemir.

  • Anonymous
    September 25, 2008
    (Dica originalmente dada pelo Waldemir em um comentário no post Introdução ao Windows Communication Foundation