Differenças entre WCF, WCF REST, Web API e Web Service

0

O framework .Net tem uma série de tecnologias que permitem a criação de serviços HTTP, tais como Web Service, WCF e não tão recente assim WebApi. Há uma série de artigos sobre a internet sobre tutoriais de como usá-los de maneira bem simples. Mas imagine um cenário onde você tem monte de opções para construir serviços HTTP no .NET framework, o que levaria utilizar uma estrutura ou outra?. Neste artigo, eu gostaria de compartilhar minha opinião sobre estes modelos.

Web Service
  • É baseado em SOAP e retorna os dados por padrão em XML.
  • Ele suporta apenas o protocolo HTTP.
  • Não é open source, mas pode ser consumido por qualquer cliente que entende xml.
  • Pode ser hospedado apenas no IIS.
  • Possui bastante documentação e possui fácil integração com outros frameworks baseados em .Net
WCF
  • Ele também é baseado em SOAP e retorna os dados no padrão XML.
  • É a evolução do serviço web (ASMX) e suporta vários protocolos como o TCP, HTTP, HTTPS, Pipes , MSMQ.
  • O principal problema com WCF é, a sua configuração tediosa e extensa.
  • Não é open source, mas pode ser consumido por qualquer cliente que entende xml.
  • Ele pode ser hospedado no IIS ou usando window service.
WCF Rest
  • Para usar WCF como um serviço WCF Rest basta você habilitar o webHttpBinding.
  • Ele suporta HTTP GET e POST por atributos [WebGet] e [WebInvoke] respectivamente.
  • Para permitir que outros verbos HTTP você tem que fazer configurações adicionais no IIS, o que pode ser um pouco custoso.
  • Passando dados através de parâmetros usando um WebGet o UriTemplate deve ser especificado e configurado.
  • Ele suporta XML, JSON e formato de dados ATOM.
Web Api
  • Este é o mais novo framework para a construção de serviços HTTP e possui uma proposta de ser mais simples e fácil de utilizar.
  • Web API é open source e projetada para a construção de serviços REST-Ful com o .NET Framework.
  • Ao contrário do serviço WCF Rest, ele usa os recursos do HTTP (como URIs, pedido / resposta cabeçalhos, o cache, controle de versão, vários formatos de conteúdo)
  • Ele também suporta os recursos MVC como routing, controllers, action results, filter, model binders, IOC container e também dependency injection,
  • Ele pode ser hospedado como aplicação ou no IIS.
  • É uma arquitetura considerada “leve” e boa para dispositivos que a largura de banda é limitada, como dispositivos móveis por exemplo.
  • As respostas são formatadas pelo MediaTypeFormatter em JSON, XML ou qualquer formato que você deseja adicionar como um MediaTypeFormatter.
Considerações finais:
  • Escolha WCF quando você quer criar um serviço que deve suportar cenários especiais, tais como mensageria, filas de mensagens, comunicação duplex etc.
  • Escolha WCF quando você quer criar um serviço que pode usar canais de transporte rápidas quando disponíveis, tais como TCP, Pipes, ou talvez mesmo UDP (em WCF 4.5).
  • Escolha Web API quando você quer criar um serviço sobre protocolo HTTP como Post , Get ou Put.
  • Escolha Web API quando você deseja expor seu serviço para uma ampla gama de clientes, incluindo navegadores, celulares, iphone e tablets.

 

Esta é a minha opinião sobre qual serviço escolher. Avalie bem o seu cenário, seus recursos e tempo disponível para criação de cada projeto.

Um abraço!

Não deixem de dar uma passada na nossa página do Facebook! 🙂

 

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com