Serviço da Web vs Serviço WCF

Respostas:

67

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"

rbrayb
fonte
2
Para qualquer novo projeto baseado na abordagem SOA, o desenvolvedor deve selecionar WCF em vez de webservices. Porque dá flexibilidade e escalabilidade para uso futuro. Há apenas uma exceção: se o cliente não suportar comunicação com serviços wcf, ou seja, Flash AS2.
Lalit
WCF 1) É uma arquitetura em várias camadas 2) Fornece uma única plataforma unificada (interoperável) ou estrutura para construir um aplicativo orientado a serviços para se comunicar usando uma variedade de protocolos de rede. 3) WCF fornece melhor segurança e confiabilidade em comparação com serviços da web ou serviços ASMX 4) Suporte para Plain XML, Ajax e REST Web Service 1) É simples 2) Escreva uma função e conecte-a com o atributo [WebMethod] e é pronto para prestar serviço
Arun Banik
Conforme respondido por Joe -> O artigo é replicado em codeproject.com/Articles/139787/…
Bernhard
33

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 o DataContractSerializerque é melhor em desempenho em comparação com XmlSerializer.

Joe
fonte
2
Nota aleatória: uma grande diferença de DataContractSerializer e XmlSerializer é que DCS requer ordenação de campo - é por isso que eu não uso DCS para serialização não transitória ou contratos! Assim, é possível interromper um serviço usado por clientes que não usam a ordem fixa ao mudar para DCS (ou mudar para DCS, mas em uma ordem diferente da usada anteriormente). Concedido, isso deve ser expresso no Esquema, mas ..
user2246674
1
Além disso, cite / vincule fontes e indique trechos e / ou pegue a informação original e escreva algo novo com ela. É rude roubar. Eu adicionei o link para você, mas certifique-se de dar o devido crédito! (Eu faria downvote nesta base, se pudesse.)
user2246674
32

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.

CSK
fonte
O WCF também pode receber / enviar solicitações / respostas http no formato JSON, e sem usar SOAP / esquemas (hoje em dia?).
Efrain
Detalhe: SOAP oferece suporte a HTTPS. A codificação acontece na camada de transporte, portanto, o cliente é agnóstico a ela - o cliente faz solicitações XML e obtém respostas XML, e não sabe nem se preocupa se ao longo do caminho era simples-ol-http ou criptografado-https.
Jinlye
16

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.

Imran Ghani
fonte
4

Qual é a diferença entre serviço da web e WCF?

  1. 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).

  2. 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;
      }
    }
  3. O Web Service não é arquitetonicamente mais robusto. Mas o WCF é arquitetonicamente mais robusto e promove as melhores práticas.

  4. Os serviços da Web usam XmlSerializer, mas o WCF usa DataContractSerializer. Qual é o melhor desempenho em comparação com o XmlSerializer?

  5. 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

Ali Azam
fonte
2

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.

user5898334
fonte