Differenza tra WCF e servizi Web

WCF sostituisce tutte le precedenti tecnologie di servizi Web. È sviluppato da Microsoft. Sostituisce quelli che sono tradizionalmente considerati "servizi web". Il servizio Web si basa su SOAP che restituisce i dati in formato XML. Supporta solo il protocollo HTTP. Inoltre, non è open source e può essere utilizzato da qualsiasi client che comprenda XML. Può essere ospitato solo in IIS.

Che cos'è WCF?

WCF si basa su SOAP e restituisce i dati in formato XML. È un'estensione del servizio Web (ASMX) e supporta vari protocolli come HTTP, HTTPS, TCP, Named Pipes, MSMQ, ecc. WCF ha un problema con la sua configurazione noiosa ed estesa. Non è open source ma può essere utilizzato da qualsiasi client che capisca XML. Può essere ospitato su più piattaforme come nell'applicazione o su IIS o utilizzando il servizio finestre.

In quali scenari è necessario utilizzare WCF?

  • Per effettuare transazioni commerciali, WCF ci fornisce un server sicuro.
  • Due o più persone possono comunicare e scambiare dati in tempo reale utilizzando un servizio di chat basato su WCF.
  • Un'applicazione dashboard che esegue il polling di uno o più servizi per le informazioni e le presenta in modo logico.
  • Esporre un flusso di lavoro implementato utilizzando Windows Workflow Foundation come servizio WCF.

Che cos'è un servizio Web?

Come discusso in precedenza, i servizi Web funzionano in un ambiente senza stato. È possibile accedervi solo tramite HTTP. I servizi WCF possono essere ospitati in diversi tipi di applicazioni. Pertanto, a differenza dei servizi Web, WCF è più flessibile.

WCF può essere ospitato in vari scenari. Tali scenari includono servizi come WAS, IIS, Self-hosting, Managed Windows Service, ecc.

Confronto diretto tra WCF e servizi Web (infografica)

Di seguito è riportata la principale differenza tra WCF e servizi Web

Differenze chiave tra WCF e servizi Web

Entrambi i servizi Web vs WCF sono scelte popolari sul mercato; parliamo di alcune delle principali differenze tra WCF e servizi Web

  • Durante il trasferimento di dati da un'applicazione a un'altra applicazione, il servizio Web utilizza solo il protocollo HTTP. D'altra parte, per il trasporto di dati, WCF supporta più protocolli rispetto ai servizi Web ASP.NET. Oltre all'invio di messaggi tramite HTTP, WCF supporta anche TCP (Transmission Control Protocol), Microsoft Message Queuing (MSMQ) e named pipe.
  • WCF è architettonicamente più robusto del servizio Web.
  • XmlSerializer è utilizzato nei servizi Web. WCF utilizza DataContractSerializer, che è migliore rispetto a XmlSerializer in termini di prestazioni.
  • Quando comunichiamo tra più applicazioni sviluppate su piattaforme diverse, utilizziamo WCF. L'uso di WCF è l'unico possibile per il trasferimento di dati nel caso in cui stiamo trasferendo dati dalla piattaforma .NET a qualsiasi altra applicazione in esecuzione su altri sistemi operativi come Unix o Linux.
  • La sicurezza in WCF è molto elevata rispetto al servizio web.

WCF vs Tabella comparativa dei servizi Web

Di seguito è riportato il 9 confronto più alto tra WCF vs Web Services

La base del confronto tra WCF e servizi Web

WCF

Servizi web

Versione introduttivaIl servizio WCF è stato introdotto con .NET versione 3.0.Il servizio Web esiste in un framework .net dalla versione 1.0.
Protocollo per la ricezione e l'invio di messaggiI servizi WCF utilizzano SOAP per impostazione predefinita, ma i messaggi possono essere in qualsiasi formato e trasmessi utilizzando qualsiasi protocollo di trasporto come WS-HTTP, TCP, Named Pipes, HTTP, HTTPs, MSMQ, P2P (Point to Point) ecc.I servizi Web ASP.NET possono inviare e ricevere messaggi utilizzando SOAP solo su HTTP o HTTPS.
Estensione del fileI servizi Wcf hanno l'estensione ".svc".I servizi Web hanno estensione ".asmx"
DirettivaLa pagina svc utilizza la direttiva "ServiceHost".La pagina asmx utilizza la direttiva "WebService"
Tecnica di serializzazioneUtilizza DataContractSerializer nello spazio dei nomi System.RunTime.Serialization per la serializzazione.Per la serializzazione, i servizi Web ASP.NET si basano su XmlSerializer nello spazio dei nomi System.XML.Serialization. Alcune delle limitazioni di XmlSerializer sono:

  • Una possibilità di serializzazione di campi / proprietà pubbliche.
  • La serializzazione è possibile solo per le classi di raccolta che implementano Icollection o IEnumerable.
  • La serializzazione non è possibile per le classi che implementano IDictionary, ad esempio HashTable.
  • L'indicazione esplicita di campi o proprietà che devono essere serializzati in XML e l'identificazione di campi che devono essere ignorati dal serializzatore non è possibile.

Meccanismo di hostingI servizi WCF possono essere ospitati su più piattaforme come IIS, Windows Activation Services (WAS), Managed Windows services o self-hosting ecc.Il servizio Web ASP.net può essere ospitato solo in IIS.
gestione delle eccezioni non gestitaLe eccezioni non gestite non vengono restituite ai client come errori SOAP.Le eccezioni non gestite vengono restituite ai client come errori SOAP nei servizi Web ASP.NET.
Supporto multi-threadIl multi-threading è supportato dai servizi WCF.Non esiste supporto per il multi-threading nei servizi Web.
PrestazioneWCF è più veloce rispetto ai servizi WebPoiché i servizi Web utilizzano i serializzatori, quindi sono più lenti dei servizi WCF in termini di prestazioni.

Esempio di servizi Web vs WCF

Di seguito sono riportati gli esempi di WCF vs Web Services:

Servizi web

Il seguente frammento di codice ci mostra come sviluppare un servizio nel servizio 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

Il seguente frammento di codice ci mostra come sviluppare un servizio in 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;
)
)

Conclusione - WCF vs Web Services

Dalla discussione di cui sopra, il servizio WCF è sicuramente una tecnologia avanzata che il servizio Web. WCF è più veloce del servizio web in termini di prestazioni. WCF offre una migliore sicurezza, supporta vari protocolli e formati di messaggi. L'unica area frenetica di WCF per gli sviluppatori è la sua porzione di configurazione. Tuttavia, questo problema è stato risolto anche con WCF4.0 introducendo le impostazioni di configurazione predefinite. Si noti che fino a. NET3.5, Visual Studio fornisce un modello diretto per il servizio Web. Da.NET4.0, non otteniamo alcun modello diretto per il servizio web. Pertanto, dobbiamo creare un'applicazione Web e aggiungere un servizio Web ad essa.

Articoli consigliati

Questa è stata una guida alla differenza principale tra WCF e servizi Web. Qui discutiamo anche le differenze chiave tra WCF e servizi Web con infografica e tabella comparativa. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più.

  1. Confronto - Ubuntu vs Windows 10
  2. App mobile vs siti Web - Confronti utili
  3. Modalità sospensione vs Ibernazione: la maggior parte delle differenze
  4. Microsoft Azure vs Amazon Web Services

Categoria: