Deletado em 26 de julho de 2010

Diferenças entre ASP.Net Web Services e WCF (Windows Comunication Fundation)

Encontro poucas informações sobre WCF atualmente na Internet. Na verdade pouco usei esta tecnologia, mas quando começei a pesquisar sobre a maior dúvida era: O que WCF tem de diferente dos Web Services.

Para um conteúdo completo, recomendo o blog do MVP Israel Aece. Ele fez alguns vídeos e explica muitas coisas do WCF, falando também as diferenças entre as tecnologias.

A partir do blog dele, tentei fazer uma tabela básica com o que existe em Web Services e o que existe no WCF. O Resultado é o lixo abaixo:

Ação Web Services WCF
Estrutura de
Projeto
Arquivos .asmx, trabalha com métodos de serviço. Arquivos .srv, trabalha com contratos de serviços.
Contratos Obrigatório o uso atributo [WebMethod] em cada método que estará disponível para o acesso. Interfaces determinam os contratos, decoradas com [ServiceContract]. Pode ter tipos complexos vinculados aos serviços.
Serialização/
Deserialização
Serializa todos os membros públicos com XmlSerializer. Utiliza o DataContractSerializer, parecido com XmlSerializer porém persiste membros private e protected e gera um XML mais simplificado, melhorando a interoperabilidade entre as plataformas.
Protocolo/
Hosting
Pode somente ser hospedado no IIS, utilizando o protocolo HTTP/HTTPS. Arquitetura muito mais flexível e é independente do protocolo, ou seja, ele pode rodar em HTTP, HTTPS, TCP, MSMQ, etc. Pode usar o IIS como host ou ser um serviço instalado no Windows.
Extensibilidade Interceptar as requisições através de SOAP Extensions. Inúmeros pontos de extensibilidade tanto do lado do serviço quanto do cliente.
Segurança Segurança baseada no transporte, ou seja, ele somente será seguro se você expor o serviço através de HTTPS. Pode utilizar SoapHeader com usuário e senha. Funciona bem, mas é vulnerável. É seguro por padrão. Para utilizar a autenticação baseada em UserName/Password que o WCF fornece sob o protocolo HTTP, será necessário utilizar um certificado.
Configuração Utiliza a Web.config de forma declarativa Seção de configurações são extremamente ricas. Segurança, transações, know types, behaviors, bindings, endpoints, contratos, etc. É um pouco complexo. Grande parte do que temos no WCF não existe nativamente no ASMX.
Interoperabilidade Interoperabilidade O ASMX não possui nativamente suporte a especificações que foram definidas por grandes "players" do mercado. Precisa da instalação de um Add-on para o Visual Studio .NET. Padrões já foram implementados nativamente e são configuráveis. Consegue facilmente conversar com serviços construídos em ASMX em ambos os lados.
Cliente Pode ser integrado com muitas aplicações. Muito mais flexível que o ASMX.
Desempenho http://msdn.microsoft.com/en-us/library/bb310550.aspx
Resultado
Final
Gera WSDL Gera WSDL
Conclusão Muitas funcionalidades ainda são de forma idêntica entre o WS e o WCF.

Quanto a questões de configuração, segurança, desempenho e Interoperabilidade o WCF ganha por ter todos os padrões de XML adicionados nativamente, englobar todas as tecnologias de computação distribuída da Microsoft e ser mais flexível a alterações e extensibilidade.

Os Web Services são pouco mais fáceis de se trabalhar quanto a questão de criação de projeto e análise de erros. Entretanto a questão de desenvolvimento o WCF é bem mais avançado. Por fim, os dois geram WSDL para o cliente consumir os dados.

Se colocarmos em uma balança as duas tecnologias. Realmente pouca coisa parece ter mudado.

Entretanto, pensando no seguinte fato: Se hoje minha empresa vai começar a criar algo orientado a serviços, deveriamos usar o WCF, pois é uma nova tecnologia que vai substituir o Web Services.

Agora, fazer a migração das tecnologias, talvez isso ainda (atualmente) não vale tanto a pena. Pelo mesmo motivo de "parecer" o mesmo da mesma coisa.

2 comentários:

Anônimo disse...

Muito boa a explicação!

Evandro disse...

ótima mesmo, matou a dúvida !

Postar um comentário

Jogue sua opinião na lixeira!

Topo