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.