Qual a diferença entre eles?
Quando eu optaria por um em vez do outro?
Qual a diferença entre eles?
Quando eu optaria por um em vez do outro?
Respostas:
Esta resposta é baseada em um artigo que não existe mais:
Resumo do artigo:
"Basicamente, o WCF é uma camada de serviço que permite construir aplicativos que podem se comunicar usando uma variedade de mecanismos de comunicação. Com ele, você pode se comunicar usando Ponto a Ponto, Pipes Nomeados, Serviços da Web e assim por diante.
Você não pode compará-los porque o WCF é uma estrutura para construir aplicativos interoperáveis. Se quiser, você pode pensar nisso como um facilitador de SOA. O que isto significa?
Bem, o WCF está em conformidade com algo conhecido como ABC, onde A é o endereço do serviço com o qual você deseja se comunicar, B representa a ligação e C representa o contrato. Isso é importante porque é possível alterar a vinculação sem necessariamente alterar o código. O contrato é muito mais poderoso porque força a separação do contrato da implementação. Isso significa que o contrato é definido em uma interface, e há uma implementação concreta que é vinculada pelo consumidor usando a mesma ideia do contrato. O modelo de dados é abstraído. "
... mais tarde ...
"deve usar o WCF quando precisamos nos comunicar com outras tecnologias de comunicação (por exemplo, ponto a ponto, Pipes nomeados) em vez de serviço da Web"
De Qual é a diferença entre a WCF e Web Services?
O WCF é um substituto para todas as tecnologias de serviço da Web anteriores da Microsoft. Ele também faz muito mais do que o que é tradicionalmente considerado como "serviços da Web".
Os "serviços da web" do WCF fazem parte de um espectro muito mais amplo de comunicação remota habilitada por meio do WCF. Você obterá um grau muito maior de flexibilidade e portabilidade fazendo as coisas no WCF do que no ASMX tradicional, porque o WCF foi projetado, desde o início, para resumir todas as diferentes infraestruturas de programação distribuída oferecidas pela Microsoft. Um ponto de extremidade no WCF pode ser comunicado tão facilmente por SOAP / XML quanto por TCP / binário e para alterar esse meio é simplesmente um arquivo de configuração mod. Em teoria, isso reduz a quantidade de novo código necessário ao portar ou alterar as necessidades de negócios, metas, etc.
ASMX é mais antigo que o WCF, e qualquer coisa que o ASMX pode fazer pode fazer o WCF (e mais). Basicamente, você pode ver o WCF tentando agrupar logicamente todas as diferentes maneiras de fazer dois aplicativos se comunicarem no mundo da Microsoft; O ASMX era apenas uma dessas muitas maneiras e agora está agrupado no guarda-chuva de recursos do WCF.
Os serviços da Web podem ser acessados apenas por HTTP e funcionam em ambiente sem estado, onde o WCF é flexível porque seus serviços podem ser hospedados em diferentes tipos de aplicativos. Os cenários comuns para hospedar serviços WCF são IIS, WAS, Auto-hospedagem e Serviço gerenciado do Windows.
A principal diferença é o uso de Web Services
XmlSerializer
. Mas o WCF usa oDataContractSerializer
que é melhor em desempenho em comparação comXmlSerializer
.
O Web Service é baseado em SOAP e retorna dados em formato XML. Ele suporta apenas o protocolo HTTP. Não é um código aberto, mas pode ser consumido por qualquer cliente que entenda xml. Ele pode ser hospedado apenas no IIS.
O WCF também é baseado em SOAP e retorna dados em formato XML. É a evolução do serviço web (ASMX) e suporta vários protocolos como TCP, HTTP, HTTPS, Pipes Nomeados, MSMQ. O principal problema com o WCF é sua configuração entediante e extensa. Não é um código aberto, mas pode ser consumido por qualquer cliente que entenda xml. Ele pode ser hospedado no aplicativo ou no IIS ou usando o serviço de janela.
A diferença básica e principal é que o serviço Web ASP.NET é projetado para trocar mensagens SOAP sobre HTTP apenas enquanto o serviço WCF pode trocar mensagens usando qualquer formato (SOAP é o padrão) em qualquer protocolo de transporte, ou seja, HTTP, TCP, MSMQ ou NamedPipes etc.
Qual é a diferença entre serviço da web e WCF?
O serviço da Web usa apenas o protocolo HTTP ao transferir dados de um aplicativo para outro.
Mas o WCF oferece suporte a mais protocolos para transportar mensagens do que os serviços da Web ASP.NET. O WCF oferece suporte ao envio de mensagens usando HTTP, bem como o TCP (Transmission Control Protocol), pipes nomeados e Microsoft Message Queuing (MSMQ).
Para desenvolver um serviço em Web Service, escreveremos o seguinte código
[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}
Para desenvolver um serviço no WCF, iremos escrever o seguinte código
[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}
O Web Service não é arquitetonicamente mais robusto. Mas o WCF é arquitetonicamente mais robusto e promove as melhores práticas.
Os serviços da Web usam XmlSerializer, mas o WCF usa DataContractSerializer. Qual é o melhor desempenho em comparação com o XmlSerializer?
Para chamadas serviço a serviço internas (por trás do firewall), usamos a ligação net: tcp, que é muito mais rápida do que o SOAP.
O WCF é 25% a 50% mais rápido do que os serviços da Web ASP.NET e aproximadamente 25% mais rápido do que o .NET Remoting.
Quando eu optaria por um em vez do outro?
O WCF é usado para se comunicar entre outros aplicativos que foram desenvolvidos em outras plataformas e usando outra tecnologia.
Por exemplo, se eu tenho que transferir dados de uma plataforma .net para outro aplicativo que está sendo executado em outro sistema operacional (como Unix ou Linux) e eles estão usando outro protocolo de transferência (como WAS ou TCP), então só é possível transferir dados usando WCF.
Aqui não há restrição de plataforma, protocolo de transferência de aplicativo durante a transferência de dados entre um aplicativo para outro aplicativo.
A segurança é muito alta em comparação com o serviço da web
A principal diferença é o tempo limite, o serviço WCF atingiu o tempo limite quando não houve resposta, mas o serviço da web não tem essa propriedade.