Perché sto rispondendo:
Ho impiegato molto tempo per capire la differenza tra queste due tecnologie. Metterò qui tutti quei punti che penso "Se avessi questi punti nel momento in cui mi chiedevo in giro alla ricerca di questa risposta, allora ho deciso molto prima di selezionare la mia tecnologia richiesta".
Fonte d'informazione:
Microsoft® Visual Studio® 2015 scatenato
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Perché ASP.NET Web API e WCF:
Prima di confrontare le tecnologie di ASP.NET Web API e WCF, è importante capire che in realtà esistono due stili / standard per la creazione di servizi Web: REST (Representational State Transfer) e SOAP / WSDL. SOAP / WSDL era lo standard originale su cui erano costruiti i servizi web. Tuttavia, era difficile da usare e aveva formati di messaggi ingombranti (come XML) che degradavano le prestazioni. I servizi basati su REST sono diventati rapidamente l'alternativa. Sono più facili da scrivere perché sfruttano i costrutti di base di HTTP (GET, POST, PUT, DELETE) e in genere utilizzano formati di messaggi più piccoli (come JSON). Di conseguenza, i servizi HTTP basati su REST sono ora lo standard per i servizi di scrittura destinati esclusivamente al Web.
Definiamo lo scopo dell'API Web ASP.NET
L'API Web ASP.NET è la tecnologia di Microsoft per lo sviluppo di servizi Web HTTP basati su REST. (Molto tempo fa ha sostituito ASMX di Microsoft, che era basato su SOAP / WSDL.) L'API Web semplifica la scrittura di servizi affidabili basati su protocolli HTTP che tutti i browser e dispositivi nativi comprendono. Ciò consente di creare servizi per supportare l'applicazione e chiamarli da altre applicazioni Web, tablet, telefoni cellulari, PC e console di gioco. La maggior parte delle applicazioni scritte oggi per sfruttare la sempre presente connessione Web utilizza i servizi HTTP in qualche modo.
Definiamo ora lo scopo di WCF:
Comunicare attraverso Internet non è sempre il mezzo più efficiente. Ad esempio, se sia il client che il servizio esistono sulla stessa tecnologia (o anche sulla stessa macchina), possono spesso negoziare un mezzo più efficiente per comunicare (come TCP / IP). Gli sviluppatori di servizi si sono trovati a fare le stesse scelte che stavano cercando di evitare. Ora dovrebbero scegliere tra la creazione di servizi interni efficienti e la possibilità di avere un ampio accesso trovato su Internet. E, se dovessero supportare entrambi, potrebbero dover creare più versioni del loro servizio o almeno proxy separati per accedere al loro servizio. Questo è il problema che Microsoft ha risolto con WCF .
Con WCF, puoi creare il tuo servizio senza preoccuparti dei confini. È quindi possibile lasciare che WCF si preoccupi dell'esecuzione del servizio nel modo più efficiente, a seconda del client chiamante. Per gestire questa attività, WCF utilizza il concetto di endpoint. Il servizio potrebbe avere più endpoint (configurato in fase di progettazione o dopo la distribuzione). Ogni endpoint indica come il servizio potrebbe supportare un client chiamante: sul Web, tramite remoto, tramite Accodamento messaggi Microsoft (MSMQ) e altro. WCF ti consente di concentrarti sulla creazione della tua funzionalità di servizio. Si preoccupa di come parlare in modo più efficiente con i clienti chiamanti. In questo modo, un singolo servizio WCF può supportare in modo efficiente molti tipi di client diversi.
Esempio di WCF:
Considera l'esempio:
I dati del cliente vengono condivisi tra le applicazioni. Ogni applicazione potrebbe essere scritta su una piattaforma diversa e potrebbe esistere in una posizione diversa. È possibile estrarre l'interfaccia del cliente in un servizio WCF che fornisce un accesso comune ai dati condivisi del cliente. Ciò centralizza i dati, riduce la duplicazione, elimina la sincronizzazione e semplifica la gestione. Inoltre, utilizzando WCF, è possibile configurare gli endpoint del servizio affinché funzionino in modo sensato per il client chiamante. La figura mostra l'esempio precedente con accesso centralizzato ai dati dei clienti in un servizio WCF.
Conclusione:
i) Quando scegliere l'API Web:
Non si può negare che i servizi HTTP basati su REST come quelli creati utilizzando l'API Web ASP.NET siano diventati lo standard per la creazione di servizi Web. Questi servizi offrono un approccio semplice e diretto per gli sviluppatori di servizi Web che creano servizi. Gli sviluppatori Web comprendono HTTP GET e POST e quindi si adattano bene a questi tipi di servizi. Pertanto, se stai scrivendo servizi strettamente mirati a HTTP , l'API Web ASP.NET è la scelta logica.
ii) Quando scegliere WCF:
La tecnologia WCF è utile quando è necessario supportare più endpoint di servizio basati su protocolli e formati di messaggio diversi. Prodotti come Microsoft BizTalk sfruttano WCF per la creazione di servizi affidabili che possono essere utilizzati anche sul Web tramite diverse configurazioni machine-to-machine. Tuttavia, è necessario scrivere un'applicazione che comunica su TCP / IP quando si è connessi al locale rete e funziona su HTTP quando fuori dalla rete, WCF è la tua risposta .
Attenzione:
Gli sviluppatori Web spesso vedono WCF come più difficili e complessi da sviluppare. Pertanto, se non si prevede la necessità di servizi multiprotocollo, è probabile che si verifichi l'API Web ASP.NET.