Share via


Informazioni su Windows Communication Foundation

L'accettazione a livello globale di servizi Web, inclusi protocolli standard per la comunicazione tra applicazioni, ha modificato lo sviluppo del software. Le funzioni che i servizi Web ora forniscono, includono protezione, coordinazione di transazioni distribuite e comunicazione affidabile. I vantaggi delle modifiche nei servizi Web devono riflettersi negli strumenti e nelle tecnologie utilizzate dagli sviluppatori. Windows Communication Foundation (WCF) è progettato per offrire un approccio gestibile per il calcolo distribuito, ampia interoperabilità e supporto diretto per l'orientamento dei servizi.

WCF semplifica lo sviluppo di applicazioni collegate tramite un nuovo modello di programmazione orientato ai servizi. WCF supporta molti stili di sviluppo delle applicazioni distribuite fornendo un'architettura a più livelli. Di base, l'architettura di canali WCF fornisce primitivi asincroni di passaggio di messaggi non tipizzati. Le funzionalità di protocollo create su questa base sono destinate allo scambio di dati protetto, affidabile e transazionale e per un'ampia scelta di opzioni di trasporto e di codifica.

Il modello di programmazione tipizzato, chiamato modello di servizi, è progettato per facilitare lo sviluppo di applicazioni distribuite e per offrire un'esperienza di sviluppo già familiare a sviluppatori esperti nell'ambito di servizi Web ASP.NET, di .NET Framework Remoting e di Enterprise Services e a coloro che si avvicinano a WCF. Il modello di servizi è dotato di funzionalità semplici di mapping dei concetti di servizi Web a quelli di Common Language Runtime (CLR) di .NET Framework, compreso il mapping flessibile ed estendibile di messaggi a implementazioni di servizi in linguaggi come Visual C# - o Visual Basic. Include funzionalità di serializzazione che consentono accoppiamento libero e controllo delle versioni e fornisce integrazione e interoperabilità con tecnologie di sistemi distribuiti .NET Framework esistenti come il sistema di Accodamento messaggi (MSMQ), COM+, servizi Web ASP.NET, Web Services Enhancements (WSE) e altre funzioni.

Esempio di problemi

Nell'esempio seguente vengono illustrati alcuni problemi risolvibili con WCF. Una società di autonoleggio decide di creare una nuova applicazione per la prenotazione di automobili. I creatori di questa applicazione sono consapevoli che la logica di business implementata deve essere accessibile ad altri software in esecuzione all'interno e all'esterno della società. Di conseguenza, decidono di crearla in un stile orientato ai servizi, con la logica dell'applicazione esposta ad altri software tramite un insieme ben definito di servizi. Per implementare questi servizi e comunicare quindi con altri software, la nuova applicazione utilizzerà WCF.

Scenario di autonoleggio

Probabilmente diverse altre applicazioni accederanno a questa applicazione, nel corso del suo ciclo di vita. Al momento della progettazione, tuttavia, gli architetti sono consapevoli che altri tre tipi di software avranno accesso alla logica di business, come illustrato nella figura precedente:

  • Un'applicazione client di servizio clienti in esecuzione sui desktop di Windows utilizzati dai dipendenti nel servizio clienti dell'organizzazione. Creata specificamente per il nuovo sistema di prenotazioni, questa applicazione verrà inoltre generata utilizzando Microsoft .NET Framework e WCF. Questa applicazione non è veramente distinta dalla nuova applicazione per la prenotazione di auto dell'autonoleggio, poiché il suo unico scopo è fungere da client per il nuovo sistema. Da un punto di vista orientato ai servizi, si tratta solo di un altro client per la logica di business del sistema di prenotazione.
  • Un'applicazione di prenotazione esistente creata in un server J2EE in esecuzione in un sistema non Windows. A causa di una recente fusione con un'altra società di autonoleggio, il sistema esistente deve essere in grado di accedere alla logica della nuova applicazione per fornire ai clienti delle società fuse un'esperienza unificata.
  • Le applicazioni dei partner in esecuzione in diverse piattaforme, ognuna posizionata all'interno di una società che ha un accordo commerciale con la società di autonoleggio. I partner potrebbero includere agenzie di viaggio, compagnie aeree e altre società che hanno la necessità di avvalersi di servizi di prenotazione auto.

I diversi requisiti di comunicazione per la nuova applicazione di prenotazione auto non sono semplici. Per le interazioni con l'applicazione client del servizio clienti, ad esempio, le prestazioni sono importanti mentre l'interoperabilità è semplice, poiché entrambe vengono create in .NET Framework. Per la comunicazione con l'applicazione di prenotazione esistente basata su J2EE e con le diverse applicazioni dei partner, tuttavia, l'interoperabilità diventa l'obiettivo principale. I requisiti di protezione sono inoltre piuttosto diversi, variando tra applicazioni locali basate su Windows, un'applicazione basata su J2EE in esecuzione in un altro sistema operativo e applicazioni dei partner di vario tipo provenienti da Internet. Anche i requisiti transazionali potrebbero variare, consentendo di effettuare richieste transazionali solo da applicazioni interne. Come possono essere soddisfatti questi diversi requisiti tecnici e aziendali senza esporre i creatori della nuova applicazione a una complessità ingestibile?

WCF è progettato per questo scenario diversificato ma realistico ed è la tecnologia predefinita per applicazioni Windows che espongono e accedono a servizi. In questo argomento viene fornita un'introduzione a WCF, vengono esaminate le funzionalità che offre e viene illustrato come utilizzarle. In questa introduzione lo scenario appena descritto servirà come esempio. L'obiettivo è quello di spiegare che cos'è WCF, illustrare i problemi che risolve e la procedura utilizzata per risolverli.

Soluzione di problematiche

La base per le nuove applicazioni basate su Windows è .NET Framework. Come conseguenza, WCF viene implementato principalmente come un insieme di classi sul CLR .NET Framework. Poiché estende il loro ambiente consueto, WCF consente agli sviluppatori che attualmente creano applicazioni orientate agli oggetti tramite .NET Framework di costruire con modalità conosciute applicazioni orientate ai servizi.

Comunicazione tra un client e un servizio WCF

Nella figura vengono illustrati un client e un servizio WCF. Questi ultimi interagiscono tramite SOAP, la rappresentazione del messaggio nativo di WCF, pertanto, anche se nella figura vengono illustrate entrambe le parti basate su WCF, questo non è necessario. WCF viene basato su .NET Framework 2.0.

Come suggerisce lo scenario descritto in precedenza, WCF risolve una gamma di problematiche per applicazioni in comunicazione. Gli aspetti più importanti di WCF sono tre:

  • Unificazione delle tecnologie di comunicazione .NET Framework esistenti.
  • Supporto per interoperabilità tra fornitori, inclusi affidabilità, protezione e transazioni.
  • Orientamento ai servizi esplicito.

Unificazione delle tecnologie di elaborazione distribuita Microsoft

In assenza di WCF, il team di sviluppo che implementa l'applicazione di autonoleggio dovrebbe scegliere la tecnologia distribuita corretta tra le numerose opzioni offerte da .NET Framework. A causa dei diversi requisiti di questa applicazione, tuttavia, nessuna tecnologia risponderebbe a tali esigenze. L'applicazione, invece, utilizzerebbe probabilmente le numerose tecnologie .NET Framework esistenti, ad esempio:

  • Servizi Web ASP.NET (ASMX). Opzione per la comunicazione con l'applicazione di prenotazione esistente basata su J2EE e con le applicazioni dei partner tramite Internet. Dato che i servizi Web di base sono attualmente supportati nella maggior parte delle piattaforme, questa era la modalità più diretta per raggiungere l'interoperabilità tra fornitori prima del rilascio di WCF.
  • .NET Framework Remoting. Opzione per la comunicazione con l'applicazione del servizio clienti, poiché entrambe sono basate su .NET Framework. .Net Remoting è progettato espressamente per la comunicazione .NET-to-.NET strettamente accoppiata, pertanto offre una possibilità di sviluppo semplice per applicazioni nella rete locale.
  • Enterprise Services. Utilizzato dall'applicazione di prenotazione per la gestione delle durate degli oggetti e per la definizione di transazioni distribuite. Queste funzioni potrebbero essere utili per la comunicazione e per l'integrazione con qualsiasi applicazione descritta in questo scenario, ma Enterprise Services supporta solo un insieme limitato di opzioni di comunicazione.
  • WSE. Potrebbe essere utilizzato insieme ad ASMX per la comunicazione con l'applicazione di prenotazione basata su J2EE e con le applicazioni dei partner. Poiché implementa contratti di servizi Web definiti più recentemente, complessivamente noti come specifiche WS-*, WSE consente una protezione dei servizi Web più flessibile, finché tutte le applicazioni coinvolte supportano versioni compatibili di queste nuove specifiche.
  • Sistema di Accodamento messaggi (MSMQ). Utilizzato per la comunicazione con applicazioni dei partner basate su Windows che richiedono il recapito dei dati garantito così come la separazione delle durate dell'applicazione e dei carichi di lavoro. La messaggistica durevole fornita dal sistema di Accodamento messaggi è in genere la migliore soluzione per applicazioni collegate in modo intermittente.

Basata su .NET Framework, l'applicazione di prenotazione auto deve utilizzare più di una di queste tecnologie di comunicazione per soddisfare i requisiti. Sebbene questo sia tecnicamente possibile, l'applicazione risultante sarebbe complessa da implementare e problematica da gestire.

Con WCF, la soluzione è molto più facile da implementare. Come illustrato nella figura, WCF può essere utilizzato per tutte le situazioni precedentemente descritte. Di conseguenza, l'applicazione di prenotazione auto può utilizzare quest'unica tecnologia per tutte le comunicazioni tra applicazioni. Di seguito viene illustrato come WCF sia in grado di risolvere ognuno di questi requisiti:

  • Poiché WCF può comunicare tramite servizi Web, l'interoperabilità con altre piattaforme che supportano anche SOAP, ad esempio i server dell'applicazione basati su J2EE, è semplice.
  • È inoltre possibile configurare ed estendere WCF per comunicare con servizi Web utilizzando messaggi non basati su SOAP, ad esempio formati XML semplici come RSS.
  • Le prestazioni costituiscono un problema di primaria importanza per la maggior parte delle aziende. WCF è sviluppato con l'obiettivo di essere una delle piattaforme di applicazioni distribuite più veloci sviluppate da Microsoft. Per un confronto dettagliato delle prestazioni tra WCF e altre tecnologie di comunicazione distribuite Microsoft .NET, vedere https://go.microsoft.com/fwlink/?LinkId=94274 (la pagina potrebbe essere in inglese).
  • Per consentire prestazioni ottimali quando entrambe le parti di una comunicazione sono basate su WCF, la codifica di trasmissione utilizzata in questo caso è una versione binaria ottimizzata di un insieme di informazioni XML. I messaggi restano conformi alla struttura dei dati di un messaggio SOAP, ma la loro codifica utilizza una rappresentazione binaria di quella struttura dei dati anziché il formato standard del tipo parentesi angolari e testo della codifica di testo di XML 1.0. L'utilizzo di questa opzione ha senso per la comunicazione con l'applicazione client di servizi clienti, poiché anch'essa è basata su WCF e le prestazioni costituiscono un aspetto importante.
  • La gestione della durata degli oggetti, la definizione di transazioni distribuite e altri aspetti di Enterprise Services vengono ora forniti da WCF. Sono disponibili per qualsiasi applicazione basata su WCF, il che significa che possono essere utilizzate dall'applicazione di prenotazione auto con qualsiasi applicazione con cui essa comunica.
  • Poiché supporta un vasto insieme di specifiche WS-*, WCF consente di fornire affidabilità, protezione e transazioni durante la comunicazione con qualsiasi piattaforma che supporti queste specifiche.
  • L'opzione WCF per la messaggistica in coda, creata nel sistema di Accodamento messaggi, consente alle applicazioni di utilizzare il sistema di accodamento permanente senza utilizzare un altro insieme di interfacce di programmazione per applicazioni.

Il risultato di questa unificazione comporta una maggiore funzionalità e una significativa riduzione della complessità.

Interoperabilità con applicazioni basate su altre tecnologie

Sebbene WCF introduca un nuovo ambiente di sviluppo per applicazioni distribuite, è progettato per interagire anche con applicazioni non WCF. Esistono due importanti aspetti da considerare per l'interoperabilità di WCF: l'interoperabilità con altre piattaforme e l'interoperabilità con tecnologie Microsoft precedenti a WCF. Nella sezione seguente vengono descritti entrambi questi aspetti.

Interoperabilità con altre piattaforme di servizi Web

Attualmente le aziende dispongono in genere di sistemi e applicazioni acquistati da più fornitori. Nell'applicazione di autonoleggio, ad esempio, è necessaria la comunicazione con altre applicazioni software scritte in vari linguaggi e in esecuzione in sistemi operativi diversi.

Poiché il meccanismo di comunicazione principale di WCF è costituito da servizi Web basati su SOAP, le applicazioni basate su WCF sono in grado di comunicare con altri software in esecuzione in un'ampia gamma di contesti. Un'applicazione creata in WCF può interagire con tutte le applicazioni seguenti:

  • Applicazioni basate su WCF in esecuzione in un processo diverso nello stesso computer Windows.
  • Applicazioni basate su WCF in esecuzione in un altro computer Windows.
  • Applicazioni basate su altre tecnologie, ad esempio server dell'applicazione J2EE che supportano servizi Web standard. Queste applicazioni possono essere in esecuzione in computer Windows o in computer che eseguono altri sistemi operativi.

Per consentire più che una semplice comunicazione di base, WCF implementa le tecnologie di servizi Web definite dalle specifiche WS-*. Tutte queste specifiche sono state definite originariamente dalla collaborazione tra Microsoft, IBM e altri fornitori. Non appena le specifiche diventano stabili, la proprietà spesso viene passata a enti di standardizzazione, ad esempio W3C (World Wide Web Consortium) o OASIS (Organization for the Advancement of Structured Information Standards). Le specifiche si occupano di diverse aree, incluse messaggistica di base, protezione, affidabilità, transazioni e funzionamento con metadati del servizio. Per ulteriori informazioni, vedere Interoperabilità e integrazione. Per ulteriori informazioni sulle specifiche avanzate dei servizi Web, vedere https://go.microsoft.com/fwlink/?LinkId=86603 (il contenuto potrebbe essere in inglese).

Raggruppate per funzione, queste specifiche includono:

  • Messaggistica: SOAP è la base per servizi Web e definisce una envelope di base che contiene sezioni intestazione e corpo. WS-Addressing definisce aggiunte all'intestazione SOAP per l'indirizzamento di messaggi SOAP e così consente a SOAP di non basarsi sul protocollo di trasporto sottostante, ad esempio HTTP, per trasferire informazioni di indirizzamento. MTOM (Message Transmission Optimization Mechanism) definisce un formato di trasmissione ottimizzato per messaggi SOAP con contenuto di dati binari di grandi dimensioni basati sulla specifica binaria XOP (XML Optimized Packaging).
  • Metadati: WSDL (Web Services Description Language) definisce un linguaggio standard per la specifica di servizi e di vari aspetti di utilizzo per questi servizi. WS-Policy consente la specifica di aspetti più dinamici del comportamento del servizio che non possono essere espressi in WSDL, ad esempio un'opzione di protezione preferita. WS-MetadataExchange consente a un client di richiedere direttamente informazioni descrittive su un servizio, ad esempio su WSDL e sui criteri, tramite SOAP.
  • Protezione: WS-Security, WS-SecureConversation, WS-Trust e WS-Federation definiscono aggiunte a messaggi SOAP per fornire autenticazione, integrità dei dati, riservatezza dei dati e altre funzionalità di protezione.
  • Affidabilità: WS-Reliable Messaging definisce aggiunte all'intestazione SOAP che consentono comunicazioni end-to-end affidabili anche nel caso in cui sia necessario attraversare uno o più intermediari di servizi Web.
  • Transazioni: basata su WS-Coordination, WS-Atomic Transaction consente di coordinare transazioni con commit a due fasi nel contesto di conversazioni di servizi Web.

L'applicazione di prenotazione auto utilizzerebbe probabilmente molte di queste tecnologie più avanzate. WS-Addressing, ad esempio, è essenziale ogni qualvolta SOAP viene utilizzato su un meccanismo di trasporto diverso da HTTP, come nel caso di comunicazione con l'applicazione client di servizi clienti basata su .NET Framework. WCF si basa su WS-Policy e WS-Metadata Exchange per determinare se anche il sistema, con il quale sta comunicando, sta utilizzando WCF e per altre cose. La comunicazione affidabile è essenziale per la maggior parte delle situazioni, pertanto è probabile che WS-Reliable Messaging sia utilizzato per interagire con molte delle altre applicazioni presenti in questo scenario. Analogamente, WS-Security e le specifiche relative potrebbero essere utilizzati per la protezione della comunicazione con una o più applicazioni, perché tutte richiederebbero un certo tipo di protezione contro accessi non autorizzati o contro modifiche e intercettazioni di messaggi. Per le applicazioni che richiedono l'integrazione di transazioni con il sistema di prenotazione auto, WS-Atomic Transaction sarebbe essenziale. Infine, MTOM potrebbe essere utilizzato ogni qualvolta sia necessario un formato wire ottimizzato per dati binari (ad esempio per le immagini della flotta) e se entrambi i lati della comunicazione supportano questa opzione.

Il punto importante consiste nel fatto che WCF implementa servizi Web interoperativi completi di protezione, affidabilità, transazioni e altri servizi tra piattaforme diverse. Per fornire la velocità effettiva massima, la comunicazione da WCF a WCF può essere ottimizzata in modo significativo. Tutte le altre comunicazioni utilizzano protocolli di servizi Web standard. Di fatto, è possibile che una singola applicazione esponga i propri servizi a entrambi i tipi di client.

Interoperabilità con tecnologie Microsoft

Molti clienti Microsoft hanno investito in modo significativo nelle tecnologie .NET Framework incluse in WCF. La protezione di questi investimenti è stata tenuta nella massima considerazione per la progettazione di WCF. L'installazione di WCF non interferisce con la tecnologia esistente, pertanto non c'è ragione per cui le organizzazioni debbano modificare le applicazioni esistenti. Viene fornito, tuttavia, un percorso di aggiornamento lineare. Ovunque possibile, inoltre, WCF interagisce con le tecnologie precedenti.

Sia WCF che ASMX, ad esempio, utilizzano SOAP, pertanto le applicazioni basate su WCF possono interagire direttamente con quelle create in ASMX. È possibile, inoltre, incapsulare con interfacce WCF le applicazioni di Enterprise Services esistenti, consentendo a queste ultime di interagire con applicazioni create in WCF. Poiché l'accodamento permanente in WCF si basa su MSMQ, le applicazioni basate su WCF possono interagire direttamente con le applicazioni non basate su WCF create utilizzando interfacce MSMQ native. Nell'applicazione di prenotazione auto, il software creato utilizzando una qualsiasi di queste tecnologie precedenti potrebbe connettersi direttamente e utilizzare i nuovi servizi di sistema basati su WCF.

L'interoperabilità non è, tuttavia, sempre possibile. Sebbene WSE 1.0 e WSE 2.0 implementino, ad esempio, alcune delle stesse specifiche WS-* implementate da WCF, queste tecnologie precedenti implementano versioni delle specifiche precedenti. La versione 3.0 di WSE consente l'interoperabilità con WCF, mentre le versioni precedenti non la consentono. Per ulteriori informazioni sull'interoperabilità, vedere Migrazione dei servizi Web WSE 3.0 a WCF.

Interoperabilità con altri protocolli XML

Non è possibile prevedere il futuro di Internet e le tecnologie attualmente utilizzate potrebbero evolversi o venire sostituite. Attualmente, una tendenza comune per quel che riguarda la creazione di applicazioni basate sul Web (comunemente chiamata "Web 2.0") è un modello di applicazione basato sulla comunicazione utilizzando solo formati XML semplici che non sono basati su SOAP, ma esclusivamente su HTTP, come nel caso di un trasporto e di un protocollo di applicazione. Lo stile di architettura REST (Representational State Transfer) non tiene conto, ad esempio, di operazioni definite dall'utente per il trattamento di dati. Lo stato dell'applicazione è associato, invece, ai metodi URL HTTP e HTTP (ad esempio PUT, POST, DELETE e GET). Questo approccio è in contrasto con la creazione di procedure o di funzioni definite dall'utente con le quali la maggior parte degli sviluppatori ha familiarità in un ambiente aziendale. L'approccio REST è, tuttavia, valido negli scenari dove i servizi devono funzionare come back-end di applicazioni Web 2.0.

REST è solo un esempio di una tecnologia Web 2.0 in evoluzione. In questo ambiente di modelli di programmazione sperimentali e di reinterpretazione e di messa a punto degli standard, è necessaria una certa flessibilità per affrontare modifiche impreviste. WCF è flessibile. Sebbene WCF utilizzi, ad esempio, SOAP come struttura sottostante, non è associato vincolato all'utilizzo di SOAP per la comunicazione in rete. Di fatto, 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). Questa flessibilità assicura che il codice scritto attualmente sia valido anche in futuro, anche se i protocolli verranno modificati o sostituiti. WCF è stato progettato, pertanto, sia per il presente che per il futuro.

Vedere anche

Riferimenti

System.ServiceModel

Concetti

Concetti fondamentali di Windows Communication Foundation
Architettura di Windows Communication Foundation
Guida alla documentazione

Altre risorse

Linee guida e procedure consigliate
Esercitazione introduttiva
Programmazione WCF di base
Windows Communication Foundation Samples