Qual é a diferença entre as opções do Visual Studio: serviço da Web do ASP.NET e serviço WCF

Vejo que há duas opções que sei que podem ser usadas em serviços da Web … O WCF, obviamente, e os Serviços da Web do ASP.NET. Qual é a diferença? Eu comecei a pegar o WCF recentemente e tive uma pequena exposição a serviços da web no passado, mas eu certamente não sou um especialista.

É muito fácil conhecer as diferenças.

O ASP.NET Web Method é chamado ASMX [por causa da extensão do arquivo] (verifique 4GuysFromRolla sobre isso, eles têm um bom tutorial )

Essa tecnologia faz com que você exponha methods como um serviço da Web para que você possa conectá-lo (ao WS) de qualquer lugar e usá-lo (os methods). Mas … você não pode proteger os dados entre servidor e cliente, como, você pode enviar arquivos grandes em um modo claro, etc …

[Nota] você pode proteger o access ao serviço web usando certificados, mas é uma dor e bastante complicado, normalmente no ASMX usamos username / passsword para dar access a um método (mais uma vez … em texto simples!)

No WCF , você está no mundo diferente sobre Web Services, e esta é a melhor tecnologia em .NET (até agora) para expor os Serviços ( você pode ver a diferença … Serviços ! Não Web Services ), o WCF não precisa do IIS para rodar, ele pode rodar como um Serviço de Sistema no servidor, usando um ambiente de console (como linha de comando), no modo TCP / IP, etc, então dizemos que o WCF é um Serviço , não um Serviço da Web. Lembre-se que o ASMX precisa do IIS para ser executado e só será executado hospedado em um servidor da Web.

Com o WCF você pode usar SSL para criptografar a comunicação (para fazer isso no ASMX você precisa usar o WSE – Web Services Enhancements) e é muito fácil implementá-lo, você pode enviar arquivos grandes e com segurança (para fazer isso no ASMX você precisa para usar o MTOM – Message Transmission Optimization Mechanism (Mecanismo de Otimização de Transmissão de Mensagens).

você pode definir as preferências de transmissão apenas alterando uma linha de código, ou mesmo, se preferir, alterar o arquivo de configuração XML, a segurança é muito maior, etc, etc 🙂

Espero que você tenha uma visão geral melhor com isso, mas há muito mais.

bottom line: para expor os Web Services que você não precisa proteger, você pode usar o ASMX, sem problemas, mas se você precisar proteger a comunicação de alguma forma, faça isso no WCF!

link : você pode ler aqui algum desempenho comparativo entre os 2 serviços

Serviços da Web ASP.NET foi a primeira tentativa da Microsoft em serviços da Web.

O WCF substitui os serviços da Web do ASP.NET e o .NET Remoting. O WCF fornece um modelo de programação comum que permite que você faça o que as duas tecnologias mais antigas são capazes e muito mais, incluindo suporte para uma ampla gama de protocolos e modelos de segurança.

Vá com o WCF se você tiver a escolha.

ASP.NET webservices é OK – mas é limitado a HTTP hospedado apenas no IIS, e tem outros problemas.

O WCF suporta muito mais protocolos de transporte (HTTP de várias maneiras, TCP, MSMQ e mais), possui um modelo de segurança muito mais rico (credenciais, segurança federada) e oferece opções de hospedagem – hospedagem própria em um aplicativo ou serviço do Windows ou WAS e mais.

Resumindo: se você está começando agora – vá aprender o WCF por todos os meios!

Marc