gRPC per sviluppatori Windows Communication Foundation (WCF)
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere i criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Questo articolo fornisce un riepilogo del motivo per cui ASP.NET Core gRPC è un'ottima soluzione per gli sviluppatori di Windows Communication Foundation (WCF) che vogliono eseguire la migrazione a architetture e piattaforme moderne.
Confronto con WCF
Anche se l'implementazione e l'approccio sono diversi per gRPC, l'esperienza di sviluppo e utilizzo di servizi con gRPC deve essere intuitiva per gli sviluppatori WCF. WCF e gRPC sono framework RPC (remote procedure call) con gli stessi obiettivi:
- È possibile scrivere codice come se il client e il server si trovino nella stessa piattaforma.
- Fornire un'API di rete portabile semplificata.
Entrambe le piattaforme condividono il requisito di dichiarare e implementare un'interfaccia, anche se il processo per dichiarare l'interfaccia è diverso. Molti tipi di chiamate RPC supportate da gRPC supportano il mapping alle associazioni disponibili per i servizi WCF. Per altre informazioni ed esempi, vedere Eseguire la migrazione di una soluzione WCF a gRPC.
Vantaggi di gRPC
gRPC offre un framework migliore rispetto ad altri approcci per i motivi seguenti.
Prestazioni
gRPC usa HTTP/2. A differenza di HTTP/1.1, HTTP/2:
- Protocollo binario più piccolo e veloce.
- È più efficiente per l'analisi dei computer.
- Supporta richieste multiplexing su una singola connessione. Il multiplexing consente l'invio di più richieste tramite una connessione senza che le richieste si blocchino l'una dall'altra. In HTTP/1.1 il blocco è noto come "blocco head-of-line (HOL).
gRPC usa Protobuf, un formato binario efficiente, per serializzare i messaggi. I messaggi Protobuf sono:
- Serializzare e deserializzare rapidamente.
- Usare una larghezza di banda inferiore rispetto ai formati basati su testo.
gRPC è una buona soluzione per dispositivi mobili e reti con restrizioni di larghezza di banda.
Interoperabilità
Sono disponibili strumenti e librerie gRPC per tutti i principali linguaggi di programmazione e piattaforme, tra cui .NET, Java, Python, Go, C++, Node.js, Swift, Dart, Ruby e PHP. Grazie al formato di trasmissione binario Protobuf e alla generazione efficiente di codice per ogni piattaforma, gli sviluppatori possono creare app multipiattaforma e con prestazioni elevate.
Usabilità e produttività
gRPC è una soluzione RPC completa. Funziona in modo coerente tra più linguaggi e piattaforme. Fornisce anche strumenti eccellenti, con gran parte del codice boilerplate generato automaticamente. Come WCF, gRPC genera automaticamente messaggi e un client fortemente tipizzato. Il tempo per gli sviluppatori viene liberato per concentrarsi sulla logica di business.
Streaming
gRPC ha un flusso bidirezionale completo, che offre funzionalità simili ai servizi duplex completi di WCF. Lo streaming gRPC può funzionare su normali connessioni Internet, servizi di bilanciamento del carico e mesh di servizi.
Scadenze, timeout e annullamento
gRPC consente ai client di specificare un tempo massimo per il completamento di una RPC. Se viene superata la scadenza specificata, il server può annullare l'operazione indipendentemente dal client. Le scadenze e gli annullamenti possono essere propagati tramite chiamate gRPC successive per applicare i limiti di utilizzo delle risorse. I client possono arrestare le operazioni quando viene superata una scadenza o in precedenza, se necessario. Ad esempio, i client possono arrestare le operazioni a causa di un'interazione dell'utente.
Sicurezza
gRPC può usare TLS e HTTP/2 per fornire una connessione crittografata end-to-end tra il client e il server. Il supporto per l'autenticazione del certificato client aumenta ulteriormente la sicurezza e l'attendibilità tra client e server.
gRPC come percorso di migrazione per WCF a .NET Core e .NET 5
.NET Core e .NET 5 contrassegna un cambiamento nel modo in cui Microsoft offre soluzioni di comunicazione remota agli sviluppatori che vogliono offrire servizi in un'ampia gamma di piattaforme. .NET Core e .NET 5 supportano la chiamata ai servizi WCF, ma non offrono il supporto lato server per l'hosting di WCF.
Esistono due percorsi consigliati per modernizzare le app WCF:
gRPC è basato su tecnologie moderne ed è emerso come la scelta più popolare nella community degli sviluppatori per le app RPC. A partire da .NET Core 3.0, le piattaforme .NET moderne hanno un supporto eccellente per gRPC. La migrazione dei servizi WCF per l'uso di gRPC consente di fornire funzionalità RPC, prestazioni, interoperabilità necessaria nelle app moderne.
CoreWCF è uno sforzo della community per supportare l'hosting di servizi WCF in .NET Core e .NET 5. È disponibile una versione di anteprima e il progetto sta lavorando per essere pronto per la produzione. CoreWCF supporta solo un sottoinsieme delle funzionalità di WCF e le app .NET Framework di cui viene eseguita la migrazione per usarlo richiederanno modifiche al codice e test per la corretta esecuzione del test. CoreWCF è una scelta ottimale se un'app deve mantenere la compatibilità con i client esistenti che chiamano i servizi WCF.
Operazioni preliminari
Per indicazioni dettagliate sulla creazione di servizi gRPC in ASP.NET Core per sviluppatori WCF, vedere ASP.NET Core gRPC for WCF Developers