Servizio Web vs servizio WCF


Risposte:


67

Questa risposta si basa su un articolo che non esiste più:

Riassunto dell'articolo:

"Fondamentalmente, WCF è un livello di servizio che consente di creare applicazioni in grado di comunicare utilizzando una varietà di meccanismi di comunicazione. Con esso, è possibile comunicare utilizzando Peer to Peer, Named Pipes, Web Services e così via.

Non è possibile confrontarli perché WCF è un framework per la creazione di applicazioni interoperabili. Se vuoi, puoi pensarlo come un abilitatore SOA. Cosa significa questo?

Bene, WCF è conforme a qualcosa noto come ABC, dove A è l'indirizzo del servizio con cui si desidera comunicare, B sta per l'associazione e C sta per il contratto. Questo è importante perché è possibile modificare l'associazione senza necessariamente modificare il codice. Il contratto è molto più potente perché forza la separazione del contratto dall'attuazione. Ciò significa che il contratto è definito in un'interfaccia e c'è un'implementazione concreta a cui il consumatore è vincolato utilizzando la stessa idea del contratto. Il modello di dati viene estratto. "

... dopo ...

"Dovremmo utilizzare WCF quando abbiamo bisogno di comunicare con altre tecnologie di comunicazione (ad esempio Peer to Peer, Named Pipes) piuttosto che con il servizio Web"


2
Per qualsiasi nuovo progetto basato sull'approccio SOA, lo sviluppatore dovrebbe selezionare WCF sui servizi web. Perché offre flessibilità e scalabilità per un utilizzo futuro. C'è solo un'eccezione: se il client non supporta la comunicazione con i servizi wcf cioè Flash AS2.
Lalit

WCF 1) È un'architettura multilivello 2) Fornisce un'unica piattaforma unificata (interoperabile) o framework per creare applicazioni orientate ai servizi per comunicare utilizzando una varietà di protocolli di rete. 3) WCF fornisce una migliore sicurezza e affidabilità rispetto ai servizi web o ai servizi ASMX 4) Supporto per Plain XML, Ajax e REST Web Service 1) È semplice 2) Scrivi una funzione e agganciala con l'attributo [WebMethod] ed è pronto a prestare servizio
Arun Banik

Alla risposta di Joe -> L'articolo è replicato su codeproject.com/Articles/139787/…
Bernhard

33

Da qual è la differenza tra WCF e servizi Web?

WCF sostituisce tutte le precedenti tecnologie di servizi Web di Microsoft. Fa anche molto di più di ciò che viene tradizionalmente considerato come "servizi web".

I "servizi web" WCF fanno parte di uno spettro molto più ampio di comunicazioni remote abilitate tramite WCF. Otterrai un grado molto più elevato di flessibilità e portabilità facendo le cose in WCF rispetto al tradizionale ASMX perché WCF è progettato, da zero, per riassumere tutte le diverse infrastrutture di programmazione distribuite offerte da Microsoft. Un endpoint in WCF può essere comunicato con la stessa facilità con SOAP / XML come con TCP / binario e per cambiare questo mezzo è semplicemente un file di configurazione mod. In teoria, questo riduce la quantità di nuovo codice necessario durante il porting o la modifica delle esigenze aziendali, degli obiettivi, ecc.

ASMX è più vecchio di WCF e tutto ciò che ASMX può fare può farlo WCF (e altro). Fondamentalmente puoi vedere WCF come un tentativo di raggruppare logicamente tutti i diversi modi per far comunicare due app nel mondo di Microsoft; ASMX era solo uno di questi tanti modi e quindi è ora raggruppato sotto l'ombrello di capacità WCF.

È possibile accedere ai servizi Web solo tramite HTTP e funziona in un ambiente senza stato, dove WCF è flessibile perché i suoi servizi possono essere ospitati in diversi tipi di applicazioni. Gli scenari comuni per l'hosting dei servizi WCF sono IIS, WAS, Self-hosting, Managed Windows Service.

La differenza principale è che i servizi Web utilizzano XmlSerializer. Ma WCF utilizzaDataContractSerializer che è migliore in termini di prestazioni rispetto a XmlSerializer.


2
Nota casuale: una grande differenza tra DataContractSerializer e XmlSerializer è che DCS richiede l' ordinamento dei campi, motivo per cui non utilizzo DCS per serializzazioni o contratti non transitori! Pertanto è possibile interrompere un servizio utilizzato dai client che non utilizzano l'ordine fisso quando si spostano in DCS (o si spostano in DCS ma in un ordine diverso da quello utilizzato in precedenza). Certo, questo dovrebbe essere espresso nello schema, ma ..
user2246674

1
Inoltre, si prega di citare / collegare fonti e indicare estratti e / o prendere le informazioni originali e scrivere qualcosa di nuovo con esse. È scortese rubare. Ho aggiunto il link per te, ma assicurati di dare credito dove è dovuto! (Voterei su questa base, se potessi
esprimere il voto in negativo

32

Servizio web è basato su SOAP e restituisce i dati in formato XML. Supporta solo il protocollo HTTP. Non è open source ma può essere utilizzato da qualsiasi client che capisca xml. Può essere ospitato solo su IIS.

WCF si basa anche su SOAP e restituisce i dati in formato XML. È l'evoluzione del servizio web (ASMX) e supporta vari protocolli come TCP, HTTP, HTTPS, Named Pipes, MSMQ. Il problema principale con WCF è la sua configurazione noiosa ed estesa. Non è open source ma può essere utilizzato da qualsiasi client che capisca xml. Può essere ospitato nell'applicazione o su IIS o utilizzando il servizio finestra.


WCF può anche ricevere / inviare richieste / risposte http in formato JSON e senza utilizzare SOAP / schemi (al giorno d'oggi?).
Efrain

Punto di dettaglio: SOAP supporta HTTPS. La codifica avviene a livello di trasporto, quindi il client è indipendente da esso: il client effettua richieste XML e riceve risposte XML, e non sa né si preoccupa se lungo il percorso è stato plain-ol-http o crittografato-https.
Jinlye

16

La differenza di base e principale è che il servizio web ASP.NET è progettato per scambiare messaggi SOAP su HTTP solo mentre il servizio WCF può scambiare messaggi utilizzando qualsiasi formato (SOAP è l'impostazione predefinita) su qualsiasi protocollo di trasporto, ad esempio HTTP, TCP, MSMQ o NamedPipes ecc.


4

Qual è la differenza tra servizio Web e WCF?

  1. Il servizio Web utilizza solo il protocollo HTTP durante il trasferimento dei dati da un'applicazione a un'altra applicazione.

    Tuttavia, WCF supporta più protocolli per il trasporto dei messaggi rispetto ai servizi Web ASP.NET. WCF supporta l'invio di messaggi tramite HTTP, TCP (Transmission Control Protocol), named pipe e Microsoft Message Queuing (MSMQ).

  2. Per sviluppare un servizio in Web Service, scriveremo il seguente codice

    [WebService]
    public class Service : System.Web.Services.WebService
    {
      [WebMethod]
      public string Test(string strMsg)
      {
        return strMsg;
      }
    }

    Per sviluppare un servizio in WCF, scriveremo il codice seguente

    [ServiceContract]
    public interface ITest
    {
      [OperationContract]
      string ShowMessage(string strMsg);
    }
    public class Service : ITest
    {
      public string ShowMessage(string strMsg)
      {
         return strMsg;
      }
    }
  3. Il servizio Web non è architettonicamente più robusto. Ma WCF è architettonicamente più robusto e promuove le migliori pratiche.

  4. I servizi Web usano XmlSerializer ma WCF usa DataContractSerializer. Quale è migliore in termini di prestazioni rispetto a XmlSerializer?

  5. Per le chiamate interne (dietro firewall) da servizio a servizio utilizziamo il binding net: tcp, che è molto più veloce di SOAP.

    WCF è del 25% -50% più veloce di ASP.NET Web Services e circa il 25% più veloce di .NET Remoting.

Quando dovrei optare per l'uno sull'altro?

  • WCF viene utilizzato per comunicare tra altre applicazioni sviluppate su altre piattaforme e utilizzando altre tecnologie.

    Ad esempio, se devo trasferire i dati dalla piattaforma .net ad un'altra applicazione in esecuzione su un altro sistema operativo (come Unix o Linux) e stanno utilizzando un altro protocollo di trasferimento (come WAS o TCP), allora è possibile solo trasferire i dati utilizzando WCF.

  • Non ci sono limitazioni di piattaforma, protocollo di trasferimento dell'applicazione durante il trasferimento dei dati da un'applicazione all'altra.

  • La sicurezza è molto alta rispetto al servizio web


2

La differenza principale è il timeout, il servizio WCF è scaduto quando non c'è risposta, ma il servizio Web non ha questa proprietà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.