Diferença entre WCF e Web Services

O WCF é um substituto para todas as tecnologias anteriores de serviço da web. É desenvolvido pela Microsoft. Substitui o que é tradicionalmente considerado como "serviços da web". O Serviço da Web é baseado no SOAP que retorna dados no formato XML. Apenas suporta o protocolo HTTP. Também não é de código aberto e pode ser consumido por qualquer cliente que entenda XML. Só pode ser hospedado no IIS.

O que é o WCF?

O WCF é baseado no SOAP e retorna dados no formato XML. É uma extensão do serviço da web (ASMX) e suporta vários protocolos como HTTP, HTTPS, TCP, pipes nomeados, MSMQ etc. O WCF tem um problema com sua configuração tediosa e extensa. Não é de código aberto, mas pode ser usado por qualquer cliente que entenda XML. Ele pode ser hospedado em várias plataformas, como no aplicativo ou no IIS ou usando o serviço de janela.

Em quais cenários o WCF deve ser usado?

  • Para fazer transações comerciais, o WCF nos fornece um servidor seguro.
  • Duas ou mais pessoas podem se comunicar e também trocar dados em tempo real usando um serviço de bate-papo construído sobre o WCF.
  • Um aplicativo de painel que pesquisa um ou mais serviços em busca de informações e as apresenta logicamente.
  • Expor um fluxo de trabalho implementado usando o Windows Workflow Foundation como um serviço WCF.

O que é um serviço da Web?

Como discutido acima, os Serviços da Web funcionam em um ambiente sem estado. Só pode ser acessado por HTTP. Os serviços WCF podem ser hospedados em diferentes tipos de aplicativos. Portanto, diferentemente dos Serviços da Web, o WCF é mais flexível.

O WCF pode ser hospedado em vários cenários. Esses cenários incluem serviços como WAS, IIS, auto-hospedagem, serviço gerenciado do Windows, etc.

Comparação cara a cara entre WCF x Web Services (infográficos)

Abaixo está a diferença top 9 entre WCF vs Web Services

Principais diferenças entre WCF e serviços da Web

Os serviços WCF x Web são escolhas populares no mercado; vamos discutir algumas das principais diferenças entre WCF e Web Services

  • Ao transferir dados de um aplicativo para outro, o serviço da Web usa apenas o protocolo HTTP. Por outro lado, para o transporte de dados, o WCF suporta mais protocolos em comparação com os serviços Web do ASP.NET. Além de enviar mensagens usando HTTP, o WCF também oferece suporte ao TCP (Transmission Control Protocol), Microsoft Message Queuing (MSMQ) e pipes nomeados.
  • O WCF é arquitetonicamente mais robusto que o Web Service.
  • XmlSerializer é usado em serviços da Web. O WCF usa o DataContractSerializer, que é melhor quando comparado ao XmlSerializer em termos de desempenho.
  • Ao nos comunicarmos entre vários aplicativos desenvolvidos em plataformas diferentes, usamos o WCF. O uso do WCF é o único possível para a transferência de dados, caso estejamos transferindo dados da plataforma .NET para qualquer outro aplicativo em execução em outros sistemas operacionais, como Unix ou Linux.
  • A segurança no WCF é muito alta quando comparada ao serviço da web.

Tabela de comparação entre WCF e serviços da Web

Abaixo está a 9 melhor comparação entre WCF x Web Services

A base de comparação entre WCF e Web Services

WCF

Serviços web

Versão de IntroduçãoO serviço WCF foi introduzido com o .NET versão 3.0.O serviço da Web existe em uma estrutura .net da versão 1.0.
Protocolo para receber e enviar mensagensOs serviços WCF usam SOAP por padrão, mas as mensagens podem estar em qualquer formato e transmitidas usando qualquer protocolo de transporte, como WS-HTTP, TCP, Pipes Nomeados, HTTP, HTTPs, MSMQ, P2P (Ponto a Ponto) etc.Os serviços da Web do ASP.NET podem enviar e receber mensagens usando SOAP apenas por HTTP ou HTTPS.
Extensão de arquivoOs serviços Wcf têm extensão ".svc".Os serviços da Web têm extensão ".asmx"
DirectivaA página svc usa a diretiva "ServiceHost".A página asmx usa a diretiva "WebService"
Técnica de serializaçãoEle usa DataContractSerializer no espaço de nome System.RunTime.Serialization para serialização.Para serialização, os serviços da Web do ASP.NET são baseados no espaço para nome XmlSerializer no System.XML.Serialization. Algumas das limitações do XmlSerializer são:

  • Possibilidade de serialização de propriedades / campos públicos.
  • Serializado é possível apenas para classes de coleção que implementam Icollection ou IEnumerable.
  • A serialização não é possível para as classes que implementam o IDictionary, por exemplo, HashTable.
  • A indicação explícita de campos ou propriedades que devem ser serializados em XML e a identificação de campos que devem ser ignorados pelo serializador não são possíveis.

Mecanismo de hospedagemOs serviços WCF podem ser hospedados em várias plataformas, como IIS, Windows Activation Services (WAS), serviços gerenciados do Windows ou auto-hospedagem etc.O serviço da Web ASP.net pode ser hospedado apenas no IIS.
manipulação de exceção não tratadaExceções não tratadas não são retornadas aos clientes como falhas SOAP.Exceções não tratadas são retornadas aos clientes como falhas SOAP nos serviços da Web do ASP.NET.
Suporte Multi-ThreadO multiencadeamento é suportado pelos serviços WCF.Não há suporte para multiencadeamento em serviços da web.
atuaçãoO WCF é mais rápido quando comparado aos Serviços da WebComo os serviços da Web usam serializadores, eles são mais lentos que os serviços WCF em termos de desempenho.

Exemplo de WCF vs serviços da Web

Abaixo está o exemplo de WCF vs Web Services:

Serviços web

O trecho de código a seguir mostra como desenvolver um serviço no serviço da Web.

(WebService) public class MyService
(
(WebMethod) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
public class SumClass
(
public int First, Second, Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

WCF

O trecho de código a seguir mostra como desenvolver um serviço no WCF

ServiceContract) blic class MyService : WebService
(
(OperationContract) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
(DataContract) public class SumClass
(
(DataMember) public int First;
(DataMember) public int Second;
(DataMember) public int Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

Conclusão - WCF vs Serviços da Web

A partir da discussão acima, o serviço WCF é definitivamente uma tecnologia avançada desse serviço da Web. O WCF é mais rápido que o serviço da Web em termos de desempenho. O WCF fornece melhor segurança, suporta vários protocolos e formatos de mensagem. A única área agitada do WCF para desenvolvedores é sua parte de configuração. No entanto, esse problema também foi resolvido com o WCF4.0, introduzindo as configurações padrão. Percebe-se que, até o .NET 3.5, o visual studio fornece um modelo direto para o serviço da web. From.NET4.0, não obtemos nenhum modelo direto para serviço da web. Portanto, precisamos criar um aplicativo da Web e adicionar um serviço da Web a ele.

Artigos recomendados

Este foi um guia para a principal diferença entre WCF e Web Services. Aqui também discutimos as principais diferenças entre WCF e Web Services com infográficos e tabela de comparação. Você também pode dar uma olhada nos seguintes artigos para saber mais.

  1. Comparação - Ubuntu vs Windows 10
  2. Aplicativo móvel x sites - comparações úteis
  3. Modo de suspensão vs principais diferenças do Hibernate
  4. Microsoft Azure vs Amazon Web Services