Fala pessoal, tudo na paz?
Bem, como ando recebendo e-mails da galera perguntando sobre WCF, resolvi escrever alguns artigos sobre ele.
Nessa primeira parte vamos ver o que é o WCF e o que o compõe. Será uma introdução básica, porém, espero colocar toda informação necessária para um primeiro contato.
Primeiramente, o que é o WCF?
Windows Communication Foundation ou WCF como é mais conhecido nada mais é do que um SDK para desenvolvimento de aplicações distribuídas e orientadas a serviço, também conhecidas como (SOA).
O WCF surgiu no .Net Framework 3.0. Ele veio para unificar tecnologias como COM+, .Net Remoting, Web Services e MSMQ (Microsoft Message Queue), isso porque, antes do WCF, era necessário que o desenvolvedor utilizasse tecnologias distintas para cada tipo de aplicação, um exemplo seria a criação de Web Services para disponibilizar na Internet algum serviço. Caso este serviço fosse disponibilizado na intranet, deveria ser criada uma aplicação utilizando .Net Remoting, isso porque .Net Remoting utilizava o protocolo TCP enviado arquivos binários pela rede o que tornava a aplicação muito mais rápida do que com Web Service (Http/XML). Com a criação do WCF isso deixa de existir, ele torna a vida do programador muito mais simples.
Para que possamos criar, projetar e implantar serviços WCF, devemos nos ater a alguns conceitos básicos que são os EndPoints e seus componentes ( Address, Binding e Contract).
Toda comunicação com o serviço se dá através dos EndPoints, são eles os responsáveis por fornecer aos clientes o acesso às funcionalidades do serviço.
Calma pessoal não se assustem, vamos ver em detalhes cada pedacinho que compõe um EndPoint. Vamos lá?
Address
Nada mais é do que o local ou endereço onde o serviço reside. O Address possui dois pontos importantes que são a localização e o protocolo de transporte. Um Address possui o seguinte formato:
[base address]/[optional URI]
Já o base address segue o seguinte formato:
[transport]://[machine or domain][:optional port]
Como transport, o WCF nos oferece os seguintes canais de comunicação:
http, https, net.tcp, net.pipe, net.msmq e net.p2p
Para ilustrar melhor abaixo temos alguns exemplos de Address:
http://localhost:8080
http://localhost:8080/MeuWCFService
net.tcp://localhost:123/MeuWCFService
net.pipe://localhost/MeuWCFService
net.msmq://localhost/private/MeuWCFService
net.msmq://localhost/MeuWCFQueue
Binding
É o responsável por definir como será a comunicação com o serviço (tcp, ipc, http, msmq, etc).
O WCF nos oferece seis tipos de binding que são:
- BasicHttpBinding
- NetTcpBinding
- NetNamedPipeBinding
- WSHttpBinding
- WSDualHttpBinding
- NetMsmqBinding
Para saber mais sobre Binding, deem uma olhada no post WCF Bindings.
Contract
No contrato é onde definimos quais funcionalidades um serviço irá expor para os clientes.
Existem quatro tipos de contrato que são:
Service Contracts:
- define quais operações estarão disponíveis no serviço para o cliente, ou seja, mapeia tipos CLR para WSDL
Data Contracts:
– define a estrutura de dados usada no serviço, ou seja, ele mapeia tipos CLR para XSD
Fault Contracts:
- define os tipos de erros que serão lançados pelo serviço e como eles irão propagar para o cliente.
Message Contracts:
- define a estrutura de mensagens usadas no serviço, ou seja, mapeia tipos CLR para SOAP
Então, para que tenhamos um EndPoint precisamos ter um Address, um Binding e um Contract, estes itens são conhecidos como ABC´s EndPoint.
Bem pessoal, por hoje é só!
Em nossos próximos posts iremos nos aprofundar um pouco mais no WCF.
Espero que tenham gostado desta primeira parte.
Enjoy!!