Qual'è la differenza tra loro?
Quando dovrei optare per l'uno sull'altro?
Qual'è la differenza tra loro?
Quando dovrei optare per l'uno sull'altro?
Risposte:
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"
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 aXmlSerializer
.
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.
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.
Qual è la differenza tra servizio Web e WCF?
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).
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;
}
}
Il servizio Web non è architettonicamente più robusto. Ma WCF è architettonicamente più robusto e promuove le migliori pratiche.
I servizi Web usano XmlSerializer ma WCF usa DataContractSerializer. Quale è migliore in termini di prestazioni rispetto a XmlSerializer?
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
La differenza principale è il timeout, il servizio WCF è scaduto quando non c'è risposta, ma il servizio Web non ha questa proprietà.