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! 🙂