Hospedagem de serviços WCF

Olá pessoal, hoje vou falar um pouco sobre as opções de hospedagem dos serviços WCF e os seus diversos cenários de uso, temas frequentemente discutidos por aí. Estes cenários podem ser:

Cenário Descrição
Enterprise Web Services Fornece suporte para web services simple baseados em SOAP ou avançados que utilizam protocolos WS*.
Web 2.0 Services Um modelo de programação para web com suporte à POX, REST, JSON, RSS e Atom.
Aplicações da Intranet Foco em aplicações rodando atrás de um firewall em uma rede controlada.
Mensagens Enfileiradas Possibilita cenários de chamadas assíncronas ou desconectadas entre os clientes e o serviço.

 
Veremos agora maiores detalhes sobre cada um dos itens listados acima.

 
Enterprise Web Services

A partir do final da década de 1990 muitos desenvolvedores passaram a utilizar web services baseados no protocolo SOAP e outros protocolos mais avançados (conhecidos como WS*) para suportar a interoperabilidade entre plataformas distintas, o que facilitou a comunicação distribuída através da Internet e também a troca de mensagens entre sistemas protegidos por firewalls.

Neste cenário o WCF suporta os seguintes protocolos:

Categoria Protocolo
Mensageria SOAP, WS-Addressing, MTOM
Metadados WSDL, WS-MetadataExchange, WS-Policy
Segurança WS-Security, WS-SecureConversation, WS-Trust
Confiabilidade WS-ReliableMessaging
Transações WS-Coordination, WS-AtomicTransaction

Não podemos esquecer que a escolha dos protocolos deve ser feita baseando-se nos seguintes cenários:

  • Serviços que devem ser consumidos por uma plataforma cliente específica devem utilizar protocolos de acordo com o que os clientes suportam;
  • Serviços que devem ser consumidos por plataformas desconhecidas devem utilizar o menos denominador comum;
  • Serviços que serão consumidos por clientes WCF podem ser configurados para utilizar os protocolos mais avançados;
  • Serviços podem ser configurados para suportar vários tipos de protocolos possibilitando a possibilidade de ser consumido por vários tipos de clientes.

image

 

Implementação
As características de implementação dos enterprise web services são:

Característica Descrição
Hospedagem IIS 6 no Windows Server 2003, IIS 7 no Windows Server 2008
Protocolo de transporte HTTP, HTTPS
Protocolo de mensageria SOAP + WS-Addressing
Autenticação Usuário e senha (WS-Security)
Autorização Custom credential store
Segurança da transmissão SSL se HTTPS, WS-Secutiry se HTTP

 

Web 2.0 Services

O modelo de programação para Web 2.0 se tornou bastante popular para o desenvolvimento de aplicações RIA (Rich Internet Applications) baseadas em browsers, possibilitando grande interatividade com os usuários. Os web services baseados em SOAP ou WS* não são uma boa opção para este cenário, pois não existem ferramentas para geração de proxies e o tratamento das mensagens SOAP traria muita complexidade. Este cenário requer uma abordagem que simplifique a comunicação das aplicações baseadas em browsers e o WCF pode atender com os seguintes protocolos:

Protocolo Descrição
POX Troca de mensagens XML sem o formalismo do SOAP
REST Muitas vezes utiliza POX, se baseia no padrão de acesso à URI para processamento
JSON Alternativa mais leve que o XML, muito utilizado por clientes JavaScript
RSS/ATOM Formato de syndication baseado em XML, utilizado para compartilhar a atualização de dados

 

POX/REST
Antes do surgimento do SOAP os sistemas já trocavam mensagens XML. Plain-Old-XML (POX) é o termo utilizado para definir essa troca de mensagens, geralmente através do protocolo HTTP.

Representational State Transfer (REST) é um estilo utilizado para interação com recursos, sendo muito útil para operações CRUD (create, read, update e delete). Através dos verbos HTTP faz a distinção das operações que devem ser realizadas em cima dos recursos, representados por uma URI. Já o POX utiliza mais de uma URI para interação com cada um dos recursos utilizando os verbos HTTP GET e POST para interação.

Vejamos o funcionamento:

image

image

JSON 
JavaScript Object Notation (JSON) é um formato de mensagem desenvolvido para ser utilizado por clientes JavaScript. Se compatado ao XML, a notação JSON carrega um menor overhead e é mais simples, permitindo que alguns modelos de programação gerarem proxies de acesso, o que muitas vezes facilita o trabalho dos desenvolvedores. Pode ser utilizado como formato de mensagem para implementações REST.

image

 

RSS e Atom
Really Simple Syndication (RSS) e Atom são formatos de syndication que permitem às aplicações cliente acessar conteúdo de natureza tipicamente cronológica e com atualizações constantes.

image

Implementação
As características de implementação dos web 2.0 services são:

Característica Descrição
Hospedagem IIS 6 no Windows Server 2003, IIS 7 no Windows Server 2008
Protocolo de transporte HTTP, HTTPS
Protocolo de mensageria XML, JSON
Autenticação Usuário e senha (Basic Authentication)
Autorização Custom credential store
Segurança da transmissão SSL se necessário

Aplicações da Intranet

O WCF pode ser considerado o substituto das tecnologias .NET Remoting e Enterprise Services para a distribuição de funcionalidades entre processos e máquinas na mesma rede. Estas aplicações não necessitam de protocolos interoperáveis para comunicação, o que faz com que possa ser utilizado WCF em ambas as pontas para comunição entre os clientes e os serviços.

image

Implementação
As características de implementação das aplicações da intranet são:

Característica Descrição
Hospedagem Windows NT Service no Windows Server 2003, Windows Activation Service (WAS) no Windows Server 2008
Protocolo de transporte TCP, Named pipes (somente se o cliente e o serviço estiverem na mesma máquina)
Protocolo de mensageria SOAP + Binary
Autenticação Credencial WindowsCertificado X.509 se for necessário validar a aplicação cliente (utilizado em DMZ)
Autorização Credencial WindowsCertificado X.509 se for necessário validar a aplicação cliente (utilizado em DMZ)
Segurança da transmissão Chaves geradas pela crecendial WindowsCertificado X.509 se for necessário validar a aplicação cliente (utilizado em DMZ)

Mensagens Enfileiradas

O uso de um modelo de mensagens assíncrono facilita a comunicação entre sistemas através de um baixo acoplamento, tornando possível a execução de processos de longa duração sem a necessidade da espera de um retorno. O WCF utiliza o Microsoft Message Queuing (MSMQ) para possibilitar este tipo de comunicação, garantindo a entrega de mensagens assíncronas até mesmo com a possibilidade da interrupção da comunicação entre o cliente e o serviço.

image

Implementação
As características de implementação das mensagens enfileiradas são:

Característica Descrição
Hospedagem Windows NT Service no Windows Server 2003, Windows Activation Service (WAS) no Windows Server 2008
Protocolo de transporte MSMQ (nativo, SOAP Reliable Messaging Protocol - SRMP, SOAP Reliable Messaging Protocol Secure - SRMPS)
Protocolo de mensageria SOAP + Binary
Autenticação da fila Certificado X.509
Autorização da fila Certificado X.509
Proteção da fila Certificado X.509
Autenticação da mensagem Certificado X.509
Autorização da mensagem Certificado X.509
Proteção da mensagem Certificado X.509

Espero que este post tenha ajudado a esclarecer um pouco sobre as possibilidades de uso do WCF.
Não esqueça de deixar o seu comentário.

[]'s
Rafael