Windows Communication Foundation (WCF) è un framework per la compilazione di applicazioni orientate ai servizi. Grazie a WCF, è possibile inviare dati come messaggi asincroni da un endpoint del servizio a un altro. Un endpoint del servizio può appartenere a un servizio disponibile in modo continuo ospitato da IIS oppure essere un servizio ospitato in un'applicazione. Un endpoint può essere un client di un servizio che richiede dati da un endpoint del servizio. Il messaggio può essere semplice come una parola o come un singolo carattere inviato in formato XML o complesso come un flusso di dati binari. Di seguito vengono indicati alcuni scenari di esempio:
Servizio protetto per elaborare le transazioni aziendali.
Servizio che fornisce dati correnti ad altri, ad esempio un rapporto sul traffico o un altro servizio di monitoraggio.
Servizio di chat che consente a due persone di comunicare o di scambiare dati in tempo reale.
Applicazione dashboard che esegue il polling di uno o più servizi per i dati e che li visualizza in una presentazione logica.
Esposizione di un flusso di lavoro implementato utilizzando Windows Workflow Foundation come servizio WCF.
Sebbene fosse possibile creare queste applicazioni anche con programmi precedenti a WCF, grazie a WCF lo sviluppo degli endpoint è stato semplificato. In breve, WCF è stato progettato per consentire un approccio gestibile alla creazione di servizi Web e dei relativi client.
gRPC come alternativa a WCF
gRPC è un framework RPC moderno che rappresenta un'alternativa comune a WCF. gRPC è basato su HTTP/2, che offre numerosi vantaggi rispetto a WCF, tra cui:
Prestazioni: gRPC è molto più efficiente di WCF, soprattutto per le connessioni a esecuzione prolungata.
Scalabilità: gRPC è progettato per adattarsi a un numero elevato di client e server.
Sicurezza: gRPC supporta un'ampia gamma di meccanismi di sicurezza, tra cui TLS e autenticazione.
Multipiattaforma: gRPC è indipendente dalla piattaforma e può essere usato con un'ampia gamma di linguaggi di programmazione.
Per altre informazioni sullo sviluppo o la migrazione di app WCF a gRPC, vedere:
L'utilizzo degli standard WS in WCF consente di creare applicazioni orientate ai servizi. Per architettura orientata ai servizi (SOA, Service-oriented architecture) si intende un'architettura che si basa sui servizi Web per inviare e ricevere dati. I servizi sono in genere caratterizzati dal vantaggio di essere ad accoppiamento debole anziché hardcoded da un'applicazione a un'altra. Una relazione ad accoppiamento debole implica che un client creato in una qualsiasi piattaforma possa connettersi a un servizio qualsiasi a condizione che vengano soddisfatti i contratti essenziali.
Interoperabilità
In WCF vengono implementati i moderni standard del settore per l'interoperabilità dei servizi Web. Per altre informazioni sugli standard supportati, vedere Interoperabilità e integrazione.
Più modelli di messaggio
Per scambiare i messaggi, sono disponibili più modelli. Il modello più comune è di tipo request/reply, in base al quale un endpoint richiede i dati a un altro endpoint che invia la risposta. Sono disponibili altri tipi di modelli in cui ad esempio un singolo endpoint invia un messaggio unidirezionale senza attendere una risposta. Un modello più complesso è costituito da un modello di scambio duplex in base al quale due endpoint stabiliscono una connessione e inviano i dati dall'uno all'altro in modo analogo a un'applicazione di messaggistica immediata. Per altre informazioni su come implementare modelli di scambio di messaggi diversi usando WCF, vedere Contratti.
Metadati del servizio
In WCF è supportata la pubblicazione dei metadati del servizio tramite formati specificati in standard del settore, ad esempio WSDL, XML Schema e WS-Policy. Tali metadati possono essere utilizzati per generare e configurare in modo automatico client per accedere ai servizi WCF. I metadati possono inoltre essere pubblicati tramite protocolli HTTP e HTTPS oppure utilizzando lo standard WS-Metadata Exchange. Per altre informazioni, vedere Metadati.
Contratti dati
Poiché WCF è stato compilato utilizzando .NET Framework, include anche metodi intuitivi per fornire i contratti da applicare. Uno dei tipi di contratti più generali è il contratto dati. In pratica, quando si crea il codice del servizio in Visual C# o Visual Basic, il modo più semplice di gestire i dati è costituito dalla creazione di classi che rappresentano un'entità dati con proprietà che appartengono all'entità stessa. In WCF è incluso un sistema completo per utilizzare i dati in base a questa semplice modalità. Dopo che sono state create le classi che rappresentano i dati, il servizio genera automaticamente i metadati che consentono ai client di essere conformi ai tipi di dati progettati. Per altre informazioni, vedere Uso dei contratti di dati.
Sicurezza
È possibile crittografare i dati per proteggere la privacy nonché chiedere agli utenti di eseguire l'autenticazione prima che siano in grado di ricevere messaggi. La sicurezza può essere implementata utilizzando standard noti, ad esempio SSL o WS-SecureConversation. Per altre informazioni, vedere Sicurezza.
Più trasporti e codifiche
Per inviare i messaggi, è possibile utilizzare uno dei numerosi protocolli di trasporto e codifiche predefiniti. Il protocollo e la codifica più comuni prevedono l'invio di messaggi di testo SOAP codificati tramite il protocollo HTTP (HyperText Transfer Protocol) da utilizzare nel World Wide Web. In alternativa, WCF consente di inviare messaggi tramite TCP, named pipe o MSMQ. Tali messaggi possono essere codificati come testo oppure utilizzando un formato binario ottimizzato. I dati binari possono essere inviati in modo efficiente tramite lo standard MTOM. Se nessuna delle codifiche o nessuno dei trasporti forniti soddisfa le esigenze, è possibile creare una codifica o un trasporto personalizzato. Per altre informazioni sui trasporti e le codifiche supportate da WCF, vedere Trasporti.
Messaggi in coda e affidabili
In WCF è supportato lo scambio affidabile di messaggi grazie a sessioni sicure implementate tramite WS-Reliable Messaging e MSMQ. Per altre informazioni sul supporto della messaggistica in coda e affidabile in WCF, vedere Code e sessioni affidabili.
Messaggi durevoli
Per messaggio durevole si intende un messaggio che non viene mai perso a causa di un'interruzione della comunicazione. I messaggi presenti in un modello di questo tipo vengono sempre salvati in un database. Se si verifica un'interruzione, quando la connessione viene ripristinata è possibile riprendere lo scambio dei messaggi. È anche possibile creare un messaggio durevole usando Windows Workflow Foundation (WF). Per altre informazioni, vedere Servizi flusso di lavoro.
Transazioni
In WCF il supporto delle transazioni viene inoltre realizzato tramite uno dei tre modelli seguenti: WS-AtomicTransactions, le interfacce API nello spazio dei nomi System.Transactions e Microsoft Distributed Transaction Coordinator. Per altre informazioni sul supporto delle transazioni in WCF, vedere Transazioni.
Supporto AJAX e REST
REST è un esempio di una tecnologia Web 2.0 in evoluzione. WCF può essere configurato per elaborare dati XML "semplici" che non sono incapsulati in una SOAP envelope. È inoltre possibile estendere WCF per supportare formati XML specifici, ad esempio ATOM (uno standard RSS diffuso) e anche formati non XML, ad esempio JSON (JavaScript Object Notation).
Estendibilità
L'architettura di WCF dispone di un certo numero di punti di estensibilità. Se è necessaria ulteriore capacità, sono disponibili punti di ingresso che consentono di personalizzare il comportamento di un servizio. Per altre informazioni sui punti di estendibilità disponibili, vedere Estensione di WCF.
Integrazione di WCF con altre tecnologie
WCF è una piattaforma flessibile. Grazie a questa notevole flessibilità, WCF viene usato anche in diversi altri prodotti Microsoft. Dopo aver acquisito familiarità con i concetti fondamentali di WCF, è possibile sfruttarne la conoscenza per utilizzare uno di tali prodotti.
La prima tecnologia associata a WCF è stata Windows Workflow Foundation (WF). I flussi di lavoro semplificano lo sviluppo di applicazioni incapsulando i passaggi nel flusso di lavoro come "attività". Nella prima versione di Windows Workflow Foundation, lo sviluppatore doveva creare un host per il flusso di lavoro. La versione successiva di Windows Workflow Foundation è stata integrata con WCF. In questo modo era possibile ospitare qualsiasi flusso di lavoro in un servizio WCF. A tale scopo, scegliere automaticamente il tipo di progetto WF/WCF in Visual Studio 2012 o versione successiva.
WCF viene inoltre utilizzato in Microsoft BizTalk Server R2 come tecnologia di comunicazione. BizTalk è progettato per ricevere e trasformare i dati da un formato standardizzato in un altro. I messaggi devono essere recapitati nel MessageBox centrale di BizTalk in cui il messaggio può essere trasformato tramite un mapping rigoroso o tramite una delle funzionalità di BizTalk, ad esempio il motore del flusso di lavoro. A questo punto in BizTalk è possibile utilizzare l'adattatore line-of-business (LOB) di WCF per recapitare i messaggi al MessageBox.
Le funzionalità di hosting del server applicazioni Windows Server AppFabric sono progettate specificamente per la distribuzione e la gestione di applicazioni che usano WCF per la comunicazione. Le funzionalità di hosting includono strumenti e opzioni di configurazione potenti progettati in modo specifico per applicazioni abilitate all'utilizzo di WCF.
Le applicazioni di microservizi sono costituite da piccoli servizi rivolti ai clienti, scalabili e sottoposti al controllo delle versioni indipendentemente, che comunicano tra di essi tramite protocolli standard e interfacce ben definite. Ogni microservizio incapsula in genere una semplice logica di business, che puoi aumentare o ridurre. Puoi testare, distribuire e gestire il microservizio in modo indipendente. Team più piccoli sviluppano un microservizio sulla base di uno scenario del cliente e scelgono l